From 10fd7317b4068163fda0ea8ab21883e406ff4b13 Mon Sep 17 00:00:00 2001 From: blessdyb Date: Fri, 23 Oct 2026 20:15:25 -0700 Subject: [PATCH 1/3] Make Xcode Cloud project discoverable Co-Authored-By: Claude Code --- .github/workflows/ci.yml | 4 +- .gitignore | 15 +- CONTRIBUTING.md | 3 +- Flowlight.xcodeproj/project.pbxproj | 2688 +++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcschemes/Flowlight App Store.xcscheme | 89 + .../xcshareddata/xcschemes/Flowlight.xcscheme | 116 + README.md | 3 +- docs/404.html | 2 +- docs/DEVELOPMENT.md | 8 +- docs/about/index.html | 2 +- docs/de/about/index.html | 2 +- docs/de/docs/index.html | 4 +- docs/de/index.html | 6 +- docs/de/privacy/index.html | 2 +- docs/de/threat-model/index.html | 2 +- docs/docs/index.html | 4 +- docs/es/about/index.html | 2 +- docs/es/docs/index.html | 4 +- docs/es/index.html | 6 +- docs/es/privacy/index.html | 2 +- docs/es/threat-model/index.html | 2 +- docs/fr/about/index.html | 2 +- docs/fr/docs/index.html | 4 +- docs/fr/index.html | 6 +- docs/fr/privacy/index.html | 2 +- docs/fr/threat-model/index.html | 2 +- docs/index.html | 6 +- docs/it/about/index.html | 2 +- docs/it/docs/index.html | 4 +- docs/it/index.html | 6 +- docs/it/privacy/index.html | 2 +- docs/it/threat-model/index.html | 2 +- docs/ja/about/index.html | 2 +- docs/ja/docs/index.html | 4 +- docs/ja/index.html | 6 +- docs/ja/privacy/index.html | 2 +- docs/ja/threat-model/index.html | 2 +- docs/ko/about/index.html | 2 +- docs/ko/docs/index.html | 4 +- docs/ko/index.html | 6 +- docs/ko/privacy/index.html | 2 +- docs/ko/threat-model/index.html | 2 +- docs/llms-full.txt | 19 +- docs/llms.txt | 2 +- docs/plugins/index.html | 2 +- docs/privacy/index.html | 2 +- docs/pt-PT/about/index.html | 2 +- docs/pt-PT/docs/index.html | 4 +- docs/pt-PT/index.html | 6 +- docs/pt-PT/privacy/index.html | 2 +- docs/pt-PT/threat-model/index.html | 2 +- docs/releases/index.html | 19 +- docs/sitemap.xml | 2 +- docs/threat-model/index.html | 2 +- docs/zh-Hans/about/index.html | 2 +- docs/zh-Hans/docs/index.html | 4 +- docs/zh-Hans/index.html | 6 +- docs/zh-Hans/privacy/index.html | 2 +- docs/zh-Hans/threat-model/index.html | 2 +- docs/zh-Hant/about/index.html | 2 +- docs/zh-Hant/docs/index.html | 4 +- docs/zh-Hant/index.html | 6 +- docs/zh-Hant/privacy/index.html | 2 +- docs/zh-Hant/threat-model/index.html | 2 +- project.yml | 4 +- scripts/check_xcode_project.sh | 69 + scripts/normalize_xcode_project.py | 61 + site/pages/releases.html | 15 +- 69 files changed, 3188 insertions(+), 100 deletions(-) create mode 100644 Flowlight.xcodeproj/project.pbxproj create mode 100644 Flowlight.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Flowlight.xcodeproj/xcshareddata/xcschemes/Flowlight App Store.xcscheme create mode 100644 Flowlight.xcodeproj/xcshareddata/xcschemes/Flowlight.xcscheme create mode 100755 scripts/check_xcode_project.sh create mode 100755 scripts/normalize_xcode_project.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf49525e..52638cc3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -175,8 +175,8 @@ jobs: - name: Install XcodeGen run: brew install xcodegen - - name: Generate the project - run: xcodegen generate + - name: Generate the project and reject drift + run: scripts/check_xcode_project.sh # This compiles a different product graph and activation path from the Developer ID build. Ad-hoc signing # deliberately strips protected entitlements; archive signing validates those with the distribution profiles. diff --git a/.gitignore b/.gitignore index 1a290901..d7b8003a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,19 @@ xcuserdata/ *.pkg *.dmg -# Generated by XcodeGen (regenerate with `xcodegen generate`) -Flowlight.xcodeproj/ +# Generated by XcodeGen (regenerate with `xcodegen generate`). The shared project +# and schemes stay committed because Xcode Cloud must discover its selected +# container before any post-clone script can run. Local and Xcode-managed state +# remains ignored. +Flowlight.xcodeproj/* +!Flowlight.xcodeproj/project.pbxproj +!Flowlight.xcodeproj/project.xcworkspace/ +Flowlight.xcodeproj/project.xcworkspace/* +!Flowlight.xcodeproj/project.xcworkspace/contents.xcworkspacedata +!Flowlight.xcodeproj/xcshareddata/ +Flowlight.xcodeproj/xcshareddata/* +!Flowlight.xcodeproj/xcshareddata/xcschemes/ +!Flowlight.xcodeproj/xcshareddata/xcschemes/*.xcscheme # Signing material. Never commit any of this, however briefly it lives here. certs/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e16a8ac1..c7a95552 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,7 +6,8 @@ Thanks for helping make network activity on macOS understandable. ```sh brew install xcodegen -xcodegen generate +scripts/check_xcode_project.sh --write +scripts/check_xcode_project.sh scripts/build-local.sh open build/Build/Products/Release/Flowlight.app --args -FLDemo YES # synthetic data, safe for screenshots ``` diff --git a/Flowlight.xcodeproj/project.pbxproj b/Flowlight.xcodeproj/project.pbxproj new file mode 100644 index 00000000..8f5d4344 --- /dev/null +++ b/Flowlight.xcodeproj/project.pbxproj @@ -0,0 +1,2688 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXBuildFile section */ + 028E3BA5025E1089C1CA7CEB /* CodeSignatureCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 168D824382963305ED7E6C04 /* CodeSignatureCheck.swift */; }; + 03861BEFD76EF771618B928F /* TrafficModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6096AB6A3EF78490BE10DF50 /* TrafficModels.swift */; }; + 042EE0F6F95E5432AB027C65 /* InspectionBudgetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F07BDE0C2D8005899C1AF21C /* InspectionBudgetView.swift */; }; + 046D743441B8528AD853BF2D /* BluetoothMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9B6A48D086EF16CF6E438FF /* BluetoothMonitor.swift */; }; + 0500979C1F127E3E8BAC2C0F /* AgentCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5656604B2CFCBB61EFE050C /* AgentCatalog.swift */; }; + 0567566CCFA1B23855C3C0F1 /* ExportDisclosure.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2DEA93C3D6844E3345D2D8 /* ExportDisclosure.swift */; }; + 059D1C5ECA497BBF749BFA1F /* RulePackTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08C5F9CC0D644DCA03F5F4C5 /* RulePackTests.swift */; }; + 05D3F9927B8A2B6F4D3CC93C /* WindowVisibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = E45902808344F173033EB0F5 /* WindowVisibility.swift */; }; + 06806F580BC3A25E6C76B4DE /* HTTPDataTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C34C9D0A9B302B4CF4C7125 /* HTTPDataTransport.swift */; }; + 06A92144D13855A43F30221D /* DemoInspection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FFEA980768CD488D58CC0B1 /* DemoInspection.swift */; }; + 06C9D883620A08BF10DBF82A /* SystemExtensions.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81F190466C9691ADAF7BC8DA /* SystemExtensions.framework */; }; + 06D7DABCED6EF2ED5BD1B725 /* DatabaseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D6A2870B379B2C1C171C7A3 /* DatabaseTests.swift */; }; + 07B78C868D02BC6FB6FC561C /* AgentLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440DB80190A1847AC834210D /* AgentLauncher.swift */; }; + 094C8F94FD053B615836D494 /* MCPDomains.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6CCA395BF33CDF9F92B725 /* MCPDomains.swift */; }; + 0998D0711C9591F12AE30085 /* FeatureGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82D568056D9E6FACAC42D563 /* FeatureGuide.swift */; }; + 099CCC081C36710CCD4FFBD5 /* BPFProgram.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20CA8150CA012929A40558FB /* BPFProgram.swift */; }; + 09A86273E9179E24B619D829 /* InspectMenuItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = 406DB466CD32DA8223AE61A6 /* InspectMenuItems.swift */; }; + 09B577964D76B2CCADA2E3EF /* AgentsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082111849A66652DD9F1BE01 /* AgentsModel.swift */; }; + 09F9A2B71C1F7867CB04DDAC /* NetworkScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F383DF6343F2DB3052413C9 /* NetworkScope.swift */; }; + 0ACF3321E6670591EC9B1306 /* ProtocolClassifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C533BB77B419198656C6284 /* ProtocolClassifier.swift */; }; + 0B9096994698EFB06A95D26D /* ToolActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2E7474FB6A7B8B56B98917 /* ToolActivity.swift */; }; + 0BB12E96D54D92C8D24619B5 /* GlobMatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0872CE92A9A3D5A785ECC816 /* GlobMatch.swift */; }; + 0BC685F72E943E55AA0DFC1A /* RulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88962BAF6E215B83FE0AFF9A /* RulesView.swift */; }; + 0C0204670BD00994D9821D5F /* FocusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61080233ED162067497EE2E3 /* FocusView.swift */; }; + 0CDAAF2B3729A02854447210 /* AskChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14C234AF77E7451A1505DDF9 /* AskChart.swift */; }; + 0D37699776684FD04F8D9D07 /* ProtocolClassifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C533BB77B419198656C6284 /* ProtocolClassifier.swift */; }; + 0D622C67AB136A6F14708CA6 /* IPCServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC8A0C2D83843716604FD3F0 /* IPCServer.swift */; }; + 0D7D15BD7081161D53ED1578 /* InspectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15E51941A085C6B16AF395BB /* InspectionController.swift */; }; + 10776A2B276E82BD07243E07 /* DeviceModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD774DADE526BE4F507BE06C /* DeviceModels.swift */; }; + 118B4F7C72898BC0091B8F6A /* GlobMatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0872CE92A9A3D5A785ECC816 /* GlobMatch.swift */; }; + 1203A91F64B3D15431700D4F /* GuardrailEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15456E37F11CE5E19A124753 /* GuardrailEngine.swift */; }; + 120C7E644032F70B351DB87E /* AgentWorkspace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E79F3A686C0EC5D7B28E8C /* AgentWorkspace.swift */; }; + 124C56A74E24D77F75AA8D08 /* HTTPHostParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 228B5C4135EAD9D85F91ED0E /* HTTPHostParser.swift */; }; + 13299931E36F0173B3FCDC1B /* BlockEnforcer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BA6FB03454241CB84A9AA13 /* BlockEnforcer.swift */; }; + 1438E3A19D4B0225397E92F7 /* HostCanonicalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA83082A5085897BE34D963 /* HostCanonicalizer.swift */; }; + 145E54492C15FDD359B6DB08 /* InsightsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C0843B4BD70F8F83167F2D3 /* InsightsModel.swift */; }; + 149824D7E5DBBF87A16CFBDB /* TLSSNIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C4444B7A84352BE3672C41 /* TLSSNIParser.swift */; }; + 14ACBD3AE23905CA5DA965CB /* RulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88962BAF6E215B83FE0AFF9A /* RulesView.swift */; }; + 155D31587F84936506FDEBB2 /* ProcessNaming.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F3F458498856491A40E88C /* ProcessNaming.swift */; }; + 157717AA8B338201B7C3B4C7 /* FlowlightExtension.systemextension in Embed Dependencies */ = {isa = PBXBuildFile; fileRef = D1C046DCF0CB1227CA93DA24 /* FlowlightExtension.systemextension */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 18F94A8B0CE6DD3B1714C5DC /* DNSParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D61C3343882268C81871C9B /* DNSParser.swift */; }; + 1ADF39B07A56B2AFFC721C1B /* ExportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E01AEB9AB4F8723FFFA4BFB /* ExportTests.swift */; }; + 1C699CA261A1C0963BF36120 /* BoundedHTTPDataTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78D5C4691F1B4DFDDCC1A705 /* BoundedHTTPDataTransport.swift */; }; + 1C837EBCE2110C53FB85C886 /* AnomalySettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61F7D8D3D08054C7697792D /* AnomalySettings.swift */; }; + 1D11256FDE7183EBBED5D308 /* BoundedHTTPDataTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78D5C4691F1B4DFDDCC1A705 /* BoundedHTTPDataTransport.swift */; }; + 1D997A2137B9445F4D423737 /* ProcessNaming.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F3F458498856491A40E88C /* ProcessNaming.swift */; }; + 1E0AB61964E7FD024B5B4E71 /* AgentPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF99FCE4EBE61D20FFC1E2F1 /* AgentPolicy.swift */; }; + 1EC06D8718C4B684BEF492D4 /* Focus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CC957336FC5BD77D7A81651 /* Focus.swift */; }; + 1F1CF3F7D03FBB27616B2200 /* InspectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15E51941A085C6B16AF395BB /* InspectionController.swift */; }; + 1F8686DCB3451158B115A8FD /* AgentLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440DB80190A1847AC834210D /* AgentLauncher.swift */; }; + 2072AA79A8637D84267BE43F /* MCPDomainsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34AD2BFFA35727FB39287960 /* MCPDomainsTests.swift */; }; + 216BDAB2AB83A06B61EE6325 /* InstalledApps.swift in Sources */ = {isa = PBXBuildFile; fileRef = F67F3203B4BE2D664F3B1EC9 /* InstalledApps.swift */; }; + 21D7D0DF6C5DF97EB3D1EFD9 /* RulePackCatalogComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = E858E52F162361C6FD039F16 /* RulePackCatalogComposition.swift */; }; + 22B534F23EF9F05AE27A6D71 /* FeatureGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82D568056D9E6FACAC42D563 /* FeatureGuide.swift */; }; + 239189796A5B358CF23BFCF9 /* MockRulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8406C2280A8FF08E883A1E0 /* MockRulesView.swift */; }; + 23CC0B3EE557E6F247EC4100 /* RuleEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08643257F8D11784563BD6CC /* RuleEditor.swift */; }; + 24582219230DE364D6B2E2D1 /* BlockingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F529FE0E06B11298D8CD1E90 /* BlockingTests.swift */; }; + 2497E16386CDFE769EFB0EF6 /* RulePackEditorDraft.swift in Sources */ = {isa = PBXBuildFile; fileRef = 089476A21B8A6AE7F3F4A53A /* RulePackEditorDraft.swift */; }; + 2499CE8E13B7B57DDA281E39 /* AgentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC8F91DE12A1C58BB2BD7038 /* AgentTests.swift */; }; + 2504E2CFD3C6AFA86FDC86D3 /* InspectionBudget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AF0ACB7FCA10D7758DE177D /* InspectionBudget.swift */; }; + 255816A7B82038B2B9780E24 /* TrafficMonitorRulePackStartupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCA8D35E21C4BC1F15368DE3 /* TrafficMonitorRulePackStartupTests.swift */; }; + 2560A34A00122DEF53A1C407 /* ProcessResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F2F1F8536857610FB4C9854 /* ProcessResolver.swift */; }; + 268A7C1C22F1C06F7B6DA52C /* AnomalySettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61F7D8D3D08054C7697792D /* AnomalySettings.swift */; }; + 26C4AD2122DB5A299CA57CE6 /* RulePack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10036A17CDFCA45E068708EE /* RulePack.swift */; }; + 26D43E956CC67CECE784EF26 /* RulePackEventDelivery.swift in Sources */ = {isa = PBXBuildFile; fileRef = A15168A448857A6CC759F7BB /* RulePackEventDelivery.swift */; }; + 274EE87B6A63D7F18C0D0E1E /* DeviceModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD774DADE526BE4F507BE06C /* DeviceModels.swift */; }; + 27B5D51389021FC95AAB2530 /* MockGate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAC8A1658834152DBFBA4494 /* MockGate.swift */; }; + 27DC00A62F0BCEE6B1FC2B07 /* Focus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CC957336FC5BD77D7A81651 /* Focus.swift */; }; + 280B869A858715537934AC50 /* DNSParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D61C3343882268C81871C9B /* DNSParser.swift */; }; + 28A7A4AF29B86B1927DBF4D3 /* Guardrail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11A65C830B699BC4477CA879 /* Guardrail.swift */; }; + 290D1B10464B9915C1505610 /* RulePackEventDelivery.swift in Sources */ = {isa = PBXBuildFile; fileRef = A15168A448857A6CC759F7BB /* RulePackEventDelivery.swift */; }; + 2A1BCAACA256067CD96D1066 /* AppleSystemApps.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16976C5552006B1F9975A62 /* AppleSystemApps.swift */; }; + 2AE5BF2C6ADA89975EA76B83 /* AskQueryRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD71004CFB571B9167866770 /* AskQueryRunner.swift */; }; + 2AFEE6E1F9393DE9D219552F /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8ACA1ABA6B37B6457004C94A /* NetworkExtension.framework */; }; + 2B6D1084BEC5D8FD8C1340B8 /* RuleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EEA2706008C57CB75FB17CD /* RuleTests.swift */; }; + 2C879C6EA95A548B2BC9D9DB /* Guardrail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11A65C830B699BC4477CA879 /* Guardrail.swift */; }; + 2D10E8EE0B452C5746D2AF73 /* AgentCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5656604B2CFCBB61EFE050C /* AgentCatalog.swift */; }; + 2D89FAAC905437BEC596808B /* ProxyJanitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18286421CD591157CF1E1FD /* ProxyJanitor.swift */; }; + 2DADC58723CCECF67EAC1613 /* ExtensionRecovery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1218F146542CC01A417469F9 /* ExtensionRecovery.swift */; }; + 2E110029B0BE1C39A967E0CA /* CertificateAuthority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6652559787FD52622A19834A /* CertificateAuthority.swift */; }; + 2F2E867F1E599C48EC6DE525 /* RulePackTransfer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A30AC102A5B36107D8B6B31F /* RulePackTransfer.swift */; }; + 2F805A324684FF8CB7E0297B /* HostCanonicalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA83082A5085897BE34D963 /* HostCanonicalizer.swift */; }; + 2F80C3268E914A2041232706 /* TLSSNIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C4444B7A84352BE3672C41 /* TLSSNIParser.swift */; }; + 30733BCFC01E165EFF02EBA2 /* DestinationProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62A00EA0C0D8B7844E6F7B2 /* DestinationProfile.swift */; }; + 3144B2FBE6DEA543CA36D1CD /* LLMToolCalls.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFAEE09994253E82748BCCCB /* LLMToolCalls.swift */; }; + 315C5531C14F1DDE99043A18 /* DeviceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC1036E5ABBFDB8740405F3 /* DeviceStore.swift */; }; + 32FCEAF70EBFB57EA5579E96 /* Rule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BAF46D43D2171398478FC3 /* Rule.swift */; }; + 3570CB0F911ED4160DC8F4BD /* AppleSystemApps.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16976C5552006B1F9975A62 /* AppleSystemApps.swift */; }; + 35B3F93219A8854FFF1D3EEF /* OnDeviceAsk.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEDBAB278885D747B420AD3 /* OnDeviceAsk.swift */; }; + 3607E7DD7A3ABB2C73955832 /* ExtensionTrafficSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95761708CD76CABDF0696BCE /* ExtensionTrafficSource.swift */; }; + 361DD804991495DEEE15121C /* IPCProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A2DDEBC714CDCFDB919F35 /* IPCProtocol.swift */; }; + 362251769AB9DAC1BF063FD0 /* RuleTemplates.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD00CA1EF2A7DA909E3A31B5 /* RuleTemplates.swift */; }; + 3654D301BB54F59D172A1668 /* ProxyRelaunch.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAE5D54ABFD08CCFFE447 /* ProxyRelaunch.swift */; }; + 36F61F7BAE54F429B4C19D22 /* Motion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 992F80EF7B17CA25C7D83AC8 /* Motion.swift */; }; + 37BAEA33191AFCF7EED18540 /* BlockRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80BC5E16F824FC642C12C8B0 /* BlockRules.swift */; }; + 381C9AC13AAA9CC8D1DCD8FD /* CertificateAuthority.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6652559787FD52622A19834A /* CertificateAuthority.swift */; }; + 3860DCC8B5AF2121D11144DE /* InspectionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCCB2008E4820D1DE1DE154F /* InspectionRecorder.swift */; }; + 3900BC10AB6AE27C341962CE /* AskQueryRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD71004CFB571B9167866770 /* AskQueryRunner.swift */; }; + 3A12FB5ECC1D6C88CE759CFC /* AgentPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF99FCE4EBE61D20FFC1E2F1 /* AgentPolicy.swift */; }; + 3A195005D8A4580FADEC59A9 /* HTTPDataTransport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C34C9D0A9B302B4CF4C7125 /* HTTPDataTransport.swift */; }; + 3B1CF30E04CBAAD0EC92DC5B /* ExportModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF216452A0F90D9E90A6BD34 /* ExportModels.swift */; }; + 3BB8B3792AD8FFCDE2B0897A /* ToolResults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7703953570391821257DD /* ToolResults.swift */; }; + 3C257D9C841FEE3F373EA661 /* JSONValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D9926D17DD57B7F97E895C9 /* JSONValue.swift */; }; + 3C3AAF8E67A81B9447144BE2 /* BPFProgram.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20CA8150CA012929A40558FB /* BPFProgram.swift */; }; + 3DB4B694F1FBA50E559F7D9B /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33480D5241332B3AA21CBE49 /* Localization.swift */; }; + 3E265CB16F7C94A36ED3D11E /* NetworkChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59A21E183B79E3C66146070D /* NetworkChannel.swift */; }; + 3E591F9FC749BBE46FE5C100 /* RemoteAsk.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91657F4898EFEBCB551ADD4E /* RemoteAsk.swift */; }; + 3EB92870A15033FFE64CA6A4 /* FocusTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50FB4666B2D07DDE032C87EC /* FocusTests.swift */; }; + 3F09CA57A97AA100EAA0FC26 /* AppRestart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DA4611687EF2F8AADA58A49 /* AppRestart.swift */; }; + 3F90E760FD34949F451FBDF4 /* ExportDisclosure.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF2DEA93C3D6844E3345D2D8 /* ExportDisclosure.swift */; }; + 3FBACA5ECB1C08ED614FDDE7 /* LocalRiskViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 461E9D1F76A4F9505335AB87 /* LocalRiskViews.swift */; }; + 3FE68A4EC4BEA3A2B81D069E /* LiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4408358C5CC9516B4C1ABCB /* LiveView.swift */; }; + 41033D5CF2A9446276DADB97 /* AlertsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB04B24A750D5362449F8197 /* AlertsView.swift */; }; + 413D6E44997AA769C597FF23 /* RulePackCatalogTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59B40E5AD74F74A029AD46E4 /* RulePackCatalogTests.swift */; }; + 41750EE3E0461E85FC71FBAF /* VersionNameRepairTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F05A2DD30C79643247AF74C9 /* VersionNameRepairTests.swift */; }; + 41EEA62E4E2A0DDC2FA6C7AC /* ExportVisibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE2A4754CFE5FD187CAF66AD /* ExportVisibilityTests.swift */; }; + 42E39E8ADC51DA39DE0784AD /* Motion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 992F80EF7B17CA25C7D83AC8 /* Motion.swift */; }; + 42F74C2DB00410D8FB790B70 /* BuiltInRulePacks.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABD4C8B6E3620F5E46C69434 /* BuiltInRulePacks.swift */; }; + 4323C68638C74F3E8D02FA65 /* PluginPackageVerifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C96560CB05BDDBB136E34B /* PluginPackageVerifier.swift */; }; + 43329736A36E1C4367881E40 /* LocalRiskSettingsSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 662F0B94BED1CA47AD516AC9 /* LocalRiskSettingsSection.swift */; }; + 4453A6861DA4D5A8AE3CC793 /* AskChart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14C234AF77E7451A1505DDF9 /* AskChart.swift */; }; + 451AB2522DC0E73CF1301EE1 /* FlowlightApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3244269609CC161996866B5 /* FlowlightApp.swift */; }; + 45C6C2569D63744568474B91 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = F186517132592B36ED2B9F80 /* main.swift */; }; + 46A21D07D20963DBAC9169F6 /* index.html in Resources */ = {isa = PBXBuildFile; fileRef = 9EF395A2F3D6C97FF9EC53E4 /* index.html */; }; + 46E686B76B70B444AA375FBC /* RewriteRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFA3B4EB0E0D40E39CE24E1B /* RewriteRule.swift */; }; + 4767B9EBDCBFD6B3483079B2 /* NetworkScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F383DF6343F2DB3052413C9 /* NetworkScope.swift */; }; + 47F1C0E114B1AFD567C42792 /* ResponseGate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA9340FE2B6C417D1A19AF54 /* ResponseGate.swift */; }; + 48170BB139B744FAD6513959 /* Guardrail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11A65C830B699BC4477CA879 /* Guardrail.swift */; }; + 48330DCACD790F31E072D0B3 /* MCPAttribution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37FE9D6F8BA82F3C266E147A /* MCPAttribution.swift */; }; + 489DB4725FD189472CC078BE /* AgentPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B07796D1108F037FF196443 /* AgentPolicyTests.swift */; }; + 48CD1538B6B7899F0B8A83E8 /* official.json in Resources */ = {isa = PBXBuildFile; fileRef = ADDB360F7DA88D34505F4D8A /* official.json */; }; + 4947873A05817C02C14E461D /* CoverageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C69EEECAA62FC98DBC8CB2 /* CoverageView.swift */; }; + 498E9916E85245C7982E9110 /* LocalRiskAnalysisTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64FEF0DA4ACD3157DA6FA4B3 /* LocalRiskAnalysisTests.swift */; }; + 4A0EDDA9455A32B4A43F42FF /* AppleSystemApps.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16976C5552006B1F9975A62 /* AppleSystemApps.swift */; }; + 4B0B6CA666157D7B72A8F511 /* LocalRiskViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 461E9D1F76A4F9505335AB87 /* LocalRiskViews.swift */; }; + 4B7736E9D3BEAB93A4AA8B4E /* ToolResults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A7703953570391821257DD /* ToolResults.swift */; }; + 4BAEC22536747CFB9525934A /* ExportDisclosureSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA72D307E4B1A08BE4B8AEF8 /* ExportDisclosureSheet.swift */; }; + 4C028FF54CB024B6DAEA2DBA /* HTTPHostParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 228B5C4135EAD9D85F91ED0E /* HTTPHostParser.swift */; }; + 4D676BCFC2B27CB77015BDFA /* FocusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61080233ED162067497EE2E3 /* FocusView.swift */; }; + 4EF5727ADC37F80E20EF4327 /* TrafficMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC0A436E879000F8F5FF9E7 /* TrafficMonitor.swift */; }; + 4F732CB0B9C2FB627217CC17 /* RulePackCatalogUpdaterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8507D8801643823A18134BF8 /* RulePackCatalogUpdaterTests.swift */; }; + 4F929BE1C94FDF359E1B0F39 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8ACA1ABA6B37B6457004C94A /* NetworkExtension.framework */; }; + 50CD7EF8F4121F7DD1C65680 /* RewriteRulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44CCD94E9D554D6DD61486FF /* RewriteRulesView.swift */; }; + 51694FE8AB65C2BC3BD5B21D /* GuardrailsPane.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F08D1913575FFC1F548CAB5 /* GuardrailsPane.swift */; }; + 518B305308454622B576FF3B /* HostCanonicalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA83082A5085897BE34D963 /* HostCanonicalizer.swift */; }; + 52A067CD50920CBDEC98A32F /* Localization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33480D5241332B3AA21CBE49 /* Localization.swift */; }; + 55434CF888AEE73E90EDA953 /* UpdateVerificationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21FEECAD5C958CF49A659E14 /* UpdateVerificationTests.swift */; }; + 55FB36AE92AEF84914CCA6E8 /* RuleTemplateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 254FA06DF59A8410C9BAE161 /* RuleTemplateTests.swift */; }; + 56AE97B7A55B1A70250CAA57 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E49720B1B25DC9EBB2ABA0 /* Constants.swift */; }; + 574A061E9456AD6BD7E3AB5A /* RulePackCatalogUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 738E050AC8811051BF14E529 /* RulePackCatalogUpdater.swift */; }; + 57DADB20CBF7D6EF6F6B8167 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 77D58ED5F4678FC1C2A5634A /* Localizable.strings */; }; + 585CA811DBF12784CBF086EA /* AgentWorkspace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09E79F3A686C0EC5D7B28E8C /* AgentWorkspace.swift */; }; + 58EB211C6C5B91A0435C5E11 /* PluginScriptRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = E593C4ED11E1BCADD22099E6 /* PluginScriptRunner.swift */; }; + 593C3A02860F39DAC8019A1E /* VersionNamingRegressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED54978358DD9DE1E792A8B9 /* VersionNamingRegressionTests.swift */; }; + 597FCA0655D52D801C0542F4 /* RuleSimulationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B910FBB81CDAC17AE5ACCEA /* RuleSimulationView.swift */; }; + 59D83ED863E01486B578B923 /* ResponseGate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA9340FE2B6C417D1A19AF54 /* ResponseGate.swift */; }; + 5A2A8DF18D3C1FC584DAFBEB /* IPCProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A2DDEBC714CDCFDB919F35 /* IPCProtocol.swift */; }; + 5A3B1EB5936B67AD426A5967 /* NetworkChannelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADD9D2D024F76347C8414BD5 /* NetworkChannelTests.swift */; }; + 5A58E6A00FD4F35DA506B390 /* RuleStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97943E847A22CF491FA82084 /* RuleStore.swift */; }; + 5AA48BB88F9E0F6F858DC553 /* BluetoothMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9B6A48D086EF16CF6E438FF /* BluetoothMonitor.swift */; }; + 5B0715A36BAB76BC06AE4052 /* FlowTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C8267406A5D7DA536B7A713 /* FlowTracker.swift */; }; + 5D637AB4C3D308EAC8CC9448 /* RulePackDeliveryStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48B24C254E2C17056730C06B /* RulePackDeliveryStats.swift */; }; + 5E22345FC07C19F4A32C5002 /* RuleEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08643257F8D11784563BD6CC /* RuleEditor.swift */; }; + 5EC8847DF0E49875B602B9AA /* ExtensionRecoveryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2747CAE7AD41663488F0E2B9 /* ExtensionRecoveryTests.swift */; }; + 6034C069D97EE923799AC9B2 /* FlowlightStoreExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 9341EDA5AB3454E82FECD53A /* FlowlightStoreExtension.appex */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 603AE25B0614892F454FE15B /* RulePackCatalogState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC4ADEE1B3578FBC6DFD9B74 /* RulePackCatalogState.swift */; }; + 607A677F2CEE245D16249316 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8ACA1ABA6B37B6457004C94A /* NetworkExtension.framework */; }; + 61648ED4A0DBCEC775673448 /* ProtocolCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76792B4893790E9ACD4BFA8B /* ProtocolCatalog.swift */; }; + 623C50C16EB5A7DCA225F775 /* PluginEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0A1C1F3361CA62C0D08C168 /* PluginEngine.swift */; }; + 62885CD8C265122129AF78FF /* RulePackCatalogVerifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35EF76A8728F308E2D6973A /* RulePackCatalogVerifier.swift */; }; + 62ACF7BF40AB81E4CB9E4478 /* DNSParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D61C3343882268C81871C9B /* DNSParser.swift */; }; + 631C449B074FB7E31D887EFC /* PluginModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07F902D9D498F399BBDD85E0 /* PluginModels.swift */; }; + 63CBA5AACC00FC44C982ADAF /* AgentLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440DB80190A1847AC834210D /* AgentLauncher.swift */; }; + 643D3B8316459A2CEFBA261F /* NettopTrafficSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957EEA0C3C7342504E533506 /* NettopTrafficSource.swift */; }; + 64453A2D3AA57975F870BAE4 /* ExportDisclosureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCF7C56CAF72886BEB812F8F /* ExportDisclosureTests.swift */; }; + 6464CE699E3EE225BA57C0EF /* DemoInspection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FFEA980768CD488D58CC0B1 /* DemoInspection.swift */; }; + 64D1D0E76973447B888270C1 /* PluginEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0A1C1F3361CA62C0D08C168 /* PluginEngine.swift */; }; + 6514A22112924B2965D507DE /* OnDeviceRiskProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74F1DEAAAAAA607CEA5EC303 /* OnDeviceRiskProvider.swift */; }; + 653556BA776A6E7755D3DD53 /* ExportPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD3230056607B454EAC381D /* ExportPayload.swift */; }; + 654EE33CAE5B208F04985952 /* HTTPHostParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 228B5C4135EAD9D85F91ED0E /* HTTPHostParser.swift */; }; + 657B4D3A0DC9860BCAA78E25 /* ParserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15AF59D58B332F548630D949 /* ParserTests.swift */; }; + 65A926A0C3E7431E89CDC7FE /* AlertsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB04B24A750D5362449F8197 /* AlertsView.swift */; }; + 65C108E51ADCFAE65FE2C8AA /* WindowVisibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70965BF26E0B4B3F9719122B /* WindowVisibilityTests.swift */; }; + 65DE86F9DCCC5A1293FC29E2 /* SQLite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D9FCA36BD4A101EA1F02DFF /* SQLite.swift */; }; + 65F285392A51B100F8FD2BBA /* NetworkScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F383DF6343F2DB3052413C9 /* NetworkScope.swift */; }; + 65F6E16AC002847C032ECC48 /* ExportController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C6211A645D4DDF8526DF2 /* ExportController.swift */; }; + 66605C2D5AE7B9D23E83AF0E /* SystemExtensionScanTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2DD7D42B7798A6C57F8C49E /* SystemExtensionScanTests.swift */; }; + 668FFA90C24788C66043286B /* TrafficModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6096AB6A3EF78490BE10DF50 /* TrafficModels.swift */; }; + 6794B84FCA2A7991AD670BDA /* OnDeviceRiskProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74F1DEAAAAAA607CEA5EC303 /* OnDeviceRiskProvider.swift */; }; + 679B74263454FB76473F1006 /* CaptureWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61823557D86136986EEE4A18 /* CaptureWarning.swift */; }; + 67F5BAFB0D59F3692C418D0C /* RuleStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97943E847A22CF491FA82084 /* RuleStore.swift */; }; + 697ACED9A5F7CF5854461210 /* ResponseTransformTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ADADFFC230017F80D707ECE /* ResponseTransformTests.swift */; }; + 6BE9B797667820AD0E72D789 /* RemoteAsk.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91657F4898EFEBCB551ADD4E /* RemoteAsk.swift */; }; + 6C3AC854882827BEA6A2B9CB /* TLSSNIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C4444B7A84352BE3672C41 /* TLSSNIParser.swift */; }; + 6C42E5ECB1F31F42DDD421F7 /* RulePackCatalogState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC4ADEE1B3578FBC6DFD9B74 /* RulePackCatalogState.swift */; }; + 6FC332766A183D00E84656E3 /* Components.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C1CF4C48AA260D71155C022 /* Components.swift */; }; + 70584ACFC97B4A66381BDF95 /* AnomalyEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21A2E14BFE5E66664D0A604B /* AnomalyEngine.swift */; }; + 705BEA6B331562969B8FCD26 /* ResponseTransformRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB223BC3AD00430A5673C439 /* ResponseTransformRule.swift */; }; + 70B794AEAC36D7B581841A5D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 615E4FAE5D0865FB1E2492E8 /* Assets.xcassets */; }; + 70CD0A27AAF526B9BB07BBAE /* DevicesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FBA5700CA1489D6740FC8 /* DevicesView.swift */; }; + 7212BA0F348AC67423887CF5 /* DNSParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D61C3343882268C81871C9B /* DNSParser.swift */; }; + 72410A21824E39F8FF1854A3 /* RuleSimulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D8BAA4EB36D9B7D7BF56AD1 /* RuleSimulation.swift */; }; + 72FCD2D719346EDC2EE58A6E /* AskFeatureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94004173EC96619B41EDF49F /* AskFeatureTests.swift */; }; + 7340527787A47AEDF1FE5991 /* GuardrailStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9195A6149AE1C6628A3E184 /* GuardrailStore.swift */; }; + 739AA7451B3E61F2963C3237 /* RulePackEditorDraft.swift in Sources */ = {isa = PBXBuildFile; fileRef = 089476A21B8A6AE7F3F4A53A /* RulePackEditorDraft.swift */; }; + 742203151D5AF7CC2A2C1440 /* DesignTokens.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0C2E06D541DAEC1BC5F33 /* DesignTokens.swift */; }; + 7471DD6A1CB6304ECCFD0C3B /* InspectScopeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BC2D26D49B4E14A148BE9C6 /* InspectScopeTests.swift */; }; + 7726A81EF6802B2BC4606540 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E49720B1B25DC9EBB2ABA0 /* Constants.swift */; }; + 7732BE202B8D390C8A9A0DE0 /* LLMToolCalls.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFAEE09994253E82748BCCCB /* LLMToolCalls.swift */; }; + 77E90A284280B87F30A30487 /* ProtocolCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76792B4893790E9ACD4BFA8B /* ProtocolCatalog.swift */; }; + 780A2B3FCEDB696FC8FBD4AF /* Notifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D1D13FDE75AF5064805D258 /* Notifier.swift */; }; + 78D210201D9072B255C058B1 /* FlowlightApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3244269609CC161996866B5 /* FlowlightApp.swift */; }; + 78FD830C8350A22AD11723EC /* RulePacksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CC12B7176A61DD80F12043A /* RulePacksView.swift */; }; + 7A572D1F12B86CB4F91E72A0 /* NetworkExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8ACA1ABA6B37B6457004C94A /* NetworkExtension.framework */; }; + 7B995B6E769204525B48DDFB /* DemoData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594F3762D9AD6347C83BA710 /* DemoData.swift */; }; + 7BA8D2912D68E61C0523F3B6 /* AskEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7611E8788B3B6AF18F1CEDF7 /* AskEnvironment.swift */; }; + 7BE6EA58391841D37FB1117F /* TrafficTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2FA5540C38FA293E3EB457 /* TrafficTree.swift */; }; + 7C4D73113ECB44CDDAB40D58 /* official.json in Resources */ = {isa = PBXBuildFile; fileRef = ADDB360F7DA88D34505F4D8A /* official.json */; }; + 7C7D39AF8E2C36BE514BF10C /* GuardrailEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15456E37F11CE5E19A124753 /* GuardrailEngine.swift */; }; + 7D0431D1C2B4142A2A3B9A2D /* IPCProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A2DDEBC714CDCFDB919F35 /* IPCProtocol.swift */; }; + 7D613ABDA5085E4150738DA6 /* TrafficSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A370EA2BA551D5351835E6 /* TrafficSource.swift */; }; + 7E1481BA85DDCD19B4972B99 /* AppRestart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DA4611687EF2F8AADA58A49 /* AppRestart.swift */; }; + 7F2257D0029DC85A25033B9B /* PluginModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07F902D9D498F399BBDD85E0 /* PluginModels.swift */; }; + 7FBA685D695EA14B08E9F18A /* CaptureAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD4661C1ABB39E65894AE7F /* CaptureAccess.swift */; }; + 807AB517A5ED9EE6738FD707 /* AgentsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81434EE3C45929E8A768D42E /* AgentsView.swift */; }; + 80D7CBA2AE6B117ACC0BE7BB /* SettingsEnforcer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8251DBDC21C44CB92CC1C67 /* SettingsEnforcer.swift */; }; + 80FA6E238AC7FDEE36C05B5C /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92FDE4C87CC59491B70BF3F3 /* ContentView.swift */; }; + 81072D7510803E8189EA2671 /* JSONTreeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23CAA36BFFADC83D65DBF0FE /* JSONTreeView.swift */; }; + 813089B6205B28E82D260539 /* AgentCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5656604B2CFCBB61EFE050C /* AgentCatalog.swift */; }; + 8349898AD32AB76CB57C65D9 /* AskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AE1A6CC673544FCEC9E7F4 /* AskView.swift */; }; + 836D7B339C78B6FC98DD5AA8 /* RulePackTransfer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A30AC102A5B36107D8B6B31F /* RulePackTransfer.swift */; }; + 83B35B9C8D236EA11ED27A43 /* DemoData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 594F3762D9AD6347C83BA710 /* DemoData.swift */; }; + 83E9F19608C25B32DF8C52AB /* RulePackSimulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10E3B19A61C74DA87F74E4CA /* RulePackSimulation.swift */; }; + 846FECA436B94D952C489DEE /* SharedStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC02CB8000B00C4C0AD84E60 /* SharedStrings.swift */; }; + 84E8F07CBD455A23EE2DF978 /* ExportSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B82FFB06C5A1C98D5E4D7D1 /* ExportSettingsView.swift */; }; + 850653E102AF3CD2C3833524 /* ProcessNaming.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F3F458498856491A40E88C /* ProcessNaming.swift */; }; + 858D19CFF01AFC9E3FF8F364 /* AskProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D59A773537F63761107681A3 /* AskProvider.swift */; }; + 8658DBDD8DE41686E075C7B0 /* DestinationProfileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22C46B9250A6ADDFD915500B /* DestinationProfileTests.swift */; }; + 8753FD9223EF6AE4C892DB9A /* RewriteRuleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 694D30A62FAF11702B7EF605 /* RewriteRuleTests.swift */; }; + 875CEAD8A14432BD5E46F0DF /* AskController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67763C99431F26FE1D428EA2 /* AskController.swift */; }; + 87B80FD11BAC558198442507 /* TrafficModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6096AB6A3EF78490BE10DF50 /* TrafficModels.swift */; }; + 87E68C01975E4936B8D6A921 /* AskTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB78709D1E01638E63A484D3 /* AskTests.swift */; }; + 87F047938C7E5461658F8CE3 /* Coverage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC52100D779B101B1B2595F /* Coverage.swift */; }; + 88B1D1AFC30EEFB351A2D10F /* USBMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A903BAF9BBDCFEAEC2F023FF /* USBMonitor.swift */; }; + 897D75C0AEE76F10ADF0CD5C /* ResponseTransformRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB223BC3AD00430A5673C439 /* ResponseTransformRule.swift */; }; + 89B09C7F77A5D116433291C5 /* AgentsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082111849A66652DD9F1BE01 /* AgentsModel.swift */; }; + 89E518A6DD4F49D012E47AFE /* ActivityMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E872723F2D92AA78F7941259 /* ActivityMonitor.swift */; }; + 8A5E37FB8BB6623CEF21420D /* MockRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7FBB33595155CF835AF14D5 /* MockRule.swift */; }; + 8B41FBD2537503B964EC5C81 /* ToolActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2E7474FB6A7B8B56B98917 /* ToolActivity.swift */; }; + 8B74946210FB3616E1F4ACD1 /* SharedStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC02CB8000B00C4C0AD84E60 /* SharedStrings.swift */; }; + 8BD67221A510AAB93D73CC7D /* MockResponseTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E35905A6578A1204796962E /* MockResponseTests.swift */; }; + 8BE14301F6CA5DEF8209A4FC /* BehaviourPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB40E7DB142C886F94FE2448 /* BehaviourPanel.swift */; }; + 8D0ECCF27AEAA38CE6E939B0 /* FilterDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F212ADB3B37A2EF68A7CFB84 /* FilterDataProvider.swift */; }; + 8D0F2F917038A8C52AE9E271 /* UpdateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC0873969A030F170A6AA3F5 /* UpdateTests.swift */; }; + 8D660394CF2B20BC98E53675 /* UpdateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D210A86033CB79C792000CA2 /* UpdateView.swift */; }; + 8D8D47E8D81B928A8895178A /* ProtocolCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76792B4893790E9ACD4BFA8B /* ProtocolCatalog.swift */; }; + 8DAA531E3904A7B356FE2B77 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4849A413C60A9ABC4F9C16E /* SettingsView.swift */; }; + 8F7C96FA3DFC112A72976562 /* TrafficModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6096AB6A3EF78490BE10DF50 /* TrafficModels.swift */; }; + 8FDF38674C022B58C5E6068F /* RuleSimulationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAD9DD248FDC1D5D58EFC726 /* RuleSimulationTests.swift */; }; + 91433E64078D356DD3940C57 /* Rule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BAF46D43D2171398478FC3 /* Rule.swift */; }; + 9162E455E37916AAD651349B /* AgentPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF99FCE4EBE61D20FFC1E2F1 /* AgentPolicy.swift */; }; + 931D85D9291D5E557B69BD43 /* PluginSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02ACC341615D95ADA623BBEC /* PluginSettingsView.swift */; }; + 93937351BA21608974D54900 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 615E4FAE5D0865FB1E2492E8 /* Assets.xcassets */; }; + 939DB311C31E0F1B33583B8A /* SystemExtensionScan.swift in Sources */ = {isa = PBXBuildFile; fileRef = A617D9483BCC31A0F4200A90 /* SystemExtensionScan.swift */; }; + 93AC6FC795BBEAB3FCFA2C93 /* AskController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67763C99431F26FE1D428EA2 /* AskController.swift */; }; + 93AE87F6497373A647A92DD4 /* USBMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = A903BAF9BBDCFEAEC2F023FF /* USBMonitor.swift */; }; + 9524F078035F746A98A5BD1A /* GuardrailTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08A401B3A5D8ED9031EAAF03 /* GuardrailTests.swift */; }; + 953BF001428B13E4B3B04D4C /* AppNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0158F10AEABEF28A925E8C3 /* AppNavigation.swift */; }; + 969FC166DAA7623081DA7392 /* RulePackTransfer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A30AC102A5B36107D8B6B31F /* RulePackTransfer.swift */; }; + 9767A4CE180F4083B693CC19 /* AgentPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF99FCE4EBE61D20FFC1E2F1 /* AgentPolicy.swift */; }; + 97CE90F39AE2FC5B9E0AD84C /* Notifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D1D13FDE75AF5064805D258 /* Notifier.swift */; }; + 9814BB05A2FC8648EB62145C /* ResponseTransformRulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8F8FB5C78D8391B25733C9B /* ResponseTransformRulesView.swift */; }; + 9891F943C7CAD36651D24774 /* ProtocolClassifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C533BB77B419198656C6284 /* ProtocolClassifier.swift */; }; + 9A03509ED600BF1065FD2800 /* MCPDomains.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6CCA395BF33CDF9F92B725 /* MCPDomains.swift */; }; + 9B22FA903C576B32C9232523 /* DeviceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 638E7A9BEB644503868C49E9 /* DeviceTests.swift */; }; + 9BE0BB0A6D132461427E755B /* UpdateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D210A86033CB79C792000CA2 /* UpdateView.swift */; }; + 9D9CC413EDA13E69B872454F /* BlockRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80BC5E16F824FC642C12C8B0 /* BlockRules.swift */; }; + 9DA08B1BDE7F624176CB2AF2 /* FlowJudgementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CFC920FE55E719B46039E1F /* FlowJudgementTests.swift */; }; + 9DA5CB6639FF673FC53D033A /* ExportController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D2C6211A645D4DDF8526DF2 /* ExportController.swift */; }; + A108B205EE74FC1ADD45FD9E /* CoverageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C69EEECAA62FC98DBC8CB2 /* CoverageView.swift */; }; + A147D607E84B5B0B102C824A /* RulePack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10036A17CDFCA45E068708EE /* RulePack.swift */; }; + A1DE70B1FFF145A8057E85C4 /* UpdateInstaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 121FF2EBC93394E8EDCFF0BF /* UpdateInstaller.swift */; }; + A224249AD83D44E25C293EC3 /* HTTPStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8974956FEBD82934CA1EB5 /* HTTPStream.swift */; }; + A3417EC0EF2DD2A4D35CAAB5 /* ExportQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 719C08673D2446F21DAF9F54 /* ExportQueue.swift */; }; + A3FF156082D5E00D561A7099 /* InsightsPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FA151AA64480DAACC602123 /* InsightsPanel.swift */; }; + A48DC12BB97A0E5499A3D87D /* ExtensionTrafficSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95761708CD76CABDF0696BCE /* ExtensionTrafficSource.swift */; }; + A4CEEDBC97449B58C674CD4F /* ProcessLookup.swift in Sources */ = {isa = PBXBuildFile; fileRef = E489125D1DBF3EF98AEED4EB /* ProcessLookup.swift */; }; + A6B2B75108CE6233CD3EDF00 /* InsightsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C0843B4BD70F8F83167F2D3 /* InsightsModel.swift */; }; + A7369F9D640FCFDAC459E5F6 /* CaptureWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61823557D86136986EEE4A18 /* CaptureWarning.swift */; }; + A78C8671BF1CC788E969814C /* ExportPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD3230056607B454EAC381D /* ExportPayload.swift */; }; + A8347F99B5A1857DDF39D56F /* RulePackCatalogVerifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = C35EF76A8728F308E2D6973A /* RulePackCatalogVerifier.swift */; }; + A83BA0983BAC28C6E56B49BE /* MCPAttributionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02EE3A99F49A058BF061C147 /* MCPAttributionTests.swift */; }; + A8869D4F16D83EC7120D901E /* PluginStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = A55A095537DB24454B007D1B /* PluginStore.swift */; }; + A912218AF0A00A7FB4EE5221 /* InsightsPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FA151AA64480DAACC602123 /* InsightsPanel.swift */; }; + A9675AD6413CA1740A75CE8F /* JSONValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D9926D17DD57B7F97E895C9 /* JSONValue.swift */; }; + AC5E1A01FEBC6A4C9951353E /* RuleSimulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D8BAA4EB36D9B7D7BF56AD1 /* RuleSimulation.swift */; }; + ACC7529D79C19667761AEAD2 /* RulePackEventDeliveryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB0C0840C443F8AEDD254AE0 /* RulePackEventDeliveryTests.swift */; }; + AD57CBF846824C0BE9878BF1 /* LLMFacts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95765A2F0D026D17736C9D9D /* LLMFacts.swift */; }; + ADC857099AB3E324DEC334BC /* ProxyJanitorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45076E14820DDD4CFF352226 /* ProxyJanitorTests.swift */; }; + AF1BB39DC13C09CAC6253943 /* ProxyJanitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18286421CD591157CF1E1FD /* ProxyJanitor.swift */; }; + AF8A26B4F8FFA3C94F0D276E /* InspectionProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FD96902AACB4B557DEFFBCD /* InspectionProxy.swift */; }; + AF9E41AC8E40F018E642A73E /* MockRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7FBB33595155CF835AF14D5 /* MockRule.swift */; }; + B0140F7BF021D067E67BF817 /* GuardrailStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9195A6149AE1C6628A3E184 /* GuardrailStore.swift */; }; + B13CAA0E1DA5A274F3F4D849 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E49720B1B25DC9EBB2ABA0 /* Constants.swift */; }; + B141482792DF3953D575CFF9 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A12EC605B35B8042A369205 /* libsqlite3.tbd */; }; + B1DCF272AD61D6284A4D63BD /* RulePackDeliveryStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48B24C254E2C17056730C06B /* RulePackDeliveryStats.swift */; }; + B1E5CA21DA13E924DD50CB51 /* AgentAttributor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41B98E13F994F7E684F57C07 /* AgentAttributor.swift */; }; + B3D4CAEA3D9EB39E1B7BCBA7 /* TrafficMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC0A436E879000F8F5FF9E7 /* TrafficMonitor.swift */; }; + B40A4A6A12B15C206C69FE22 /* BodySearchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B95789E8FFF77D3182BADCF /* BodySearchTests.swift */; }; + B4A39C2F0D1B775D59ADC50C /* AskQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 415931FB0EB29261A56B90C7 /* AskQuery.swift */; }; + B4C83BAE6447273B72D237AB /* ProxyRelaunch.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7BDAE5D54ABFD08CCFFE447 /* ProxyRelaunch.swift */; }; + B5614834E9118B531713207A /* NetworkChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59A21E183B79E3C66146070D /* NetworkChannel.swift */; }; + B5A31798C953DDD61039E82D /* ExtensionRebootTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC63F61F2956394B88C762F4 /* ExtensionRebootTests.swift */; }; + B5E88F4AF351CB717C46B22E /* ResponseScriptRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61D6646248D4CDF3EB86A893 /* ResponseScriptRunner.swift */; }; + B5F94B9F6FC2B75A867FB2F8 /* official-rule-packs-v1-public.pem in Resources */ = {isa = PBXBuildFile; fileRef = 1F49F6CFAF06DFBB9416246D /* official-rule-packs-v1-public.pem */; }; + B766E7284317D94D160C1386 /* AppleSystemAppTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF28074238079D33EFB6B862 /* AppleSystemAppTests.swift */; }; + B7D99A1E19A198CB04FDDC73 /* NetworkChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59A21E183B79E3C66146070D /* NetworkChannel.swift */; }; + B80FC9A3A8F21AFFCF5149A9 /* IPOwnerLookup.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6B4B0B76D53D8089C95762F /* IPOwnerLookup.swift */; }; + B87A6542EDA6ACDB5B961EFA /* CoverageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBD012519AD3D674CC0D35FC /* CoverageTests.swift */; }; + B88D4DE798915EA469DF73B3 /* PacketSniffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F062E6D35F98D8EEF1EBE47C /* PacketSniffer.swift */; }; + B8AF34F3100E3ABF6190BE68 /* FilterDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F212ADB3B37A2EF68A7CFB84 /* FilterDataProvider.swift */; }; + B8B770675C09113D28BDF3F1 /* SettingsEnforcer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8251DBDC21C44CB92CC1C67 /* SettingsEnforcer.swift */; }; + BA072680D0A6AC1C40DB8608 /* Components.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C1CF4C48AA260D71155C022 /* Components.swift */; }; + BA5C8DE36B0484931B6652E0 /* ProcessLookup.swift in Sources */ = {isa = PBXBuildFile; fileRef = E489125D1DBF3EF98AEED4EB /* ProcessLookup.swift */; }; + BB4533F39F79A5D13D438C34 /* ExtensionRecovery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1218F146542CC01A417469F9 /* ExtensionRecovery.swift */; }; + BBCAB0EE0D040C8BF3E30556 /* TLSSNIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C4444B7A84352BE3672C41 /* TLSSNIParser.swift */; }; + BC092B149B32D158A62ADB8A /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C087727B358A400DCFD7E0E6 /* JavaScriptCore.framework */; }; + BC84D4873C2547F075562715 /* LocalRiskAnalysis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93E71941B27710D83594A6C5 /* LocalRiskAnalysis.swift */; }; + BD91747457B98A2408D1977D /* MockGate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAC8A1658834152DBFBA4494 /* MockGate.swift */; }; + BDF6030BBFAE6327B278A128 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E49720B1B25DC9EBB2ABA0 /* Constants.swift */; }; + BEC1503B1920AF74D38E2077 /* RulePackCatalogPersistenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB1C1786F72F8D0BC95B9BAC /* RulePackCatalogPersistenceTests.swift */; }; + BF013D373CC9FFFAD75B9C22 /* InspectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE93ABADFF46C961FCABAB8 /* InspectView.swift */; }; + BF89D9E22CBBA7B5ACBD491B /* GuardrailsPane.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F08D1913575FFC1F548CAB5 /* GuardrailsPane.swift */; }; + C030AD2D9C98160C80D356AD /* FlowTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C8267406A5D7DA536B7A713 /* FlowTracker.swift */; }; + C05C1729B55B00FC0AF1C20C /* AgentLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 440DB80190A1847AC834210D /* AgentLauncher.swift */; }; + C066C0BE0A8B0C621654095F /* LiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4408358C5CC9516B4C1ABCB /* LiveView.swift */; }; + C07CFCE9876D9F55F8BA9C25 /* FlowlightResponseScriptHelper in Embed Dependencies */ = {isa = PBXBuildFile; fileRef = BD0D85E63A3FEC65FE1FD068 /* FlowlightResponseScriptHelper */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + C094B24A112FF0FE00623E9F /* TrafficTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B2FA5540C38FA293E3EB457 /* TrafficTree.swift */; }; + C2587EAF39C9E71650F3B6FC /* EnrichmentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89C74F92FC42AE36F5D97F1F /* EnrichmentTests.swift */; }; + C35F10A4B87D29525A740DD5 /* AgentAttributor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41B98E13F994F7E684F57C07 /* AgentAttributor.swift */; }; + C456CD5C4C3C603419925D58 /* NetworkChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59A21E183B79E3C66146070D /* NetworkChannel.swift */; }; + C49DD542101E64D0EEBD05E4 /* ExportDisclosureSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA72D307E4B1A08BE4B8AEF8 /* ExportDisclosureSheet.swift */; }; + C4F66F4C8F679F53C70399D6 /* MCPAttribution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37FE9D6F8BA82F3C266E147A /* MCPAttribution.swift */; }; + C5077734C82AD352CC3EFA5C /* BlockRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80BC5E16F824FC642C12C8B0 /* BlockRules.swift */; }; + C513F5D1936E202D0D6ECEFD /* BuiltInRulePacks.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABD4C8B6E3620F5E46C69434 /* BuiltInRulePacks.swift */; }; + C558099602CDA3A231384EBD /* InstalledApps.swift in Sources */ = {isa = PBXBuildFile; fileRef = F67F3203B4BE2D664F3B1EC9 /* InstalledApps.swift */; }; + C57A3811A5DB984FC0F2549A /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 77D58ED5F4678FC1C2A5634A /* Localizable.strings */; }; + C5E82EFABFE12297251D924C /* BlockRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80BC5E16F824FC642C12C8B0 /* BlockRules.swift */; }; + C62FF7278DAD93AB68B2FFF1 /* WindowVisibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = E45902808344F173033EB0F5 /* WindowVisibility.swift */; }; + C646009EEAACFFED739EA0E9 /* InspectNavigationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E4E7F1E8B83D086AF0CB1B /* InspectNavigationTests.swift */; }; + C6B736C06DB70C19217FA5AE /* PluginStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = A55A095537DB24454B007D1B /* PluginStore.swift */; }; + C6E8C518995B36DB53128B05 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A12EC605B35B8042A369205 /* libsqlite3.tbd */; }; + C72889236AE51E71206B2F57 /* ExportQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 719C08673D2446F21DAF9F54 /* ExportQueue.swift */; }; + C7798BE6AE9C79EB8BA3576C /* AnomalyEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21A2E14BFE5E66664D0A604B /* AnomalyEngine.swift */; }; + C7B4D535CFF9FA9D0DE8D708 /* RulePacksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CC12B7176A61DD80F12043A /* RulePacksView.swift */; }; + C7FAFFB62ADB58699720440A /* ExportSecrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37AE72E8F916C18A468E968A /* ExportSecrets.swift */; }; + C85056033D72ECD693E4AE7A /* RulePackSimulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10E3B19A61C74DA87F74E4CA /* RulePackSimulation.swift */; }; + C9E61A29C4EA61E978DF7C1A /* ToolCallLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98FE7804F3D1F6A247F0C8DF /* ToolCallLinks.swift */; }; + C9F9F6FF27500A2CB5BE992B /* SQLite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D9FCA36BD4A101EA1F02DFF /* SQLite.swift */; }; + CA9FF629E45A3643774DDACD /* InspectionBudget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AF0ACB7FCA10D7758DE177D /* InspectionBudget.swift */; }; + CAE2EEC350E48F001B343DE1 /* ProtocolCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76792B4893790E9ACD4BFA8B /* ProtocolCatalog.swift */; }; + CAFBA60EFEF3BB7D4F8D38E9 /* Guardrail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11A65C830B699BC4477CA879 /* Guardrail.swift */; }; + CB731DCD258C0048C4FECDF2 /* MockRulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8406C2280A8FF08E883A1E0 /* MockRulesView.swift */; }; + CC282F84A0B0F97D5007F449 /* AskQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 415931FB0EB29261A56B90C7 /* AskQuery.swift */; }; + CD507B163DA11479FAFBF2A6 /* ExtensionSourceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B2EB4E838E550B396BDB883 /* ExtensionSourceTests.swift */; }; + CDFFBF64E8D14CAB558D87F7 /* CaptureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B9F2521A73E6E3264F557E6 /* CaptureView.swift */; }; + CE0458FD46CC7EF3A1379B53 /* ResponseTransformRulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8F8FB5C78D8391B25733C9B /* ResponseTransformRulesView.swift */; }; + CE1589D1A40B2EC1084C7A88 /* Rule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BAF46D43D2171398478FC3 /* Rule.swift */; }; + CF16C383C4E52E86951F7B17 /* RulePackStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02B5736850B28B462739C2CD /* RulePackStore.swift */; }; + CF2049DA978EB9588596556F /* RulePack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10036A17CDFCA45E068708EE /* RulePack.swift */; }; + CF8EE120DA5241445ECD1797 /* DeviceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC1036E5ABBFDB8740405F3 /* DeviceStore.swift */; }; + CF9E8E6FBFB1D1DBD7610DA1 /* ToolCallLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98FE7804F3D1F6A247F0C8DF /* ToolCallLinks.swift */; }; + D10DE307D1AD32A7D8173A41 /* HostCanonicalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA83082A5085897BE34D963 /* HostCanonicalizer.swift */; }; + D211B6AF0F0C9ABE3F5D1A57 /* LocalizationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C0F9AC24A75E20F3FA0B2BB /* LocalizationTests.swift */; }; + D30A985B88E65A6F89E9E7E7 /* UpdateChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C9C36E21D6DB161C80DF3F6 /* UpdateChecker.swift */; }; + D30F3B5A02E089EEADBDE98B /* ActivityMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E872723F2D92AA78F7941259 /* ActivityMonitor.swift */; }; + D3EB4913132CAEA7FA827B08 /* CaptureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B9F2521A73E6E3264F557E6 /* CaptureView.swift */; }; + D4B24A76368B295B8DE8EC0B /* RuleSimulationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B910FBB81CDAC17AE5ACCEA /* RuleSimulationView.swift */; }; + D57246BD18C4FBBCEA71F08A /* InsightsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2A5AC7D1719857AE8ED1CFA /* InsightsTests.swift */; }; + D58E19691840000472807F80 /* MCPDomainsSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1888DEE22E9C2FCFB5DC064 /* MCPDomainsSection.swift */; }; + D5C09E269CC11D38728B69FC /* GlobMatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0872CE92A9A3D5A785ECC816 /* GlobMatch.swift */; }; + D5D014F2811B94832DC6CC81 /* bpf-access.sh in Resources */ = {isa = PBXBuildFile; fileRef = 20C95610696E32B96E500E8F /* bpf-access.sh */; }; + D662DA2727A039F0137E0472 /* CaptureAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FD4661C1ABB39E65894AE7F /* CaptureAccess.swift */; }; + D688BB9313DA940E107D8237 /* NettopParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 497DF4817317CE033F2A83A2 /* NettopParser.swift */; }; + D690491C9CCCFFA1DE64ECE8 /* BoundedHTTPDataTransportTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810530D0FFDE61BE5CDB4CC2 /* BoundedHTTPDataTransportTests.swift */; }; + D698B39BD305EC2E4168B923 /* TrafficSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A370EA2BA551D5351835E6 /* TrafficSource.swift */; }; + D6DB988F5D1D2A3C2A5753E5 /* IPCProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A2DDEBC714CDCFDB919F35 /* IPCProtocol.swift */; }; + D73CBA15CD6E91DE465C0556 /* DesignTokens.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0C2E06D541DAEC1BC5F33 /* DesignTokens.swift */; }; + D77B6BB95661074A90B12EE7 /* NettopParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 497DF4817317CE033F2A83A2 /* NettopParser.swift */; }; + D9987CC20EB70831208A0430 /* OnDeviceAsk.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEDBAB278885D747B420AD3 /* OnDeviceAsk.swift */; }; + DB09CEC00A661AF26C37244E /* DestinationProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62A00EA0C0D8B7844E6F7B2 /* DestinationProfile.swift */; }; + DB969099AF17B4E0DBA3034C /* UpdateInstaller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 121FF2EBC93394E8EDCFF0BF /* UpdateInstaller.swift */; }; + DBC04B2A1B129C44A3D8A40D /* ProcessNaming.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F3F458498856491A40E88C /* ProcessNaming.swift */; }; + DC7F897C9C4E1E353F05E3A5 /* PluginSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02ACC341615D95ADA623BBEC /* PluginSettingsView.swift */; }; + DC86A6B4919CF1B6D72662FE /* InspectionBudgetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F07BDE0C2D8005899C1AF21C /* InspectionBudgetView.swift */; }; + DDC032E6272181F3E1B1BB4F /* ReportsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD98C0A49FC6C5521129087 /* ReportsView.swift */; }; + DDE2B0B0A807C428B9F78120 /* AgentCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5656604B2CFCBB61EFE050C /* AgentCatalog.swift */; }; + DE40C611330AC62B7A53B63C /* AgentsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81434EE3C45929E8A768D42E /* AgentsView.swift */; }; + DE472CC9E3475EF582BB706E /* DemoDataTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E83A96A61DE59D2731045A8C /* DemoDataTests.swift */; }; + DED507EF1A36E9B66FE4512E /* HTTPStream.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E8974956FEBD82934CA1EB5 /* HTTPStream.swift */; }; + DEDCFC43A3BBD2E91277302F /* PluginScriptRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = E593C4ED11E1BCADD22099E6 /* PluginScriptRunner.swift */; }; + DF8776D774DE087DBBFB257F /* TrafficDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94538A9E26BCD8960123C7E4 /* TrafficDatabase.swift */; }; + DFC721C64B216FEB81C55917 /* UpdateChecker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C9C36E21D6DB161C80DF3F6 /* UpdateChecker.swift */; }; + E00C03B4955BFBA626340B5C /* InspectMenuItems.swift in Sources */ = {isa = PBXBuildFile; fileRef = 406DB466CD32DA8223AE61A6 /* InspectMenuItems.swift */; }; + E09B5E0093DE7BABBC1561DA /* ExtensionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53217054F0EFD8EC322BC5B1 /* ExtensionManager.swift */; }; + E0C3CC3AA91B74C0D98ACE5F /* RulePackSimulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10E3B19A61C74DA87F74E4CA /* RulePackSimulation.swift */; }; + E12E137A657C739019D6F4D3 /* RewriteRule.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFA3B4EB0E0D40E39CE24E1B /* RewriteRule.swift */; }; + E15272D4731FBF6CB1126495 /* JSONTreeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23CAA36BFFADC83D65DBF0FE /* JSONTreeView.swift */; }; + E16E772F86A6469231B18EB2 /* RulePackCatalogUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 738E050AC8811051BF14E529 /* RulePackCatalogUpdater.swift */; }; + E25A53EA4362FCC71BCE5A80 /* ExportModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF216452A0F90D9E90A6BD34 /* ExportModels.swift */; }; + E384EA8E1EEBA1689E638B8C /* official-rule-packs-v1-public.pem in Resources */ = {isa = PBXBuildFile; fileRef = 1F49F6CFAF06DFBB9416246D /* official-rule-packs-v1-public.pem */; }; + E3C7DC93B1AC66ECA40B7820 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92FDE4C87CC59491B70BF3F3 /* ContentView.swift */; }; + E3F2CFD47F40B6A9481C5777 /* PluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22D460484C8D6DFA5D495132 /* PluginTests.swift */; }; + E4D30933B930F00B7CAADE20 /* MCPDomainsSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1888DEE22E9C2FCFB5DC064 /* MCPDomainsSection.swift */; }; + E592D3A1D73A580676FA5696 /* InspectView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE93ABADFF46C961FCABAB8 /* InspectView.swift */; }; + E5973D84F73F277220538694 /* RulePackCatalogComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = E858E52F162361C6FD039F16 /* RulePackCatalogComposition.swift */; }; + E62BAD317B20BE6E16A21FA3 /* IPCServer.txt in Resources */ = {isa = PBXBuildFile; fileRef = 76B6293D3AAFF511F855C4E6 /* IPCServer.txt */; }; + E69786240DE2CC058F7A307A /* ResponseScriptRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61D6646248D4CDF3EB86A893 /* ResponseScriptRunner.swift */; }; + E6B53114FFB3F672BA02FE69 /* LLMFacts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95765A2F0D026D17736C9D9D /* LLMFacts.swift */; }; + E6D43A9CA39D3D205D2FD8EC /* TrafficTreePagingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 158356080B1479D37407B9F7 /* TrafficTreePagingTests.swift */; }; + E7F844DADB9BBF4F5A2024B6 /* InspectionProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FD96902AACB4B557DEFFBCD /* InspectionProxy.swift */; }; + E844FB53C6EA5C8BF5F37849 /* NettopTrafficSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 957EEA0C3C7342504E533506 /* NettopTrafficSource.swift */; }; + E88DD26D7D2E9C0E0FBACD6F /* ProtocolClassifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C533BB77B419198656C6284 /* ProtocolClassifier.swift */; }; + E8F73E4CF1E8701968CB2E96 /* AppLifecycleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D73C529EED550F2BD81CB72 /* AppLifecycleTests.swift */; }; + EA2D23AFA530F762A6901E08 /* AgentWorkspaceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B484EC45F6D3CF2D66D12BE0 /* AgentWorkspaceTests.swift */; }; + EA679C463EB3158EA7195052 /* Coverage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EC52100D779B101B1B2595F /* Coverage.swift */; }; + EA73DD364261DB7A3860FCF1 /* AppleSystemApps.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16976C5552006B1F9975A62 /* AppleSystemApps.swift */; }; + EAA7D632ABC5F2450CDDB68E /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CB82D0B63E8C783DD0A4FB5 /* main.swift */; }; + EB842377A7936B0BC9AAEC71 /* BehaviourPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB40E7DB142C886F94FE2448 /* BehaviourPanel.swift */; }; + ECE292CA7FBB8A6CE372B4F5 /* RulePackTransfer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A30AC102A5B36107D8B6B31F /* RulePackTransfer.swift */; }; + ED1CF3BBC1C4D317658D07A0 /* ProxyRelaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13D29667127E5DE57908D936 /* ProxyRelaunchTests.swift */; }; + ED2148A66082B969315461CA /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = F186517132592B36ED2B9F80 /* main.swift */; }; + EDAB8186A2117A6EE711A8B9 /* RulePackStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02B5736850B28B462739C2CD /* RulePackStore.swift */; }; + EDB017EC114FFAF18CEC2786 /* PacketSniffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F062E6D35F98D8EEF1EBE47C /* PacketSniffer.swift */; }; + EDEAECD3FA4B513114C0B581 /* CodeSignatureCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 168D824382963305ED7E6C04 /* CodeSignatureCheck.swift */; }; + EE32964EF451CD9211A37D6A /* ProcessResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F2F1F8536857610FB4C9854 /* ProcessResolver.swift */; }; + EEA0FEAC3D3CA9C73393EF3E /* AskEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7611E8788B3B6AF18F1CEDF7 /* AskEnvironment.swift */; }; + EF0EBBEAC6177681CBD4F0D7 /* GlobMatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0872CE92A9A3D5A785ECC816 /* GlobMatch.swift */; }; + EF23A175A11656427632BE45 /* AskProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D59A773537F63761107681A3 /* AskProvider.swift */; }; + EF4CBFD483B59B62F3432F3E /* NetworkScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F383DF6343F2DB3052413C9 /* NetworkScope.swift */; }; + EF8276E6A9A832CB5D74AFE3 /* ExportSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B82FFB06C5A1C98D5E4D7D1 /* ExportSettingsView.swift */; }; + EF884A8D586CA5022C4DD01B /* SystemExtensionScan.swift in Sources */ = {isa = PBXBuildFile; fileRef = A617D9483BCC31A0F4200A90 /* SystemExtensionScan.swift */; }; + EFBA053570FE24748547DDB2 /* TrafficDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94538A9E26BCD8960123C7E4 /* TrafficDatabase.swift */; }; + F130AF6A964F77EF85EBB32D /* RuleTemplates.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD00CA1EF2A7DA909E3A31B5 /* RuleTemplates.swift */; }; + F1ACC6A35E482FC31C0EA0B1 /* InstalledAppsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D752E3A8C7633C8BC939BE /* InstalledAppsTests.swift */; }; + F205410D7C07CB367224D44F /* ExportSecrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37AE72E8F916C18A468E968A /* ExportSecrets.swift */; }; + F2304F128BB915C60307AD44 /* BlockEnforcer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BA6FB03454241CB84A9AA13 /* BlockEnforcer.swift */; }; + F26718FE423FEE15B5502B8A /* Rule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BAF46D43D2171398478FC3 /* Rule.swift */; }; + F454E718DC7E6F7BDA3ECA61 /* RuleSimulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D8BAA4EB36D9B7D7BF56AD1 /* RuleSimulation.swift */; }; + F47E13AFAFF872BB15EA4E59 /* AskView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41AE1A6CC673544FCEC9E7F4 /* AskView.swift */; }; + F5AE32D382E6DDD1B06783B8 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4849A413C60A9ABC4F9C16E /* SettingsView.swift */; }; + F5F925E03C86F8B023DC788D /* ExtensionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53217054F0EFD8EC322BC5B1 /* ExtensionManager.swift */; }; + F75EB274ED11E8E4225746B2 /* ReportsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCD98C0A49FC6C5521129087 /* ReportsView.swift */; }; + F782A1187A8564DA1C37EDC1 /* DevicesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F2FBA5700CA1489D6740FC8 /* DevicesView.swift */; }; + F7D8E5F618EF5B76959097BF /* InspectionBudgetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E4DFA9032765BBB7E75706F /* InspectionBudgetTests.swift */; }; + F842F0968BAFF7623B4A86BE /* RulePack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10036A17CDFCA45E068708EE /* RulePack.swift */; }; + F8E48AAE0CDB4DD16025AAEE /* IPOwnerLookup.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6B4B0B76D53D8089C95762F /* IPOwnerLookup.swift */; }; + F9429DCDFAEE199D6635BA33 /* LocalRiskAnalysis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93E71941B27710D83594A6C5 /* LocalRiskAnalysis.swift */; }; + FACBCE71B0804DB4187D132B /* AnswerTextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15380DABDCB2492A132A90E4 /* AnswerTextTests.swift */; }; + FB53CA12F4EA8442D4E773E4 /* IPCServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC8A0C2D83843716604FD3F0 /* IPCServer.swift */; }; + FBE542C1BDCE771392543BD1 /* AppNavigation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0158F10AEABEF28A925E8C3 /* AppNavigation.swift */; }; + FC820F255E16C392B007726B /* RuleSimulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D8BAA4EB36D9B7D7BF56AD1 /* RuleSimulation.swift */; }; + FCD81B854E4C12AA3BE84A4D /* SettingsEnforcerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E1E1E6E8B1C2130BD563759 /* SettingsEnforcerTests.swift */; }; + FD08E709481530B77F4ED795 /* HelpTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 351C523438EA0A811504B57C /* HelpTests.swift */; }; + FE234FA5F34AAB7B7074BDB9 /* InspectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70F169CF4776BE3FAF69AE73 /* InspectionTests.swift */; }; + FE3B0FCAFA812B5CEA810488 /* InspectionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCCB2008E4820D1DE1DE154F /* InspectionRecorder.swift */; }; + FECA6CBE50938E777E17D87D /* HTTPHostParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 228B5C4135EAD9D85F91ED0E /* HTTPHostParser.swift */; }; + FEE9F18D463C7060E835F757 /* RulePackSimulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10E3B19A61C74DA87F74E4CA /* RulePackSimulation.swift */; }; + FF3F2EE3FE29F6827D527B31 /* AgentLauncherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD30777A046F705110A99269 /* AgentLauncherTests.swift */; }; + FF4E47F54DE6A3BCFFEBAA01 /* LocalRiskSettingsSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 662F0B94BED1CA47AD516AC9 /* LocalRiskSettingsSection.swift */; }; + FF4E8EC8F36613C1C03549AE /* PluginPackageVerifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C96560CB05BDDBB136E34B /* PluginPackageVerifier.swift */; }; + FF59AD47E15AFE192913C918 /* RewriteRulesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44CCD94E9D554D6DD61486FF /* RewriteRulesView.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7C42FA3A564662B5DB0FD5BF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 27052BCDFA1783A148CD45FD /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1C9BF0C33D1912981FB4B5AD; + remoteInfo = Flowlight; + }; + 8E69049BBCF586A050AA927F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 27052BCDFA1783A148CD45FD /* Project object */; + proxyType = 1; + remoteGlobalIDString = 36B21D467163CD9F57115778; + remoteInfo = FlowlightResponseScriptHelper; + }; + 8F920FDBFA157B736CCD7ECE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 27052BCDFA1783A148CD45FD /* Project object */; + proxyType = 1; + remoteGlobalIDString = 94D00543044D9B601CDCA877; + remoteInfo = FlowlightExtension; + }; + A212C96A4D9348FC9F87A9EA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 27052BCDFA1783A148CD45FD /* Project object */; + proxyType = 1; + remoteGlobalIDString = 904DAC0BB81071A09FF1A5B0; + remoteInfo = FlowlightStoreExtension; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 32FF3A971C555C5CD158F63B /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 6034C069D97EE923799AC9B2 /* FlowlightStoreExtension.appex in Embed Foundation Extensions */, + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; + 645C1B96C25EC035E5415BD4 /* Embed Dependencies */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ../Library/Helpers; + dstSubfolderSpec = 6; + files = ( + C07CFCE9876D9F55F8BA9C25 /* FlowlightResponseScriptHelper in Embed Dependencies */, + ); + name = "Embed Dependencies"; + runOnlyForDeploymentPostprocessing = 0; + }; + BD32BB41996D3CEEDBC8D17E /* Embed Dependencies */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ../Library/SystemExtensions; + dstSubfolderSpec = 13; + files = ( + 157717AA8B338201B7C3B4C7 /* FlowlightExtension.systemextension in Embed Dependencies */, + ); + name = "Embed Dependencies"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 02ACC341615D95ADA623BBEC /* PluginSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginSettingsView.swift; sourceTree = ""; }; + 02B5736850B28B462739C2CD /* RulePackStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackStore.swift; sourceTree = ""; }; + 02EE3A99F49A058BF061C147 /* MCPAttributionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCPAttributionTests.swift; sourceTree = ""; }; + 0599916780428125A134B249 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + 06816A9441C5EFEF5EF55CA5 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 077EA8EE506D61EC90E4411E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; + 07F902D9D498F399BBDD85E0 /* PluginModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginModels.swift; sourceTree = ""; }; + 082111849A66652DD9F1BE01 /* AgentsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentsModel.swift; sourceTree = ""; }; + 08643257F8D11784563BD6CC /* RuleEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleEditor.swift; sourceTree = ""; }; + 0872CE92A9A3D5A785ECC816 /* GlobMatch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobMatch.swift; sourceTree = ""; }; + 089476A21B8A6AE7F3F4A53A /* RulePackEditorDraft.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackEditorDraft.swift; sourceTree = ""; }; + 08A401B3A5D8ED9031EAAF03 /* GuardrailTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuardrailTests.swift; sourceTree = ""; }; + 08C5F9CC0D644DCA03F5F4C5 /* RulePackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackTests.swift; sourceTree = ""; }; + 09E79F3A686C0EC5D7B28E8C /* AgentWorkspace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentWorkspace.swift; sourceTree = ""; }; + 0A12EC605B35B8042A369205 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; + 0ADADFFC230017F80D707ECE /* ResponseTransformTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseTransformTests.swift; sourceTree = ""; }; + 0CBBF571DC526F85E7232F79 /* FlowlightTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FlowlightTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 0F2F1F8536857610FB4C9854 /* ProcessResolver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessResolver.swift; sourceTree = ""; }; + 10036A17CDFCA45E068708EE /* RulePack.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePack.swift; sourceTree = ""; }; + 10E3B19A61C74DA87F74E4CA /* RulePackSimulation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackSimulation.swift; sourceTree = ""; }; + 11A65C830B699BC4477CA879 /* Guardrail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Guardrail.swift; sourceTree = ""; }; + 1218F146542CC01A417469F9 /* ExtensionRecovery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionRecovery.swift; sourceTree = ""; }; + 121FF2EBC93394E8EDCFF0BF /* UpdateInstaller.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateInstaller.swift; sourceTree = ""; }; + 13D29667127E5DE57908D936 /* ProxyRelaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyRelaunchTests.swift; sourceTree = ""; }; + 14C234AF77E7451A1505DDF9 /* AskChart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskChart.swift; sourceTree = ""; }; + 15380DABDCB2492A132A90E4 /* AnswerTextTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnswerTextTests.swift; sourceTree = ""; }; + 15456E37F11CE5E19A124753 /* GuardrailEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuardrailEngine.swift; sourceTree = ""; }; + 158356080B1479D37407B9F7 /* TrafficTreePagingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrafficTreePagingTests.swift; sourceTree = ""; }; + 15AF59D58B332F548630D949 /* ParserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParserTests.swift; sourceTree = ""; }; + 15E51941A085C6B16AF395BB /* InspectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectionController.swift; sourceTree = ""; }; + 168D824382963305ED7E6C04 /* CodeSignatureCheck.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CodeSignatureCheck.swift; sourceTree = ""; }; + 1B2E7474FB6A7B8B56B98917 /* ToolActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolActivity.swift; sourceTree = ""; }; + 1B2EB4E838E550B396BDB883 /* ExtensionSourceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionSourceTests.swift; sourceTree = ""; }; + 1C63D0070EAC9A8146D63ABD /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = ""; }; + 1D0AA61D989998AB7A90CDDB /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/Localizable.strings; sourceTree = ""; }; + 1F49F6CFAF06DFBB9416246D /* official-rule-packs-v1-public.pem */ = {isa = PBXFileReference; path = "official-rule-packs-v1-public.pem"; sourceTree = ""; }; + 1FD96902AACB4B557DEFFBCD /* InspectionProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectionProxy.swift; sourceTree = ""; }; + 20C95610696E32B96E500E8F /* bpf-access.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "bpf-access.sh"; sourceTree = ""; }; + 20CA8150CA012929A40558FB /* BPFProgram.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BPFProgram.swift; sourceTree = ""; }; + 21A2E14BFE5E66664D0A604B /* AnomalyEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnomalyEngine.swift; sourceTree = ""; }; + 21FEECAD5C958CF49A659E14 /* UpdateVerificationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateVerificationTests.swift; sourceTree = ""; }; + 228B5C4135EAD9D85F91ED0E /* HTTPHostParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPHostParser.swift; sourceTree = ""; }; + 22C46B9250A6ADDFD915500B /* DestinationProfileTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DestinationProfileTests.swift; sourceTree = ""; }; + 22D460484C8D6DFA5D495132 /* PluginTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginTests.swift; sourceTree = ""; }; + 23CAA36BFFADC83D65DBF0FE /* JSONTreeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONTreeView.swift; sourceTree = ""; }; + 254FA06DF59A8410C9BAE161 /* RuleTemplateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleTemplateTests.swift; sourceTree = ""; }; + 2747CAE7AD41663488F0E2B9 /* ExtensionRecoveryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionRecoveryTests.swift; sourceTree = ""; }; + 2B82FFB06C5A1C98D5E4D7D1 /* ExportSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportSettingsView.swift; sourceTree = ""; }; + 2B95789E8FFF77D3182BADCF /* BodySearchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BodySearchTests.swift; sourceTree = ""; }; + 2CC957336FC5BD77D7A81651 /* Focus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Focus.swift; sourceTree = ""; }; + 2CFC920FE55E719B46039E1F /* FlowJudgementTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlowJudgementTests.swift; sourceTree = ""; }; + 2D1D13FDE75AF5064805D258 /* Notifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notifier.swift; sourceTree = ""; }; + 2D6CCA395BF33CDF9F92B725 /* MCPDomains.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCPDomains.swift; sourceTree = ""; }; + 2E1E1E6E8B1C2130BD563759 /* SettingsEnforcerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsEnforcerTests.swift; sourceTree = ""; }; + 2E35905A6578A1204796962E /* MockResponseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockResponseTests.swift; sourceTree = ""; }; + 2E4DFA9032765BBB7E75706F /* InspectionBudgetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectionBudgetTests.swift; sourceTree = ""; }; + 33480D5241332B3AA21CBE49 /* Localization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Localization.swift; sourceTree = ""; }; + 34AD2BFFA35727FB39287960 /* MCPDomainsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCPDomainsTests.swift; sourceTree = ""; }; + 351C523438EA0A811504B57C /* HelpTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpTests.swift; sourceTree = ""; }; + 37AE72E8F916C18A468E968A /* ExportSecrets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportSecrets.swift; sourceTree = ""; }; + 37FE9D6F8BA82F3C266E147A /* MCPAttribution.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCPAttribution.swift; sourceTree = ""; }; + 38E49720B1B25DC9EBB2ABA0 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + 3B07796D1108F037FF196443 /* AgentPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentPolicyTests.swift; sourceTree = ""; }; + 3B2FA5540C38FA293E3EB457 /* TrafficTree.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrafficTree.swift; sourceTree = ""; }; + 3C1CF4C48AA260D71155C022 /* Components.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Components.swift; sourceTree = ""; }; + 3C533BB77B419198656C6284 /* ProtocolClassifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProtocolClassifier.swift; sourceTree = ""; }; + 3C8267406A5D7DA536B7A713 /* FlowTracker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlowTracker.swift; sourceTree = ""; }; + 3D61C3343882268C81871C9B /* DNSParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DNSParser.swift; sourceTree = ""; }; + 3EA83082A5085897BE34D963 /* HostCanonicalizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HostCanonicalizer.swift; sourceTree = ""; }; + 3FD3230056607B454EAC381D /* ExportPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportPayload.swift; sourceTree = ""; }; + 3FD4661C1ABB39E65894AE7F /* CaptureAccess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaptureAccess.swift; sourceTree = ""; }; + 4017B3BE9E7FC6895D23FB6C /* Flowlight-AppStore.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Flowlight-AppStore.entitlements"; sourceTree = ""; }; + 406DB466CD32DA8223AE61A6 /* InspectMenuItems.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectMenuItems.swift; sourceTree = ""; }; + 415931FB0EB29261A56B90C7 /* AskQuery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskQuery.swift; sourceTree = ""; }; + 41AE1A6CC673544FCEC9E7F4 /* AskView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskView.swift; sourceTree = ""; }; + 41B98E13F994F7E684F57C07 /* AgentAttributor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentAttributor.swift; sourceTree = ""; }; + 440DB80190A1847AC834210D /* AgentLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentLauncher.swift; sourceTree = ""; }; + 44CCD94E9D554D6DD61486FF /* RewriteRulesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RewriteRulesView.swift; sourceTree = ""; }; + 45076E14820DDD4CFF352226 /* ProxyJanitorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyJanitorTests.swift; sourceTree = ""; }; + 461E9D1F76A4F9505335AB87 /* LocalRiskViews.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalRiskViews.swift; sourceTree = ""; }; + 48B24C254E2C17056730C06B /* RulePackDeliveryStats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackDeliveryStats.swift; sourceTree = ""; }; + 497DF4817317CE033F2A83A2 /* NettopParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NettopParser.swift; sourceTree = ""; }; + 4D2C6211A645D4DDF8526DF2 /* ExportController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportController.swift; sourceTree = ""; }; + 4D73C529EED550F2BD81CB72 /* AppLifecycleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLifecycleTests.swift; sourceTree = ""; }; + 4D9926D17DD57B7F97E895C9 /* JSONValue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JSONValue.swift; sourceTree = ""; }; + 4EEDBAB278885D747B420AD3 /* OnDeviceAsk.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnDeviceAsk.swift; sourceTree = ""; }; + 4F2FBA5700CA1489D6740FC8 /* DevicesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DevicesView.swift; sourceTree = ""; }; + 4F383DF6343F2DB3052413C9 /* NetworkScope.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkScope.swift; sourceTree = ""; }; + 50FB4666B2D07DDE032C87EC /* FocusTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocusTests.swift; sourceTree = ""; }; + 53217054F0EFD8EC322BC5B1 /* ExtensionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionManager.swift; sourceTree = ""; }; + 594F3762D9AD6347C83BA710 /* DemoData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoData.swift; sourceTree = ""; }; + 59A21E183B79E3C66146070D /* NetworkChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkChannel.swift; sourceTree = ""; }; + 59B40E5AD74F74A029AD46E4 /* RulePackCatalogTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackCatalogTests.swift; sourceTree = ""; }; + 5B9F2521A73E6E3264F557E6 /* CaptureView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaptureView.swift; sourceTree = ""; }; + 5BC2D26D49B4E14A148BE9C6 /* InspectScopeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectScopeTests.swift; sourceTree = ""; }; + 5C0F9AC24A75E20F3FA0B2BB /* LocalizationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalizationTests.swift; sourceTree = ""; }; + 5C34C9D0A9B302B4CF4C7125 /* HTTPDataTransport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPDataTransport.swift; sourceTree = ""; }; + 5D8BAA4EB36D9B7D7BF56AD1 /* RuleSimulation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleSimulation.swift; sourceTree = ""; }; + 6053ADC7641DB8CAEA9390D6 /* FlowlightAppStore.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlowlightAppStore.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6096AB6A3EF78490BE10DF50 /* TrafficModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrafficModels.swift; sourceTree = ""; }; + 61080233ED162067497EE2E3 /* FocusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocusView.swift; sourceTree = ""; }; + 615E4FAE5D0865FB1E2492E8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 61823557D86136986EEE4A18 /* CaptureWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaptureWarning.swift; sourceTree = ""; }; + 61D6646248D4CDF3EB86A893 /* ResponseScriptRunner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseScriptRunner.swift; sourceTree = ""; }; + 62444723DE772055CA79A923 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; + 638E7A9BEB644503868C49E9 /* DeviceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceTests.swift; sourceTree = ""; }; + 64FEF0DA4ACD3157DA6FA4B3 /* LocalRiskAnalysisTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalRiskAnalysisTests.swift; sourceTree = ""; }; + 662F0B94BED1CA47AD516AC9 /* LocalRiskSettingsSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalRiskSettingsSection.swift; sourceTree = ""; }; + 6652559787FD52622A19834A /* CertificateAuthority.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CertificateAuthority.swift; sourceTree = ""; }; + 67763C99431F26FE1D428EA2 /* AskController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskController.swift; sourceTree = ""; }; + 694D30A62FAF11702B7EF605 /* RewriteRuleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RewriteRuleTests.swift; sourceTree = ""; }; + 6AF0ACB7FCA10D7758DE177D /* InspectionBudget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectionBudget.swift; sourceTree = ""; }; + 6E8974956FEBD82934CA1EB5 /* HTTPStream.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPStream.swift; sourceTree = ""; }; + 6F9EEC138B6EE3479F9F10E0 /* Flowlight.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Flowlight.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7075FF219DB5D21F32149FE5 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; + 70965BF26E0B4B3F9719122B /* WindowVisibilityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowVisibilityTests.swift; sourceTree = ""; }; + 70F169CF4776BE3FAF69AE73 /* InspectionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectionTests.swift; sourceTree = ""; }; + 719C08673D2446F21DAF9F54 /* ExportQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportQueue.swift; sourceTree = ""; }; + 738E050AC8811051BF14E529 /* RulePackCatalogUpdater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackCatalogUpdater.swift; sourceTree = ""; }; + 74F1DEAAAAAA607CEA5EC303 /* OnDeviceRiskProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnDeviceRiskProvider.swift; sourceTree = ""; }; + 7611E8788B3B6AF18F1CEDF7 /* AskEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskEnvironment.swift; sourceTree = ""; }; + 76792B4893790E9ACD4BFA8B /* ProtocolCatalog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProtocolCatalog.swift; sourceTree = ""; }; + 76B6293D3AAFF511F855C4E6 /* IPCServer.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = IPCServer.txt; sourceTree = ""; }; + 76D752E3A8C7633C8BC939BE /* InstalledAppsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstalledAppsTests.swift; sourceTree = ""; }; + 78D5C4691F1B4DFDDCC1A705 /* BoundedHTTPDataTransport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoundedHTTPDataTransport.swift; sourceTree = ""; }; + 7BA6FB03454241CB84A9AA13 /* BlockEnforcer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockEnforcer.swift; sourceTree = ""; }; + 7EEA2706008C57CB75FB17CD /* RuleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleTests.swift; sourceTree = ""; }; + 7FA151AA64480DAACC602123 /* InsightsPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsightsPanel.swift; sourceTree = ""; }; + 80BC5E16F824FC642C12C8B0 /* BlockRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockRules.swift; sourceTree = ""; }; + 810530D0FFDE61BE5CDB4CC2 /* BoundedHTTPDataTransportTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BoundedHTTPDataTransportTests.swift; sourceTree = ""; }; + 81434EE3C45929E8A768D42E /* AgentsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentsView.swift; sourceTree = ""; }; + 81F190466C9691ADAF7BC8DA /* SystemExtensions.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemExtensions.framework; path = System/Library/Frameworks/SystemExtensions.framework; sourceTree = SDKROOT; }; + 82D568056D9E6FACAC42D563 /* FeatureGuide.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeatureGuide.swift; sourceTree = ""; }; + 8507D8801643823A18134BF8 /* RulePackCatalogUpdaterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackCatalogUpdaterTests.swift; sourceTree = ""; }; + 88962BAF6E215B83FE0AFF9A /* RulesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulesView.swift; sourceTree = ""; }; + 89C74F92FC42AE36F5D97F1F /* EnrichmentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnrichmentTests.swift; sourceTree = ""; }; + 8ACA1ABA6B37B6457004C94A /* NetworkExtension.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NetworkExtension.framework; path = System/Library/Frameworks/NetworkExtension.framework; sourceTree = SDKROOT; }; + 8CB82D0B63E8C783DD0A4FB5 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + 8E01AEB9AB4F8723FFFA4BFB /* ExportTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportTests.swift; sourceTree = ""; }; + 8EF576B7B41898D84B4E487F /* Info-AppStore.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "Info-AppStore.plist"; sourceTree = ""; }; + 8F08D1913575FFC1F548CAB5 /* GuardrailsPane.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuardrailsPane.swift; sourceTree = ""; }; + 91657F4898EFEBCB551ADD4E /* RemoteAsk.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteAsk.swift; sourceTree = ""; }; + 92BAF46D43D2171398478FC3 /* Rule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Rule.swift; sourceTree = ""; }; + 92FDE4C87CC59491B70BF3F3 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 9341EDA5AB3454E82FECD53A /* FlowlightStoreExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = FlowlightStoreExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 93E71941B27710D83594A6C5 /* LocalRiskAnalysis.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalRiskAnalysis.swift; sourceTree = ""; }; + 94004173EC96619B41EDF49F /* AskFeatureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskFeatureTests.swift; sourceTree = ""; }; + 94538A9E26BCD8960123C7E4 /* TrafficDatabase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrafficDatabase.swift; sourceTree = ""; }; + 94F3F458498856491A40E88C /* ProcessNaming.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessNaming.swift; sourceTree = ""; }; + 95761708CD76CABDF0696BCE /* ExtensionTrafficSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionTrafficSource.swift; sourceTree = ""; }; + 95765A2F0D026D17736C9D9D /* LLMFacts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LLMFacts.swift; sourceTree = ""; }; + 957EEA0C3C7342504E533506 /* NettopTrafficSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NettopTrafficSource.swift; sourceTree = ""; }; + 96A2DDEBC714CDCFDB919F35 /* IPCProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPCProtocol.swift; sourceTree = ""; }; + 97943E847A22CF491FA82084 /* RuleStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleStore.swift; sourceTree = ""; }; + 98FE7804F3D1F6A247F0C8DF /* ToolCallLinks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolCallLinks.swift; sourceTree = ""; }; + 992F80EF7B17CA25C7D83AC8 /* Motion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Motion.swift; sourceTree = ""; }; + 9970A61AD194525C58096029 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; + 9B910FBB81CDAC17AE5ACCEA /* RuleSimulationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleSimulationView.swift; sourceTree = ""; }; + 9C0843B4BD70F8F83167F2D3 /* InsightsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsightsModel.swift; sourceTree = ""; }; + 9C9C36E21D6DB161C80DF3F6 /* UpdateChecker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateChecker.swift; sourceTree = ""; }; + 9CC12B7176A61DD80F12043A /* RulePacksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePacksView.swift; sourceTree = ""; }; + 9D6A2870B379B2C1C171C7A3 /* DatabaseTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DatabaseTests.swift; sourceTree = ""; }; + 9D9FCA36BD4A101EA1F02DFF /* SQLite.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SQLite.swift; sourceTree = ""; }; + 9DA4611687EF2F8AADA58A49 /* AppRestart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppRestart.swift; sourceTree = ""; }; + 9EC52100D779B101B1B2595F /* Coverage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Coverage.swift; sourceTree = ""; }; + 9EF395A2F3D6C97FF9EC53E4 /* index.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = index.html; sourceTree = ""; }; + 9FFEA980768CD488D58CC0B1 /* DemoInspection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoInspection.swift; sourceTree = ""; }; + A0A1C1F3361CA62C0D08C168 /* PluginEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginEngine.swift; sourceTree = ""; }; + A15168A448857A6CC759F7BB /* RulePackEventDelivery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackEventDelivery.swift; sourceTree = ""; }; + A2A5AC7D1719857AE8ED1CFA /* InsightsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsightsTests.swift; sourceTree = ""; }; + A30AC102A5B36107D8B6B31F /* RulePackTransfer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackTransfer.swift; sourceTree = ""; }; + A55A095537DB24454B007D1B /* PluginStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginStore.swift; sourceTree = ""; }; + A5A9D356FF073F1DA1C05522 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + A617D9483BCC31A0F4200A90 /* SystemExtensionScan.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemExtensionScan.swift; sourceTree = ""; }; + A62A00EA0C0D8B7844E6F7B2 /* DestinationProfile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DestinationProfile.swift; sourceTree = ""; }; + A7BDAE5D54ABFD08CCFFE447 /* ProxyRelaunch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyRelaunch.swift; sourceTree = ""; }; + A903BAF9BBDCFEAEC2F023FF /* USBMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = USBMonitor.swift; sourceTree = ""; }; + A95B12B83D0B4346AF52BDA6 /* FlowlightExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = FlowlightExtension.entitlements; sourceTree = ""; }; + AA72D307E4B1A08BE4B8AEF8 /* ExportDisclosureSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportDisclosureSheet.swift; sourceTree = ""; }; + AA9340FE2B6C417D1A19AF54 /* ResponseGate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseGate.swift; sourceTree = ""; }; + AAD9DD248FDC1D5D58EFC726 /* RuleSimulationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleSimulationTests.swift; sourceTree = ""; }; + AB0C0840C443F8AEDD254AE0 /* RulePackEventDeliveryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackEventDeliveryTests.swift; sourceTree = ""; }; + ABD4C8B6E3620F5E46C69434 /* BuiltInRulePacks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BuiltInRulePacks.swift; sourceTree = ""; }; + AC02CB8000B00C4C0AD84E60 /* SharedStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedStrings.swift; sourceTree = ""; }; + AC8A0C2D83843716604FD3F0 /* IPCServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPCServer.swift; sourceTree = ""; }; + ADD9D2D024F76347C8414BD5 /* NetworkChannelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkChannelTests.swift; sourceTree = ""; }; + ADDB360F7DA88D34505F4D8A /* official.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = official.json; sourceTree = ""; }; + AE2A4754CFE5FD187CAF66AD /* ExportVisibilityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportVisibilityTests.swift; sourceTree = ""; }; + AEB593C0CD03CAA473F143ED /* Flowlight.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Flowlight.entitlements; sourceTree = ""; }; + AF8F5D7CBCD592768D4C3F2E /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; + AF99FCE4EBE61D20FFC1E2F1 /* AgentPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentPolicy.swift; sourceTree = ""; }; + AFA3B4EB0E0D40E39CE24E1B /* RewriteRule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RewriteRule.swift; sourceTree = ""; }; + AFAEE09994253E82748BCCCB /* LLMToolCalls.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LLMToolCalls.swift; sourceTree = ""; }; + B0158F10AEABEF28A925E8C3 /* AppNavigation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppNavigation.swift; sourceTree = ""; }; + B1888DEE22E9C2FCFB5DC064 /* MCPDomainsSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCPDomainsSection.swift; sourceTree = ""; }; + B1C69EEECAA62FC98DBC8CB2 /* CoverageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoverageView.swift; sourceTree = ""; }; + B3244269609CC161996866B5 /* FlowlightApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlowlightApp.swift; sourceTree = ""; }; + B4849A413C60A9ABC4F9C16E /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; + B484EC45F6D3CF2D66D12BE0 /* AgentWorkspaceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentWorkspaceTests.swift; sourceTree = ""; }; + B545B09C3EE58C355E7D048A /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; }; + B5C4444B7A84352BE3672C41 /* TLSSNIParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TLSSNIParser.swift; sourceTree = ""; }; + B9B6A48D086EF16CF6E438FF /* BluetoothMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothMonitor.swift; sourceTree = ""; }; + BB40E7DB142C886F94FE2448 /* BehaviourPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BehaviourPanel.swift; sourceTree = ""; }; + BD0D85E63A3FEC65FE1FD068 /* FlowlightResponseScriptHelper */ = {isa = PBXFileReference; includeInIndex = 0; path = FlowlightResponseScriptHelper; sourceTree = BUILT_PRODUCTS_DIR; }; + BF216452A0F90D9E90A6BD34 /* ExportModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportModels.swift; sourceTree = ""; }; + BFE93ABADFF46C961FCABAB8 /* InspectView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectView.swift; sourceTree = ""; }; + C087727B358A400DCFD7E0E6 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + C18286421CD591157CF1E1FD /* ProxyJanitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyJanitor.swift; sourceTree = ""; }; + C35EF76A8728F308E2D6973A /* RulePackCatalogVerifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackCatalogVerifier.swift; sourceTree = ""; }; + C3E4E7F1E8B83D086AF0CB1B /* InspectNavigationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectNavigationTests.swift; sourceTree = ""; }; + C4A370EA2BA551D5351835E6 /* TrafficSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrafficSource.swift; sourceTree = ""; }; + C8251DBDC21C44CB92CC1C67 /* SettingsEnforcer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsEnforcer.swift; sourceTree = ""; }; + CAC8A1658834152DBFBA4494 /* MockGate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockGate.swift; sourceTree = ""; }; + CB1C1786F72F8D0BC95B9BAC /* RulePackCatalogPersistenceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackCatalogPersistenceTests.swift; sourceTree = ""; }; + CB78709D1E01638E63A484D3 /* AskTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskTests.swift; sourceTree = ""; }; + CCA8D35E21C4BC1F15368DE3 /* TrafficMonitorRulePackStartupTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrafficMonitorRulePackStartupTests.swift; sourceTree = ""; }; + CD774DADE526BE4F507BE06C /* DeviceModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceModels.swift; sourceTree = ""; }; + CF28074238079D33EFB6B862 /* AppleSystemAppTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppleSystemAppTests.swift; sourceTree = ""; }; + CF2DEA93C3D6844E3345D2D8 /* ExportDisclosure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportDisclosure.swift; sourceTree = ""; }; + CFC1036E5ABBFDB8740405F3 /* DeviceStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceStore.swift; sourceTree = ""; }; + D16976C5552006B1F9975A62 /* AppleSystemApps.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppleSystemApps.swift; sourceTree = ""; }; + D1C046DCF0CB1227CA93DA24 /* FlowlightExtension.systemextension */ = {isa = PBXFileReference; explicitFileType = "wrapper.system-extension"; includeInIndex = 0; path = FlowlightExtension.systemextension; sourceTree = BUILT_PRODUCTS_DIR; }; + D210A86033CB79C792000CA2 /* UpdateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateView.swift; sourceTree = ""; }; + D2DD7D42B7798A6C57F8C49E /* SystemExtensionScanTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemExtensionScanTests.swift; sourceTree = ""; }; + D5656604B2CFCBB61EFE050C /* AgentCatalog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentCatalog.swift; sourceTree = ""; }; + D59A773537F63761107681A3 /* AskProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskProvider.swift; sourceTree = ""; }; + D7DE406298624DC5F3A82A22 /* FlowlightExtension-AppStore.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "FlowlightExtension-AppStore.entitlements"; sourceTree = ""; }; + D9195A6149AE1C6628A3E184 /* GuardrailStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuardrailStore.swift; sourceTree = ""; }; + DB223BC3AD00430A5673C439 /* ResponseTransformRule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseTransformRule.swift; sourceTree = ""; }; + DBC0A436E879000F8F5FF9E7 /* TrafficMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrafficMonitor.swift; sourceTree = ""; }; + DC8F91DE12A1C58BB2BD7038 /* AgentTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentTests.swift; sourceTree = ""; }; + DCCB2008E4820D1DE1DE154F /* InspectionRecorder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectionRecorder.swift; sourceTree = ""; }; + DCF7C56CAF72886BEB812F8F /* ExportDisclosureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExportDisclosureTests.swift; sourceTree = ""; }; + DD30777A046F705110A99269 /* AgentLauncherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AgentLauncherTests.swift; sourceTree = ""; }; + DD71004CFB571B9167866770 /* AskQueryRunner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AskQueryRunner.swift; sourceTree = ""; }; + E45902808344F173033EB0F5 /* WindowVisibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowVisibility.swift; sourceTree = ""; }; + E489125D1DBF3EF98AEED4EB /* ProcessLookup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProcessLookup.swift; sourceTree = ""; }; + E593C4ED11E1BCADD22099E6 /* PluginScriptRunner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginScriptRunner.swift; sourceTree = ""; }; + E6A7703953570391821257DD /* ToolResults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolResults.swift; sourceTree = ""; }; + E7FBB33595155CF835AF14D5 /* MockRule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRule.swift; sourceTree = ""; }; + E83A96A61DE59D2731045A8C /* DemoDataTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DemoDataTests.swift; sourceTree = ""; }; + E858E52F162361C6FD039F16 /* RulePackCatalogComposition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackCatalogComposition.swift; sourceTree = ""; }; + E872723F2D92AA78F7941259 /* ActivityMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityMonitor.swift; sourceTree = ""; }; + EB04B24A750D5362449F8197 /* AlertsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertsView.swift; sourceTree = ""; }; + EBD012519AD3D674CC0D35FC /* CoverageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoverageTests.swift; sourceTree = ""; }; + EC292A1F1020AAA580DA3CDB /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; + EC63F61F2956394B88C762F4 /* ExtensionRebootTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionRebootTests.swift; sourceTree = ""; }; + ED54978358DD9DE1E792A8B9 /* VersionNamingRegressionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VersionNamingRegressionTests.swift; sourceTree = ""; }; + EFF0C2E06D541DAEC1BC5F33 /* DesignTokens.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DesignTokens.swift; sourceTree = ""; }; + F05A2DD30C79643247AF74C9 /* VersionNameRepairTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VersionNameRepairTests.swift; sourceTree = ""; }; + F062E6D35F98D8EEF1EBE47C /* PacketSniffer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacketSniffer.swift; sourceTree = ""; }; + F07BDE0C2D8005899C1AF21C /* InspectionBudgetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectionBudgetView.swift; sourceTree = ""; }; + F186517132592B36ED2B9F80 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + F212ADB3B37A2EF68A7CFB84 /* FilterDataProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilterDataProvider.swift; sourceTree = ""; }; + F3C96560CB05BDDBB136E34B /* PluginPackageVerifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PluginPackageVerifier.swift; sourceTree = ""; }; + F4408358C5CC9516B4C1ABCB /* LiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveView.swift; sourceTree = ""; }; + F529FE0E06B11298D8CD1E90 /* BlockingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockingTests.swift; sourceTree = ""; }; + F61F7D8D3D08054C7697792D /* AnomalySettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnomalySettings.swift; sourceTree = ""; }; + F67F3203B4BE2D664F3B1EC9 /* InstalledApps.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstalledApps.swift; sourceTree = ""; }; + F6B4B0B76D53D8089C95762F /* IPOwnerLookup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPOwnerLookup.swift; sourceTree = ""; }; + F8406C2280A8FF08E883A1E0 /* MockRulesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRulesView.swift; sourceTree = ""; }; + F8F8FB5C78D8391B25733C9B /* ResponseTransformRulesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResponseTransformRulesView.swift; sourceTree = ""; }; + FC0873969A030F170A6AA3F5 /* UpdateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateTests.swift; sourceTree = ""; }; + FC4ADEE1B3578FBC6DFD9B74 /* RulePackCatalogState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RulePackCatalogState.swift; sourceTree = ""; }; + FCD98C0A49FC6C5521129087 /* ReportsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportsView.swift; sourceTree = ""; }; + FD00CA1EF2A7DA909E3A31B5 /* RuleTemplates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RuleTemplates.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2D134D9B93ED0CF9B46F2117 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4F929BE1C94FDF359E1B0F39 /* NetworkExtension.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4A59E2EDCDD8E4A557ED627B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BC092B149B32D158A62ADB8A /* JavaScriptCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 79DC5CAE407312B80BF20233 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B141482792DF3953D575CFF9 /* libsqlite3.tbd in Frameworks */, + 7A572D1F12B86CB4F91E72A0 /* NetworkExtension.framework in Frameworks */, + 06C9D883620A08BF10DBF82A /* SystemExtensions.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 983145C81A2D24465E7F44B6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C6E8C518995B36DB53128B05 /* libsqlite3.tbd in Frameworks */, + 2AFEE6E1F9393DE9D219552F /* NetworkExtension.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B516522A2EB85C9D1E4298D8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 607A677F2CEE245D16249316 /* NetworkExtension.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 01638FD6753C2AF708F580CA /* docs */ = { + isa = PBXGroup; + children = ( + 05B37DCC5CE723AABF1262DF /* docs */, + ); + path = docs; + sourceTree = ""; + }; + 05B37DCC5CE723AABF1262DF /* docs */ = { + isa = PBXGroup; + children = ( + 9EF395A2F3D6C97FF9EC53E4 /* index.html */, + ); + path = docs; + sourceTree = ""; + }; + 0CE3576DC40E71590960E248 /* Enrichment */ = { + isa = PBXGroup; + children = ( + 20CA8150CA012929A40558FB /* BPFProgram.swift */, + 3FD4661C1ABB39E65894AE7F /* CaptureAccess.swift */, + F6B4B0B76D53D8089C95762F /* IPOwnerLookup.swift */, + F062E6D35F98D8EEF1EBE47C /* PacketSniffer.swift */, + ); + path = Enrichment; + sourceTree = ""; + }; + 14FE4EA5DAAC3CF469DF2DF7 /* Channels */ = { + isa = PBXGroup; + children = ( + B9B6A48D086EF16CF6E438FF /* BluetoothMonitor.swift */, + CD774DADE526BE4F507BE06C /* DeviceModels.swift */, + CFC1036E5ABBFDB8740405F3 /* DeviceStore.swift */, + A903BAF9BBDCFEAEC2F023FF /* USBMonitor.swift */, + ); + path = Channels; + sourceTree = ""; + }; + 19F2ECDA2D0846DD0C8AA438 /* Flowlight */ = { + isa = PBXGroup; + children = ( + 615E4FAE5D0865FB1E2492E8 /* Assets.xcassets */, + 4017B3BE9E7FC6895D23FB6C /* Flowlight-AppStore.entitlements */, + AEB593C0CD03CAA473F143ED /* Flowlight.entitlements */, + A5A9D356FF073F1DA1C05522 /* Info.plist */, + 3944E092E097CA9FE66602C2 /* Analysis */, + AD43AD3D26806E2C0D8E2898 /* App */, + 7E89EFDC08791E588B285D1C /* Ask */, + F6C47AC904440C94AFC4016D /* Capture */, + 14FE4EA5DAAC3CF469DF2DF7 /* Channels */, + 0CE3576DC40E71590960E248 /* Enrichment */, + 85B9DE62499BF1EAB938A4A7 /* Export */, + 36C0E584D1897E1022A44014 /* Inspection */, + 1C0216F524771DC67009B967 /* Localization */, + 76EBCF9D9239BC88E1A6B467 /* Plugins */, + C23D46CAD0729079B295BF85 /* Resources */, + BA858536CDA7B1F73C14DC7D /* Storage */, + AFB91EF695297110D08D29F5 /* UI */, + ); + path = Flowlight; + sourceTree = ""; + }; + 1C0216F524771DC67009B967 /* Localization */ = { + isa = PBXGroup; + children = ( + 33480D5241332B3AA21CBE49 /* Localization.swift */, + 77D58ED5F4678FC1C2A5634A /* Localizable.strings */, + ); + path = Localization; + sourceTree = ""; + }; + 315048F637ED4E869E58FC34 /* FlowlightExtension */ = { + isa = PBXGroup; + children = ( + 7BA6FB03454241CB84A9AA13 /* BlockEnforcer.swift */, + F212ADB3B37A2EF68A7CFB84 /* FilterDataProvider.swift */, + D7DE406298624DC5F3A82A22 /* FlowlightExtension-AppStore.entitlements */, + A95B12B83D0B4346AF52BDA6 /* FlowlightExtension.entitlements */, + 3C8267406A5D7DA536B7A713 /* FlowTracker.swift */, + 8EF576B7B41898D84B4E487F /* Info-AppStore.plist */, + 06816A9441C5EFEF5EF55CA5 /* Info.plist */, + AC8A0C2D83843716604FD3F0 /* IPCServer.swift */, + F186517132592B36ED2B9F80 /* main.swift */, + 0F2F1F8536857610FB4C9854 /* ProcessResolver.swift */, + ); + path = FlowlightExtension; + sourceTree = ""; + }; + 36C0E584D1897E1022A44014 /* Inspection */ = { + isa = PBXGroup; + children = ( + 6652559787FD52622A19834A /* CertificateAuthority.swift */, + 15456E37F11CE5E19A124753 /* GuardrailEngine.swift */, + 6E8974956FEBD82934CA1EB5 /* HTTPStream.swift */, + 6AF0ACB7FCA10D7758DE177D /* InspectionBudget.swift */, + 15E51941A085C6B16AF395BB /* InspectionController.swift */, + 1FD96902AACB4B557DEFFBCD /* InspectionProxy.swift */, + DCCB2008E4820D1DE1DE154F /* InspectionRecorder.swift */, + 4D9926D17DD57B7F97E895C9 /* JSONValue.swift */, + 95765A2F0D026D17736C9D9D /* LLMFacts.swift */, + AFAEE09994253E82748BCCCB /* LLMToolCalls.swift */, + CAC8A1658834152DBFBA4494 /* MockGate.swift */, + E7FBB33595155CF835AF14D5 /* MockRule.swift */, + C18286421CD591157CF1E1FD /* ProxyJanitor.swift */, + A7BDAE5D54ABFD08CCFFE447 /* ProxyRelaunch.swift */, + AA9340FE2B6C417D1A19AF54 /* ResponseGate.swift */, + 61D6646248D4CDF3EB86A893 /* ResponseScriptRunner.swift */, + DB223BC3AD00430A5673C439 /* ResponseTransformRule.swift */, + AFA3B4EB0E0D40E39CE24E1B /* RewriteRule.swift */, + C8251DBDC21C44CB92CC1C67 /* SettingsEnforcer.swift */, + 1B2E7474FB6A7B8B56B98917 /* ToolActivity.swift */, + 98FE7804F3D1F6A247F0C8DF /* ToolCallLinks.swift */, + E6A7703953570391821257DD /* ToolResults.swift */, + ); + path = Inspection; + sourceTree = ""; + }; + 3944E092E097CA9FE66602C2 /* Analysis */ = { + isa = PBXGroup; + children = ( + E872723F2D92AA78F7941259 /* ActivityMonitor.swift */, + 41B98E13F994F7E684F57C07 /* AgentAttributor.swift */, + 09E79F3A686C0EC5D7B28E8C /* AgentWorkspace.swift */, + 21A2E14BFE5E66664D0A604B /* AnomalyEngine.swift */, + F61F7D8D3D08054C7697792D /* AnomalySettings.swift */, + ABD4C8B6E3620F5E46C69434 /* BuiltInRulePacks.swift */, + 9EC52100D779B101B1B2595F /* Coverage.swift */, + A62A00EA0C0D8B7844E6F7B2 /* DestinationProfile.swift */, + 2CC957336FC5BD77D7A81651 /* Focus.swift */, + D9195A6149AE1C6628A3E184 /* GuardrailStore.swift */, + F67F3203B4BE2D664F3B1EC9 /* InstalledApps.swift */, + 93E71941B27710D83594A6C5 /* LocalRiskAnalysis.swift */, + 37FE9D6F8BA82F3C266E147A /* MCPAttribution.swift */, + 2D6CCA395BF33CDF9F92B725 /* MCPDomains.swift */, + 2D1D13FDE75AF5064805D258 /* Notifier.swift */, + E858E52F162361C6FD039F16 /* RulePackCatalogComposition.swift */, + FC4ADEE1B3578FBC6DFD9B74 /* RulePackCatalogState.swift */, + 738E050AC8811051BF14E529 /* RulePackCatalogUpdater.swift */, + C35EF76A8728F308E2D6973A /* RulePackCatalogVerifier.swift */, + A15168A448857A6CC759F7BB /* RulePackEventDelivery.swift */, + 02B5736850B28B462739C2CD /* RulePackStore.swift */, + 97943E847A22CF491FA82084 /* RuleStore.swift */, + FD00CA1EF2A7DA909E3A31B5 /* RuleTemplates.swift */, + ); + path = Analysis; + sourceTree = ""; + }; + 47D0F2D7B8D7DEDEA845284F /* FlowlightTests */ = { + isa = PBXGroup; + children = ( + DD30777A046F705110A99269 /* AgentLauncherTests.swift */, + 3B07796D1108F037FF196443 /* AgentPolicyTests.swift */, + DC8F91DE12A1C58BB2BD7038 /* AgentTests.swift */, + B484EC45F6D3CF2D66D12BE0 /* AgentWorkspaceTests.swift */, + 15380DABDCB2492A132A90E4 /* AnswerTextTests.swift */, + CF28074238079D33EFB6B862 /* AppleSystemAppTests.swift */, + 4D73C529EED550F2BD81CB72 /* AppLifecycleTests.swift */, + 94004173EC96619B41EDF49F /* AskFeatureTests.swift */, + CB78709D1E01638E63A484D3 /* AskTests.swift */, + F529FE0E06B11298D8CD1E90 /* BlockingTests.swift */, + 2B95789E8FFF77D3182BADCF /* BodySearchTests.swift */, + 810530D0FFDE61BE5CDB4CC2 /* BoundedHTTPDataTransportTests.swift */, + EBD012519AD3D674CC0D35FC /* CoverageTests.swift */, + 9D6A2870B379B2C1C171C7A3 /* DatabaseTests.swift */, + E83A96A61DE59D2731045A8C /* DemoDataTests.swift */, + 22C46B9250A6ADDFD915500B /* DestinationProfileTests.swift */, + 638E7A9BEB644503868C49E9 /* DeviceTests.swift */, + 89C74F92FC42AE36F5D97F1F /* EnrichmentTests.swift */, + DCF7C56CAF72886BEB812F8F /* ExportDisclosureTests.swift */, + 8E01AEB9AB4F8723FFFA4BFB /* ExportTests.swift */, + AE2A4754CFE5FD187CAF66AD /* ExportVisibilityTests.swift */, + EC63F61F2956394B88C762F4 /* ExtensionRebootTests.swift */, + 2747CAE7AD41663488F0E2B9 /* ExtensionRecoveryTests.swift */, + 1B2EB4E838E550B396BDB883 /* ExtensionSourceTests.swift */, + 2CFC920FE55E719B46039E1F /* FlowJudgementTests.swift */, + 50FB4666B2D07DDE032C87EC /* FocusTests.swift */, + 08A401B3A5D8ED9031EAAF03 /* GuardrailTests.swift */, + 351C523438EA0A811504B57C /* HelpTests.swift */, + A2A5AC7D1719857AE8ED1CFA /* InsightsTests.swift */, + 2E4DFA9032765BBB7E75706F /* InspectionBudgetTests.swift */, + 70F169CF4776BE3FAF69AE73 /* InspectionTests.swift */, + C3E4E7F1E8B83D086AF0CB1B /* InspectNavigationTests.swift */, + 5BC2D26D49B4E14A148BE9C6 /* InspectScopeTests.swift */, + 76D752E3A8C7633C8BC939BE /* InstalledAppsTests.swift */, + 5C0F9AC24A75E20F3FA0B2BB /* LocalizationTests.swift */, + 64FEF0DA4ACD3157DA6FA4B3 /* LocalRiskAnalysisTests.swift */, + 02EE3A99F49A058BF061C147 /* MCPAttributionTests.swift */, + 34AD2BFFA35727FB39287960 /* MCPDomainsTests.swift */, + 2E35905A6578A1204796962E /* MockResponseTests.swift */, + ADD9D2D024F76347C8414BD5 /* NetworkChannelTests.swift */, + 15AF59D58B332F548630D949 /* ParserTests.swift */, + 22D460484C8D6DFA5D495132 /* PluginTests.swift */, + 45076E14820DDD4CFF352226 /* ProxyJanitorTests.swift */, + 13D29667127E5DE57908D936 /* ProxyRelaunchTests.swift */, + 0ADADFFC230017F80D707ECE /* ResponseTransformTests.swift */, + 694D30A62FAF11702B7EF605 /* RewriteRuleTests.swift */, + CB1C1786F72F8D0BC95B9BAC /* RulePackCatalogPersistenceTests.swift */, + 59B40E5AD74F74A029AD46E4 /* RulePackCatalogTests.swift */, + 8507D8801643823A18134BF8 /* RulePackCatalogUpdaterTests.swift */, + AB0C0840C443F8AEDD254AE0 /* RulePackEventDeliveryTests.swift */, + 08C5F9CC0D644DCA03F5F4C5 /* RulePackTests.swift */, + AAD9DD248FDC1D5D58EFC726 /* RuleSimulationTests.swift */, + 254FA06DF59A8410C9BAE161 /* RuleTemplateTests.swift */, + 7EEA2706008C57CB75FB17CD /* RuleTests.swift */, + 2E1E1E6E8B1C2130BD563759 /* SettingsEnforcerTests.swift */, + D2DD7D42B7798A6C57F8C49E /* SystemExtensionScanTests.swift */, + CCA8D35E21C4BC1F15368DE3 /* TrafficMonitorRulePackStartupTests.swift */, + 158356080B1479D37407B9F7 /* TrafficTreePagingTests.swift */, + FC0873969A030F170A6AA3F5 /* UpdateTests.swift */, + 21FEECAD5C958CF49A659E14 /* UpdateVerificationTests.swift */, + F05A2DD30C79643247AF74C9 /* VersionNameRepairTests.swift */, + ED54978358DD9DE1E792A8B9 /* VersionNamingRegressionTests.swift */, + 70965BF26E0B4B3F9719122B /* WindowVisibilityTests.swift */, + 9D7230F1DB0AC11FC9FD80EE /* Fixtures */, + ); + path = FlowlightTests; + sourceTree = ""; + }; + 76EBCF9D9239BC88E1A6B467 /* Plugins */ = { + isa = PBXGroup; + children = ( + A0A1C1F3361CA62C0D08C168 /* PluginEngine.swift */, + 07F902D9D498F399BBDD85E0 /* PluginModels.swift */, + F3C96560CB05BDDBB136E34B /* PluginPackageVerifier.swift */, + E593C4ED11E1BCADD22099E6 /* PluginScriptRunner.swift */, + A55A095537DB24454B007D1B /* PluginStore.swift */, + ); + path = Plugins; + sourceTree = ""; + }; + 7CEBEFFB19C7CA1A293946A5 /* Classification */ = { + isa = PBXGroup; + children = ( + 3D61C3343882268C81871C9B /* DNSParser.swift */, + 228B5C4135EAD9D85F91ED0E /* HTTPHostParser.swift */, + 76792B4893790E9ACD4BFA8B /* ProtocolCatalog.swift */, + 3C533BB77B419198656C6284 /* ProtocolClassifier.swift */, + B5C4444B7A84352BE3672C41 /* TLSSNIParser.swift */, + ); + path = Classification; + sourceTree = ""; + }; + 7E89EFDC08791E588B285D1C /* Ask */ = { + isa = PBXGroup; + children = ( + 14C234AF77E7451A1505DDF9 /* AskChart.swift */, + 67763C99431F26FE1D428EA2 /* AskController.swift */, + 7611E8788B3B6AF18F1CEDF7 /* AskEnvironment.swift */, + D59A773537F63761107681A3 /* AskProvider.swift */, + 415931FB0EB29261A56B90C7 /* AskQuery.swift */, + DD71004CFB571B9167866770 /* AskQueryRunner.swift */, + 82D568056D9E6FACAC42D563 /* FeatureGuide.swift */, + 4EEDBAB278885D747B420AD3 /* OnDeviceAsk.swift */, + 74F1DEAAAAAA607CEA5EC303 /* OnDeviceRiskProvider.swift */, + 91657F4898EFEBCB551ADD4E /* RemoteAsk.swift */, + ); + path = Ask; + sourceTree = ""; + }; + 85B9DE62499BF1EAB938A4A7 /* Export */ = { + isa = PBXGroup; + children = ( + 4D2C6211A645D4DDF8526DF2 /* ExportController.swift */, + CF2DEA93C3D6844E3345D2D8 /* ExportDisclosure.swift */, + AA72D307E4B1A08BE4B8AEF8 /* ExportDisclosureSheet.swift */, + BF216452A0F90D9E90A6BD34 /* ExportModels.swift */, + 3FD3230056607B454EAC381D /* ExportPayload.swift */, + 719C08673D2446F21DAF9F54 /* ExportQueue.swift */, + 37AE72E8F916C18A468E968A /* ExportSecrets.swift */, + 2B82FFB06C5A1C98D5E4D7D1 /* ExportSettingsView.swift */, + ); + path = Export; + sourceTree = ""; + }; + 8AB062F3019C5E4A8D16A9E9 /* Shared */ = { + isa = PBXGroup; + children = ( + D5656604B2CFCBB61EFE050C /* AgentCatalog.swift */, + 440DB80190A1847AC834210D /* AgentLauncher.swift */, + AF99FCE4EBE61D20FFC1E2F1 /* AgentPolicy.swift */, + D16976C5552006B1F9975A62 /* AppleSystemApps.swift */, + 80BC5E16F824FC642C12C8B0 /* BlockRules.swift */, + 38E49720B1B25DC9EBB2ABA0 /* Constants.swift */, + 0872CE92A9A3D5A785ECC816 /* GlobMatch.swift */, + 11A65C830B699BC4477CA879 /* Guardrail.swift */, + 3EA83082A5085897BE34D963 /* HostCanonicalizer.swift */, + 96A2DDEBC714CDCFDB919F35 /* IPCProtocol.swift */, + 59A21E183B79E3C66146070D /* NetworkChannel.swift */, + 4F383DF6343F2DB3052413C9 /* NetworkScope.swift */, + 94F3F458498856491A40E88C /* ProcessNaming.swift */, + 92BAF46D43D2171398478FC3 /* Rule.swift */, + 10036A17CDFCA45E068708EE /* RulePack.swift */, + 10E3B19A61C74DA87F74E4CA /* RulePackSimulation.swift */, + A30AC102A5B36107D8B6B31F /* RulePackTransfer.swift */, + 5D8BAA4EB36D9B7D7BF56AD1 /* RuleSimulation.swift */, + 6096AB6A3EF78490BE10DF50 /* TrafficModels.swift */, + 7CEBEFFB19C7CA1A293946A5 /* Classification */, + ); + path = Shared; + sourceTree = ""; + }; + 9D7230F1DB0AC11FC9FD80EE /* Fixtures */ = { + isa = PBXGroup; + children = ( + 76B6293D3AAFF511F855C4E6 /* IPCServer.txt */, + ); + path = Fixtures; + sourceTree = ""; + }; + A6B39D870B3CF6E7A6C31AD3 /* Products */ = { + isa = PBXGroup; + children = ( + 6F9EEC138B6EE3479F9F10E0 /* Flowlight.app */, + 6053ADC7641DB8CAEA9390D6 /* FlowlightAppStore.app */, + D1C046DCF0CB1227CA93DA24 /* FlowlightExtension.systemextension */, + BD0D85E63A3FEC65FE1FD068 /* FlowlightResponseScriptHelper */, + 9341EDA5AB3454E82FECD53A /* FlowlightStoreExtension.appex */, + 0CBBF571DC526F85E7232F79 /* FlowlightTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + AD43AD3D26806E2C0D8E2898 /* App */ = { + isa = PBXGroup; + children = ( + B0158F10AEABEF28A925E8C3 /* AppNavigation.swift */, + 9DA4611687EF2F8AADA58A49 /* AppRestart.swift */, + 78D5C4691F1B4DFDDCC1A705 /* BoundedHTTPDataTransport.swift */, + 168D824382963305ED7E6C04 /* CodeSignatureCheck.swift */, + 594F3762D9AD6347C83BA710 /* DemoData.swift */, + 9FFEA980768CD488D58CC0B1 /* DemoInspection.swift */, + B3244269609CC161996866B5 /* FlowlightApp.swift */, + 5C34C9D0A9B302B4CF4C7125 /* HTTPDataTransport.swift */, + DBC0A436E879000F8F5FF9E7 /* TrafficMonitor.swift */, + 9C9C36E21D6DB161C80DF3F6 /* UpdateChecker.swift */, + 121FF2EBC93394E8EDCFF0BF /* UpdateInstaller.swift */, + E45902808344F173033EB0F5 /* WindowVisibility.swift */, + ); + path = App; + sourceTree = ""; + }; + ADA9F48B47F7D9E8BA6C8F1C /* Frameworks */ = { + isa = PBXGroup; + children = ( + C087727B358A400DCFD7E0E6 /* JavaScriptCore.framework */, + 0A12EC605B35B8042A369205 /* libsqlite3.tbd */, + 8ACA1ABA6B37B6457004C94A /* NetworkExtension.framework */, + 81F190466C9691ADAF7BC8DA /* SystemExtensions.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + AFB91EF695297110D08D29F5 /* UI */ = { + isa = PBXGroup; + children = ( + 082111849A66652DD9F1BE01 /* AgentsModel.swift */, + 81434EE3C45929E8A768D42E /* AgentsView.swift */, + EB04B24A750D5362449F8197 /* AlertsView.swift */, + 41AE1A6CC673544FCEC9E7F4 /* AskView.swift */, + 5B9F2521A73E6E3264F557E6 /* CaptureView.swift */, + 61823557D86136986EEE4A18 /* CaptureWarning.swift */, + 3C1CF4C48AA260D71155C022 /* Components.swift */, + 92FDE4C87CC59491B70BF3F3 /* ContentView.swift */, + B1C69EEECAA62FC98DBC8CB2 /* CoverageView.swift */, + EFF0C2E06D541DAEC1BC5F33 /* DesignTokens.swift */, + 4F2FBA5700CA1489D6740FC8 /* DevicesView.swift */, + 61080233ED162067497EE2E3 /* FocusView.swift */, + 8F08D1913575FFC1F548CAB5 /* GuardrailsPane.swift */, + F07BDE0C2D8005899C1AF21C /* InspectionBudgetView.swift */, + 406DB466CD32DA8223AE61A6 /* InspectMenuItems.swift */, + BFE93ABADFF46C961FCABAB8 /* InspectView.swift */, + 23CAA36BFFADC83D65DBF0FE /* JSONTreeView.swift */, + F4408358C5CC9516B4C1ABCB /* LiveView.swift */, + 662F0B94BED1CA47AD516AC9 /* LocalRiskSettingsSection.swift */, + 461E9D1F76A4F9505335AB87 /* LocalRiskViews.swift */, + B1888DEE22E9C2FCFB5DC064 /* MCPDomainsSection.swift */, + F8406C2280A8FF08E883A1E0 /* MockRulesView.swift */, + 992F80EF7B17CA25C7D83AC8 /* Motion.swift */, + 02ACC341615D95ADA623BBEC /* PluginSettingsView.swift */, + FCD98C0A49FC6C5521129087 /* ReportsView.swift */, + F8F8FB5C78D8391B25733C9B /* ResponseTransformRulesView.swift */, + 44CCD94E9D554D6DD61486FF /* RewriteRulesView.swift */, + 08643257F8D11784563BD6CC /* RuleEditor.swift */, + 089476A21B8A6AE7F3F4A53A /* RulePackEditorDraft.swift */, + 9CC12B7176A61DD80F12043A /* RulePacksView.swift */, + 9B910FBB81CDAC17AE5ACCEA /* RuleSimulationView.swift */, + 88962BAF6E215B83FE0AFF9A /* RulesView.swift */, + B4849A413C60A9ABC4F9C16E /* SettingsView.swift */, + AC02CB8000B00C4C0AD84E60 /* SharedStrings.swift */, + 3B2FA5540C38FA293E3EB457 /* TrafficTree.swift */, + D210A86033CB79C792000CA2 /* UpdateView.swift */, + B9A40907CF2A6CAF3E9583A1 /* Insights */, + ); + path = UI; + sourceTree = ""; + }; + B9A40907CF2A6CAF3E9583A1 /* Insights */ = { + isa = PBXGroup; + children = ( + BB40E7DB142C886F94FE2448 /* BehaviourPanel.swift */, + 9C0843B4BD70F8F83167F2D3 /* InsightsModel.swift */, + 7FA151AA64480DAACC602123 /* InsightsPanel.swift */, + ); + path = Insights; + sourceTree = ""; + }; + BA64269E7DEB0D9E7F9ED3D0 /* RulePacks */ = { + isa = PBXGroup; + children = ( + 1F49F6CFAF06DFBB9416246D /* official-rule-packs-v1-public.pem */, + ADDB360F7DA88D34505F4D8A /* official.json */, + ); + path = RulePacks; + sourceTree = ""; + }; + BA858536CDA7B1F73C14DC7D /* Storage */ = { + isa = PBXGroup; + children = ( + 48B24C254E2C17056730C06B /* RulePackDeliveryStats.swift */, + 9D9FCA36BD4A101EA1F02DFF /* SQLite.swift */, + 94538A9E26BCD8960123C7E4 /* TrafficDatabase.swift */, + ); + path = Storage; + sourceTree = ""; + }; + C23D46CAD0729079B295BF85 /* Resources */ = { + isa = PBXGroup; + children = ( + 20C95610696E32B96E500E8F /* bpf-access.sh */, + BA64269E7DEB0D9E7F9ED3D0 /* RulePacks */, + ); + path = Resources; + sourceTree = ""; + }; + DC95BF9D5F32304264FF7BD0 = { + isa = PBXGroup; + children = ( + 01638FD6753C2AF708F580CA /* docs */, + 19F2ECDA2D0846DD0C8AA438 /* Flowlight */, + 315048F637ED4E869E58FC34 /* FlowlightExtension */, + F377D0F1A3D6A6F8C5DC5F1A /* FlowlightResponseScriptHelper */, + 47D0F2D7B8D7DEDEA845284F /* FlowlightTests */, + 8AB062F3019C5E4A8D16A9E9 /* Shared */, + ADA9F48B47F7D9E8BA6C8F1C /* Frameworks */, + A6B39D870B3CF6E7A6C31AD3 /* Products */, + ); + sourceTree = ""; + }; + F377D0F1A3D6A6F8C5DC5F1A /* FlowlightResponseScriptHelper */ = { + isa = PBXGroup; + children = ( + 8CB82D0B63E8C783DD0A4FB5 /* main.swift */, + ); + path = FlowlightResponseScriptHelper; + sourceTree = ""; + }; + F6C47AC904440C94AFC4016D /* Capture */ = { + isa = PBXGroup; + children = ( + 53217054F0EFD8EC322BC5B1 /* ExtensionManager.swift */, + 1218F146542CC01A417469F9 /* ExtensionRecovery.swift */, + 95761708CD76CABDF0696BCE /* ExtensionTrafficSource.swift */, + 497DF4817317CE033F2A83A2 /* NettopParser.swift */, + 957EEA0C3C7342504E533506 /* NettopTrafficSource.swift */, + E489125D1DBF3EF98AEED4EB /* ProcessLookup.swift */, + A617D9483BCC31A0F4200A90 /* SystemExtensionScan.swift */, + C4A370EA2BA551D5351835E6 /* TrafficSource.swift */, + ); + path = Capture; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0249194ABEFD25813E6C14AB /* FlowlightTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6D4671AC947DCF84267F4477 /* Build configuration list for PBXNativeTarget "FlowlightTests" */; + buildPhases = ( + B00A2CB40DA6AAFDB17121AE /* Sources */, + 98EFD6B37E21EF6F78800814 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 531D8A14230A1D40ACDD824B /* PBXTargetDependency */, + ); + name = FlowlightTests; + packageProductDependencies = ( + ); + productName = FlowlightTests; + productReference = 0CBBF571DC526F85E7232F79 /* FlowlightTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 0E90A4F6F62FF71E3D3A1786 /* FlowlightAppStore */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0F10D312DC2BCA5C48705215 /* Build configuration list for PBXNativeTarget "FlowlightAppStore" */; + buildPhases = ( + F4C8991BC53B54019DDD0015 /* Sources */, + 17E6317CE53AA648F1E6BA08 /* Resources */, + 983145C81A2D24465E7F44B6 /* Frameworks */, + 32FF3A971C555C5CD158F63B /* Embed Foundation Extensions */, + ); + buildRules = ( + ); + dependencies = ( + ECC654C18DFE8F2D4FE918A4 /* PBXTargetDependency */, + ); + name = FlowlightAppStore; + packageProductDependencies = ( + ); + productName = FlowlightAppStore; + productReference = 6053ADC7641DB8CAEA9390D6 /* FlowlightAppStore.app */; + productType = "com.apple.product-type.application"; + }; + 1C9BF0C33D1912981FB4B5AD /* Flowlight */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4A74C79A97028F05EA626F95 /* Build configuration list for PBXNativeTarget "Flowlight" */; + buildPhases = ( + BB99E7E633832FA71E20AC59 /* Sources */, + E9FFBAE829733C47C6BC58DA /* Resources */, + 79DC5CAE407312B80BF20233 /* Frameworks */, + BD32BB41996D3CEEDBC8D17E /* Embed Dependencies */, + 645C1B96C25EC035E5415BD4 /* Embed Dependencies */, + ); + buildRules = ( + ); + dependencies = ( + CBC6CA3966123861544E6E1F /* PBXTargetDependency */, + 0945A62A6C0D7F91032CFD50 /* PBXTargetDependency */, + ); + name = Flowlight; + packageProductDependencies = ( + ); + productName = Flowlight; + productReference = 6F9EEC138B6EE3479F9F10E0 /* Flowlight.app */; + productType = "com.apple.product-type.application"; + }; + 36B21D467163CD9F57115778 /* FlowlightResponseScriptHelper */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33A9FF4B8D9B2D5D15133A18 /* Build configuration list for PBXNativeTarget "FlowlightResponseScriptHelper" */; + buildPhases = ( + 3D320DCA90917018F4FC54BF /* Sources */, + 4A59E2EDCDD8E4A557ED627B /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FlowlightResponseScriptHelper; + packageProductDependencies = ( + ); + productName = FlowlightResponseScriptHelper; + productReference = BD0D85E63A3FEC65FE1FD068 /* FlowlightResponseScriptHelper */; + productType = "com.apple.product-type.tool"; + }; + 904DAC0BB81071A09FF1A5B0 /* FlowlightStoreExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = D76A79764257B12EB4B0EB70 /* Build configuration list for PBXNativeTarget "FlowlightStoreExtension" */; + buildPhases = ( + 44DFDBB900EDE29B4C67144D /* Sources */, + 2D134D9B93ED0CF9B46F2117 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FlowlightStoreExtension; + packageProductDependencies = ( + ); + productName = FlowlightStoreExtension; + productReference = 9341EDA5AB3454E82FECD53A /* FlowlightStoreExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; + 94D00543044D9B601CDCA877 /* FlowlightExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6C5A1D60ED3AC8932FFE1FB1 /* Build configuration list for PBXNativeTarget "FlowlightExtension" */; + buildPhases = ( + D08D03E8FB49A5314F071BB1 /* Sources */, + B516522A2EB85C9D1E4298D8 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FlowlightExtension; + packageProductDependencies = ( + ); + productName = FlowlightExtension; + productReference = D1C046DCF0CB1227CA93DA24 /* FlowlightExtension.systemextension */; + productType = "com.apple.product-type.system-extension"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 27052BCDFA1783A148CD45FD /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1430; + TargetAttributes = { + 0249194ABEFD25813E6C14AB = { + ProvisioningStyle = Automatic; + }; + 0E90A4F6F62FF71E3D3A1786 = { + ProvisioningStyle = Automatic; + }; + 1C9BF0C33D1912981FB4B5AD = { + ProvisioningStyle = Automatic; + }; + 36B21D467163CD9F57115778 = { + ProvisioningStyle = Automatic; + }; + 904DAC0BB81071A09FF1A5B0 = { + ProvisioningStyle = Automatic; + }; + 94D00543044D9B601CDCA877 = { + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = CA490C327FA0F549ADD0301B /* Build configuration list for PBXProject "Flowlight" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + Base, + de, + en, + es, + fr, + it, + ja, + ko, + "pt-PT", + "zh-Hans", + "zh-Hant", + ); + mainGroup = DC95BF9D5F32304264FF7BD0; + minimizedProjectReferenceProxies = 1; + preferredProjectObjectVersion = 77; + productRefGroup = A6B39D870B3CF6E7A6C31AD3 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1C9BF0C33D1912981FB4B5AD /* Flowlight */, + 36B21D467163CD9F57115778 /* FlowlightResponseScriptHelper */, + 94D00543044D9B601CDCA877 /* FlowlightExtension */, + 904DAC0BB81071A09FF1A5B0 /* FlowlightStoreExtension */, + 0E90A4F6F62FF71E3D3A1786 /* FlowlightAppStore */, + 0249194ABEFD25813E6C14AB /* FlowlightTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 17E6317CE53AA648F1E6BA08 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 93937351BA21608974D54900 /* Assets.xcassets in Resources */, + 57DADB20CBF7D6EF6F6B8167 /* Localizable.strings in Resources */, + E384EA8E1EEBA1689E638B8C /* official-rule-packs-v1-public.pem in Resources */, + 7C4D73113ECB44CDDAB40D58 /* official.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 98EFD6B37E21EF6F78800814 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E62BAD317B20BE6E16A21FA3 /* IPCServer.txt in Resources */, + 46A21D07D20963DBAC9169F6 /* index.html in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E9FFBAE829733C47C6BC58DA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 70B794AEAC36D7B581841A5D /* Assets.xcassets in Resources */, + C57A3811A5DB984FC0F2549A /* Localizable.strings in Resources */, + D5D014F2811B94832DC6CC81 /* bpf-access.sh in Resources */, + B5F94B9F6FC2B75A867FB2F8 /* official-rule-packs-v1-public.pem in Resources */, + 48CD1538B6B7899F0B8A83E8 /* official.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3D320DCA90917018F4FC54BF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EAA7D632ABC5F2450CDDB68E /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 44DFDBB900EDE29B4C67144D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0500979C1F127E3E8BAC2C0F /* AgentCatalog.swift in Sources */, + 1F8686DCB3451158B115A8FD /* AgentLauncher.swift in Sources */, + 1E0AB61964E7FD024B5B4E71 /* AgentPolicy.swift in Sources */, + 3570CB0F911ED4160DC8F4BD /* AppleSystemApps.swift in Sources */, + 13299931E36F0173B3FCDC1B /* BlockEnforcer.swift in Sources */, + 9D9CC413EDA13E69B872454F /* BlockRules.swift in Sources */, + B13CAA0E1DA5A274F3F4D849 /* Constants.swift in Sources */, + 7212BA0F348AC67423887CF5 /* DNSParser.swift in Sources */, + B8AF34F3100E3ABF6190BE68 /* FilterDataProvider.swift in Sources */, + 5B0715A36BAB76BC06AE4052 /* FlowTracker.swift in Sources */, + EF0EBBEAC6177681CBD4F0D7 /* GlobMatch.swift in Sources */, + 2C879C6EA95A548B2BC9D9DB /* Guardrail.swift in Sources */, + 654EE33CAE5B208F04985952 /* HTTPHostParser.swift in Sources */, + 518B305308454622B576FF3B /* HostCanonicalizer.swift in Sources */, + 7D0431D1C2B4142A2A3B9A2D /* IPCProtocol.swift in Sources */, + FB53CA12F4EA8442D4E773E4 /* IPCServer.swift in Sources */, + B7D99A1E19A198CB04FDDC73 /* NetworkChannel.swift in Sources */, + EF4CBFD483B59B62F3432F3E /* NetworkScope.swift in Sources */, + 1D997A2137B9445F4D423737 /* ProcessNaming.swift in Sources */, + EE32964EF451CD9211A37D6A /* ProcessResolver.swift in Sources */, + 8D8D47E8D81B928A8895178A /* ProtocolCatalog.swift in Sources */, + 9891F943C7CAD36651D24774 /* ProtocolClassifier.swift in Sources */, + 91433E64078D356DD3940C57 /* Rule.swift in Sources */, + 26C4AD2122DB5A299CA57CE6 /* RulePack.swift in Sources */, + C85056033D72ECD693E4AE7A /* RulePackSimulation.swift in Sources */, + ECE292CA7FBB8A6CE372B4F5 /* RulePackTransfer.swift in Sources */, + F454E718DC7E6F7BDA3ECA61 /* RuleSimulation.swift in Sources */, + BBCAB0EE0D040C8BF3E30556 /* TLSSNIParser.swift in Sources */, + 668FFA90C24788C66043286B /* TrafficModels.swift in Sources */, + 45C6C2569D63744568474B91 /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B00A2CB40DA6AAFDB17121AE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FF3F2EE3FE29F6827D527B31 /* AgentLauncherTests.swift in Sources */, + 489DB4725FD189472CC078BE /* AgentPolicyTests.swift in Sources */, + 2499CE8E13B7B57DDA281E39 /* AgentTests.swift in Sources */, + EA2D23AFA530F762A6901E08 /* AgentWorkspaceTests.swift in Sources */, + FACBCE71B0804DB4187D132B /* AnswerTextTests.swift in Sources */, + E8F73E4CF1E8701968CB2E96 /* AppLifecycleTests.swift in Sources */, + B766E7284317D94D160C1386 /* AppleSystemAppTests.swift in Sources */, + 72FCD2D719346EDC2EE58A6E /* AskFeatureTests.swift in Sources */, + 87E68C01975E4936B8D6A921 /* AskTests.swift in Sources */, + 24582219230DE364D6B2E2D1 /* BlockingTests.swift in Sources */, + B40A4A6A12B15C206C69FE22 /* BodySearchTests.swift in Sources */, + D690491C9CCCFFA1DE64ECE8 /* BoundedHTTPDataTransportTests.swift in Sources */, + B87A6542EDA6ACDB5B961EFA /* CoverageTests.swift in Sources */, + 06D7DABCED6EF2ED5BD1B725 /* DatabaseTests.swift in Sources */, + DE472CC9E3475EF582BB706E /* DemoDataTests.swift in Sources */, + 8658DBDD8DE41686E075C7B0 /* DestinationProfileTests.swift in Sources */, + 9B22FA903C576B32C9232523 /* DeviceTests.swift in Sources */, + C2587EAF39C9E71650F3B6FC /* EnrichmentTests.swift in Sources */, + 64453A2D3AA57975F870BAE4 /* ExportDisclosureTests.swift in Sources */, + 1ADF39B07A56B2AFFC721C1B /* ExportTests.swift in Sources */, + 41EEA62E4E2A0DDC2FA6C7AC /* ExportVisibilityTests.swift in Sources */, + B5A31798C953DDD61039E82D /* ExtensionRebootTests.swift in Sources */, + 5EC8847DF0E49875B602B9AA /* ExtensionRecoveryTests.swift in Sources */, + CD507B163DA11479FAFBF2A6 /* ExtensionSourceTests.swift in Sources */, + 9DA08B1BDE7F624176CB2AF2 /* FlowJudgementTests.swift in Sources */, + 3EB92870A15033FFE64CA6A4 /* FocusTests.swift in Sources */, + 9524F078035F746A98A5BD1A /* GuardrailTests.swift in Sources */, + FD08E709481530B77F4ED795 /* HelpTests.swift in Sources */, + D57246BD18C4FBBCEA71F08A /* InsightsTests.swift in Sources */, + C646009EEAACFFED739EA0E9 /* InspectNavigationTests.swift in Sources */, + 7471DD6A1CB6304ECCFD0C3B /* InspectScopeTests.swift in Sources */, + F7D8E5F618EF5B76959097BF /* InspectionBudgetTests.swift in Sources */, + FE234FA5F34AAB7B7074BDB9 /* InspectionTests.swift in Sources */, + F1ACC6A35E482FC31C0EA0B1 /* InstalledAppsTests.swift in Sources */, + 498E9916E85245C7982E9110 /* LocalRiskAnalysisTests.swift in Sources */, + D211B6AF0F0C9ABE3F5D1A57 /* LocalizationTests.swift in Sources */, + A83BA0983BAC28C6E56B49BE /* MCPAttributionTests.swift in Sources */, + 2072AA79A8637D84267BE43F /* MCPDomainsTests.swift in Sources */, + 8BD67221A510AAB93D73CC7D /* MockResponseTests.swift in Sources */, + 5A3B1EB5936B67AD426A5967 /* NetworkChannelTests.swift in Sources */, + 657B4D3A0DC9860BCAA78E25 /* ParserTests.swift in Sources */, + E3F2CFD47F40B6A9481C5777 /* PluginTests.swift in Sources */, + ADC857099AB3E324DEC334BC /* ProxyJanitorTests.swift in Sources */, + ED1CF3BBC1C4D317658D07A0 /* ProxyRelaunchTests.swift in Sources */, + 697ACED9A5F7CF5854461210 /* ResponseTransformTests.swift in Sources */, + 8753FD9223EF6AE4C892DB9A /* RewriteRuleTests.swift in Sources */, + BEC1503B1920AF74D38E2077 /* RulePackCatalogPersistenceTests.swift in Sources */, + 413D6E44997AA769C597FF23 /* RulePackCatalogTests.swift in Sources */, + 4F732CB0B9C2FB627217CC17 /* RulePackCatalogUpdaterTests.swift in Sources */, + ACC7529D79C19667761AEAD2 /* RulePackEventDeliveryTests.swift in Sources */, + 059D1C5ECA497BBF749BFA1F /* RulePackTests.swift in Sources */, + 8FDF38674C022B58C5E6068F /* RuleSimulationTests.swift in Sources */, + 55FB36AE92AEF84914CCA6E8 /* RuleTemplateTests.swift in Sources */, + 2B6D1084BEC5D8FD8C1340B8 /* RuleTests.swift in Sources */, + FCD81B854E4C12AA3BE84A4D /* SettingsEnforcerTests.swift in Sources */, + 66605C2D5AE7B9D23E83AF0E /* SystemExtensionScanTests.swift in Sources */, + 255816A7B82038B2B9780E24 /* TrafficMonitorRulePackStartupTests.swift in Sources */, + E6D43A9CA39D3D205D2FD8EC /* TrafficTreePagingTests.swift in Sources */, + 8D0F2F917038A8C52AE9E271 /* UpdateTests.swift in Sources */, + 55434CF888AEE73E90EDA953 /* UpdateVerificationTests.swift in Sources */, + 41750EE3E0461E85FC71FBAF /* VersionNameRepairTests.swift in Sources */, + 593C3A02860F39DAC8019A1E /* VersionNamingRegressionTests.swift in Sources */, + 65C108E51ADCFAE65FE2C8AA /* WindowVisibilityTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BB99E7E633832FA71E20AC59 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 89E518A6DD4F49D012E47AFE /* ActivityMonitor.swift in Sources */, + B1E5CA21DA13E924DD50CB51 /* AgentAttributor.swift in Sources */, + 2D10E8EE0B452C5746D2AF73 /* AgentCatalog.swift in Sources */, + 07B78C868D02BC6FB6FC561C /* AgentLauncher.swift in Sources */, + 9162E455E37916AAD651349B /* AgentPolicy.swift in Sources */, + 585CA811DBF12784CBF086EA /* AgentWorkspace.swift in Sources */, + 09B577964D76B2CCADA2E3EF /* AgentsModel.swift in Sources */, + DE40C611330AC62B7A53B63C /* AgentsView.swift in Sources */, + 65A926A0C3E7431E89CDC7FE /* AlertsView.swift in Sources */, + 70584ACFC97B4A66381BDF95 /* AnomalyEngine.swift in Sources */, + 1C837EBCE2110C53FB85C886 /* AnomalySettings.swift in Sources */, + FBE542C1BDCE771392543BD1 /* AppNavigation.swift in Sources */, + 3F09CA57A97AA100EAA0FC26 /* AppRestart.swift in Sources */, + 2A1BCAACA256067CD96D1066 /* AppleSystemApps.swift in Sources */, + 0CDAAF2B3729A02854447210 /* AskChart.swift in Sources */, + 93AC6FC795BBEAB3FCFA2C93 /* AskController.swift in Sources */, + 7BA8D2912D68E61C0523F3B6 /* AskEnvironment.swift in Sources */, + EF23A175A11656427632BE45 /* AskProvider.swift in Sources */, + CC282F84A0B0F97D5007F449 /* AskQuery.swift in Sources */, + 2AE5BF2C6ADA89975EA76B83 /* AskQueryRunner.swift in Sources */, + 8349898AD32AB76CB57C65D9 /* AskView.swift in Sources */, + 099CCC081C36710CCD4FFBD5 /* BPFProgram.swift in Sources */, + EB842377A7936B0BC9AAEC71 /* BehaviourPanel.swift in Sources */, + C5E82EFABFE12297251D924C /* BlockRules.swift in Sources */, + 046D743441B8528AD853BF2D /* BluetoothMonitor.swift in Sources */, + 1C699CA261A1C0963BF36120 /* BoundedHTTPDataTransport.swift in Sources */, + 42F74C2DB00410D8FB790B70 /* BuiltInRulePacks.swift in Sources */, + D662DA2727A039F0137E0472 /* CaptureAccess.swift in Sources */, + CDFFBF64E8D14CAB558D87F7 /* CaptureView.swift in Sources */, + 679B74263454FB76473F1006 /* CaptureWarning.swift in Sources */, + 381C9AC13AAA9CC8D1DCD8FD /* CertificateAuthority.swift in Sources */, + 028E3BA5025E1089C1CA7CEB /* CodeSignatureCheck.swift in Sources */, + BA072680D0A6AC1C40DB8608 /* Components.swift in Sources */, + BDF6030BBFAE6327B278A128 /* Constants.swift in Sources */, + E3C7DC93B1AC66ECA40B7820 /* ContentView.swift in Sources */, + EA679C463EB3158EA7195052 /* Coverage.swift in Sources */, + 4947873A05817C02C14E461D /* CoverageView.swift in Sources */, + 62ACF7BF40AB81E4CB9E4478 /* DNSParser.swift in Sources */, + 7B995B6E769204525B48DDFB /* DemoData.swift in Sources */, + 06A92144D13855A43F30221D /* DemoInspection.swift in Sources */, + D73CBA15CD6E91DE465C0556 /* DesignTokens.swift in Sources */, + 30733BCFC01E165EFF02EBA2 /* DestinationProfile.swift in Sources */, + 274EE87B6A63D7F18C0D0E1E /* DeviceModels.swift in Sources */, + CF8EE120DA5241445ECD1797 /* DeviceStore.swift in Sources */, + F782A1187A8564DA1C37EDC1 /* DevicesView.swift in Sources */, + 65F6E16AC002847C032ECC48 /* ExportController.swift in Sources */, + 3F90E760FD34949F451FBDF4 /* ExportDisclosure.swift in Sources */, + 4BAEC22536747CFB9525934A /* ExportDisclosureSheet.swift in Sources */, + 3B1CF30E04CBAAD0EC92DC5B /* ExportModels.swift in Sources */, + A78C8671BF1CC788E969814C /* ExportPayload.swift in Sources */, + C72889236AE51E71206B2F57 /* ExportQueue.swift in Sources */, + F205410D7C07CB367224D44F /* ExportSecrets.swift in Sources */, + EF8276E6A9A832CB5D74AFE3 /* ExportSettingsView.swift in Sources */, + E09B5E0093DE7BABBC1561DA /* ExtensionManager.swift in Sources */, + 2DADC58723CCECF67EAC1613 /* ExtensionRecovery.swift in Sources */, + 3607E7DD7A3ABB2C73955832 /* ExtensionTrafficSource.swift in Sources */, + 0998D0711C9591F12AE30085 /* FeatureGuide.swift in Sources */, + 78D210201D9072B255C058B1 /* FlowlightApp.swift in Sources */, + 1EC06D8718C4B684BEF492D4 /* Focus.swift in Sources */, + 0C0204670BD00994D9821D5F /* FocusView.swift in Sources */, + D5C09E269CC11D38728B69FC /* GlobMatch.swift in Sources */, + 28A7A4AF29B86B1927DBF4D3 /* Guardrail.swift in Sources */, + 7C7D39AF8E2C36BE514BF10C /* GuardrailEngine.swift in Sources */, + 7340527787A47AEDF1FE5991 /* GuardrailStore.swift in Sources */, + BF89D9E22CBBA7B5ACBD491B /* GuardrailsPane.swift in Sources */, + 06806F580BC3A25E6C76B4DE /* HTTPDataTransport.swift in Sources */, + 124C56A74E24D77F75AA8D08 /* HTTPHostParser.swift in Sources */, + A224249AD83D44E25C293EC3 /* HTTPStream.swift in Sources */, + 1438E3A19D4B0225397E92F7 /* HostCanonicalizer.swift in Sources */, + 361DD804991495DEEE15121C /* IPCProtocol.swift in Sources */, + F8E48AAE0CDB4DD16025AAEE /* IPOwnerLookup.swift in Sources */, + A6B2B75108CE6233CD3EDF00 /* InsightsModel.swift in Sources */, + A912218AF0A00A7FB4EE5221 /* InsightsPanel.swift in Sources */, + 09A86273E9179E24B619D829 /* InspectMenuItems.swift in Sources */, + BF013D373CC9FFFAD75B9C22 /* InspectView.swift in Sources */, + CA9FF629E45A3643774DDACD /* InspectionBudget.swift in Sources */, + DC86A6B4919CF1B6D72662FE /* InspectionBudgetView.swift in Sources */, + 1F1CF3F7D03FBB27616B2200 /* InspectionController.swift in Sources */, + E7F844DADB9BBF4F5A2024B6 /* InspectionProxy.swift in Sources */, + 3860DCC8B5AF2121D11144DE /* InspectionRecorder.swift in Sources */, + 216BDAB2AB83A06B61EE6325 /* InstalledApps.swift in Sources */, + 81072D7510803E8189EA2671 /* JSONTreeView.swift in Sources */, + 3C257D9C841FEE3F373EA661 /* JSONValue.swift in Sources */, + E6B53114FFB3F672BA02FE69 /* LLMFacts.swift in Sources */, + 7732BE202B8D390C8A9A0DE0 /* LLMToolCalls.swift in Sources */, + C066C0BE0A8B0C621654095F /* LiveView.swift in Sources */, + BC84D4873C2547F075562715 /* LocalRiskAnalysis.swift in Sources */, + FF4E47F54DE6A3BCFFEBAA01 /* LocalRiskSettingsSection.swift in Sources */, + 3FBACA5ECB1C08ED614FDDE7 /* LocalRiskViews.swift in Sources */, + 3DB4B694F1FBA50E559F7D9B /* Localization.swift in Sources */, + C4F66F4C8F679F53C70399D6 /* MCPAttribution.swift in Sources */, + 9A03509ED600BF1065FD2800 /* MCPDomains.swift in Sources */, + E4D30933B930F00B7CAADE20 /* MCPDomainsSection.swift in Sources */, + 27B5D51389021FC95AAB2530 /* MockGate.swift in Sources */, + 8A5E37FB8BB6623CEF21420D /* MockRule.swift in Sources */, + 239189796A5B358CF23BFCF9 /* MockRulesView.swift in Sources */, + 36F61F7BAE54F429B4C19D22 /* Motion.swift in Sources */, + D77B6BB95661074A90B12EE7 /* NettopParser.swift in Sources */, + E844FB53C6EA5C8BF5F37849 /* NettopTrafficSource.swift in Sources */, + B5614834E9118B531713207A /* NetworkChannel.swift in Sources */, + 09F9A2B71C1F7867CB04DDAC /* NetworkScope.swift in Sources */, + 780A2B3FCEDB696FC8FBD4AF /* Notifier.swift in Sources */, + D9987CC20EB70831208A0430 /* OnDeviceAsk.swift in Sources */, + 6514A22112924B2965D507DE /* OnDeviceRiskProvider.swift in Sources */, + B88D4DE798915EA469DF73B3 /* PacketSniffer.swift in Sources */, + 64D1D0E76973447B888270C1 /* PluginEngine.swift in Sources */, + 7F2257D0029DC85A25033B9B /* PluginModels.swift in Sources */, + FF4E8EC8F36613C1C03549AE /* PluginPackageVerifier.swift in Sources */, + DEDCFC43A3BBD2E91277302F /* PluginScriptRunner.swift in Sources */, + DC7F897C9C4E1E353F05E3A5 /* PluginSettingsView.swift in Sources */, + C6B736C06DB70C19217FA5AE /* PluginStore.swift in Sources */, + A4CEEDBC97449B58C674CD4F /* ProcessLookup.swift in Sources */, + 155D31587F84936506FDEBB2 /* ProcessNaming.swift in Sources */, + 61648ED4A0DBCEC775673448 /* ProtocolCatalog.swift in Sources */, + 0D37699776684FD04F8D9D07 /* ProtocolClassifier.swift in Sources */, + 2D89FAAC905437BEC596808B /* ProxyJanitor.swift in Sources */, + B4C83BAE6447273B72D237AB /* ProxyRelaunch.swift in Sources */, + 3E591F9FC749BBE46FE5C100 /* RemoteAsk.swift in Sources */, + DDC032E6272181F3E1B1BB4F /* ReportsView.swift in Sources */, + 59D83ED863E01486B578B923 /* ResponseGate.swift in Sources */, + B5E88F4AF351CB717C46B22E /* ResponseScriptRunner.swift in Sources */, + 705BEA6B331562969B8FCD26 /* ResponseTransformRule.swift in Sources */, + 9814BB05A2FC8648EB62145C /* ResponseTransformRulesView.swift in Sources */, + E12E137A657C739019D6F4D3 /* RewriteRule.swift in Sources */, + 50CD7EF8F4121F7DD1C65680 /* RewriteRulesView.swift in Sources */, + 32FCEAF70EBFB57EA5579E96 /* Rule.swift in Sources */, + 5E22345FC07C19F4A32C5002 /* RuleEditor.swift in Sources */, + F842F0968BAFF7623B4A86BE /* RulePack.swift in Sources */, + 21D7D0DF6C5DF97EB3D1EFD9 /* RulePackCatalogComposition.swift in Sources */, + 603AE25B0614892F454FE15B /* RulePackCatalogState.swift in Sources */, + E16E772F86A6469231B18EB2 /* RulePackCatalogUpdater.swift in Sources */, + A8347F99B5A1857DDF39D56F /* RulePackCatalogVerifier.swift in Sources */, + 5D637AB4C3D308EAC8CC9448 /* RulePackDeliveryStats.swift in Sources */, + 739AA7451B3E61F2963C3237 /* RulePackEditorDraft.swift in Sources */, + 26D43E956CC67CECE784EF26 /* RulePackEventDelivery.swift in Sources */, + FEE9F18D463C7060E835F757 /* RulePackSimulation.swift in Sources */, + EDAB8186A2117A6EE711A8B9 /* RulePackStore.swift in Sources */, + 2F2E867F1E599C48EC6DE525 /* RulePackTransfer.swift in Sources */, + 78FD830C8350A22AD11723EC /* RulePacksView.swift in Sources */, + AC5E1A01FEBC6A4C9951353E /* RuleSimulation.swift in Sources */, + 597FCA0655D52D801C0542F4 /* RuleSimulationView.swift in Sources */, + 5A58E6A00FD4F35DA506B390 /* RuleStore.swift in Sources */, + 362251769AB9DAC1BF063FD0 /* RuleTemplates.swift in Sources */, + 0BC685F72E943E55AA0DFC1A /* RulesView.swift in Sources */, + C9F9F6FF27500A2CB5BE992B /* SQLite.swift in Sources */, + B8B770675C09113D28BDF3F1 /* SettingsEnforcer.swift in Sources */, + F5AE32D382E6DDD1B06783B8 /* SettingsView.swift in Sources */, + 846FECA436B94D952C489DEE /* SharedStrings.swift in Sources */, + 939DB311C31E0F1B33583B8A /* SystemExtensionScan.swift in Sources */, + 149824D7E5DBBF87A16CFBDB /* TLSSNIParser.swift in Sources */, + 8B41FBD2537503B964EC5C81 /* ToolActivity.swift in Sources */, + CF9E8E6FBFB1D1DBD7610DA1 /* ToolCallLinks.swift in Sources */, + 3BB8B3792AD8FFCDE2B0897A /* ToolResults.swift in Sources */, + EFBA053570FE24748547DDB2 /* TrafficDatabase.swift in Sources */, + 8F7C96FA3DFC112A72976562 /* TrafficModels.swift in Sources */, + 4EF5727ADC37F80E20EF4327 /* TrafficMonitor.swift in Sources */, + D698B39BD305EC2E4168B923 /* TrafficSource.swift in Sources */, + C094B24A112FF0FE00623E9F /* TrafficTree.swift in Sources */, + 88B1D1AFC30EEFB351A2D10F /* USBMonitor.swift in Sources */, + D30A985B88E65A6F89E9E7E7 /* UpdateChecker.swift in Sources */, + DB969099AF17B4E0DBA3034C /* UpdateInstaller.swift in Sources */, + 9BE0BB0A6D132461427E755B /* UpdateView.swift in Sources */, + C62FF7278DAD93AB68B2FFF1 /* WindowVisibility.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D08D03E8FB49A5314F071BB1 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 813089B6205B28E82D260539 /* AgentCatalog.swift in Sources */, + C05C1729B55B00FC0AF1C20C /* AgentLauncher.swift in Sources */, + 3A12FB5ECC1D6C88CE759CFC /* AgentPolicy.swift in Sources */, + EA73DD364261DB7A3860FCF1 /* AppleSystemApps.swift in Sources */, + F2304F128BB915C60307AD44 /* BlockEnforcer.swift in Sources */, + 37BAEA33191AFCF7EED18540 /* BlockRules.swift in Sources */, + 56AE97B7A55B1A70250CAA57 /* Constants.swift in Sources */, + 18F94A8B0CE6DD3B1714C5DC /* DNSParser.swift in Sources */, + 8D0ECCF27AEAA38CE6E939B0 /* FilterDataProvider.swift in Sources */, + C030AD2D9C98160C80D356AD /* FlowTracker.swift in Sources */, + 0BB12E96D54D92C8D24619B5 /* GlobMatch.swift in Sources */, + CAFBA60EFEF3BB7D4F8D38E9 /* Guardrail.swift in Sources */, + FECA6CBE50938E777E17D87D /* HTTPHostParser.swift in Sources */, + 2F805A324684FF8CB7E0297B /* HostCanonicalizer.swift in Sources */, + D6DB988F5D1D2A3C2A5753E5 /* IPCProtocol.swift in Sources */, + 0D622C67AB136A6F14708CA6 /* IPCServer.swift in Sources */, + 3E265CB16F7C94A36ED3D11E /* NetworkChannel.swift in Sources */, + 65F285392A51B100F8FD2BBA /* NetworkScope.swift in Sources */, + DBC04B2A1B129C44A3D8A40D /* ProcessNaming.swift in Sources */, + 2560A34A00122DEF53A1C407 /* ProcessResolver.swift in Sources */, + 77E90A284280B87F30A30487 /* ProtocolCatalog.swift in Sources */, + E88DD26D7D2E9C0E0FBACD6F /* ProtocolClassifier.swift in Sources */, + F26718FE423FEE15B5502B8A /* Rule.swift in Sources */, + A147D607E84B5B0B102C824A /* RulePack.swift in Sources */, + 83E9F19608C25B32DF8C52AB /* RulePackSimulation.swift in Sources */, + 969FC166DAA7623081DA7392 /* RulePackTransfer.swift in Sources */, + FC820F255E16C392B007726B /* RuleSimulation.swift in Sources */, + 6C3AC854882827BEA6A2B9CB /* TLSSNIParser.swift in Sources */, + 87B80FD11BAC558198442507 /* TrafficModels.swift in Sources */, + ED2148A66082B969315461CA /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F4C8991BC53B54019DDD0015 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D30F3B5A02E089EEADBDE98B /* ActivityMonitor.swift in Sources */, + C35F10A4B87D29525A740DD5 /* AgentAttributor.swift in Sources */, + DDE2B0B0A807C428B9F78120 /* AgentCatalog.swift in Sources */, + 63CBA5AACC00FC44C982ADAF /* AgentLauncher.swift in Sources */, + 9767A4CE180F4083B693CC19 /* AgentPolicy.swift in Sources */, + 120C7E644032F70B351DB87E /* AgentWorkspace.swift in Sources */, + 89B09C7F77A5D116433291C5 /* AgentsModel.swift in Sources */, + 807AB517A5ED9EE6738FD707 /* AgentsView.swift in Sources */, + 41033D5CF2A9446276DADB97 /* AlertsView.swift in Sources */, + C7798BE6AE9C79EB8BA3576C /* AnomalyEngine.swift in Sources */, + 268A7C1C22F1C06F7B6DA52C /* AnomalySettings.swift in Sources */, + 953BF001428B13E4B3B04D4C /* AppNavigation.swift in Sources */, + 7E1481BA85DDCD19B4972B99 /* AppRestart.swift in Sources */, + 4A0EDDA9455A32B4A43F42FF /* AppleSystemApps.swift in Sources */, + 4453A6861DA4D5A8AE3CC793 /* AskChart.swift in Sources */, + 875CEAD8A14432BD5E46F0DF /* AskController.swift in Sources */, + EEA0FEAC3D3CA9C73393EF3E /* AskEnvironment.swift in Sources */, + 858D19CFF01AFC9E3FF8F364 /* AskProvider.swift in Sources */, + B4A39C2F0D1B775D59ADC50C /* AskQuery.swift in Sources */, + 3900BC10AB6AE27C341962CE /* AskQueryRunner.swift in Sources */, + F47E13AFAFF872BB15EA4E59 /* AskView.swift in Sources */, + 3C3AAF8E67A81B9447144BE2 /* BPFProgram.swift in Sources */, + 8BE14301F6CA5DEF8209A4FC /* BehaviourPanel.swift in Sources */, + C5077734C82AD352CC3EFA5C /* BlockRules.swift in Sources */, + 5AA48BB88F9E0F6F858DC553 /* BluetoothMonitor.swift in Sources */, + 1D11256FDE7183EBBED5D308 /* BoundedHTTPDataTransport.swift in Sources */, + C513F5D1936E202D0D6ECEFD /* BuiltInRulePacks.swift in Sources */, + 7FBA685D695EA14B08E9F18A /* CaptureAccess.swift in Sources */, + D3EB4913132CAEA7FA827B08 /* CaptureView.swift in Sources */, + A7369F9D640FCFDAC459E5F6 /* CaptureWarning.swift in Sources */, + 2E110029B0BE1C39A967E0CA /* CertificateAuthority.swift in Sources */, + EDEAECD3FA4B513114C0B581 /* CodeSignatureCheck.swift in Sources */, + 6FC332766A183D00E84656E3 /* Components.swift in Sources */, + 7726A81EF6802B2BC4606540 /* Constants.swift in Sources */, + 80FA6E238AC7FDEE36C05B5C /* ContentView.swift in Sources */, + 87F047938C7E5461658F8CE3 /* Coverage.swift in Sources */, + A108B205EE74FC1ADD45FD9E /* CoverageView.swift in Sources */, + 280B869A858715537934AC50 /* DNSParser.swift in Sources */, + 83B35B9C8D236EA11ED27A43 /* DemoData.swift in Sources */, + 6464CE699E3EE225BA57C0EF /* DemoInspection.swift in Sources */, + 742203151D5AF7CC2A2C1440 /* DesignTokens.swift in Sources */, + DB09CEC00A661AF26C37244E /* DestinationProfile.swift in Sources */, + 10776A2B276E82BD07243E07 /* DeviceModels.swift in Sources */, + 315C5531C14F1DDE99043A18 /* DeviceStore.swift in Sources */, + 70CD0A27AAF526B9BB07BBAE /* DevicesView.swift in Sources */, + 9DA5CB6639FF673FC53D033A /* ExportController.swift in Sources */, + 0567566CCFA1B23855C3C0F1 /* ExportDisclosure.swift in Sources */, + C49DD542101E64D0EEBD05E4 /* ExportDisclosureSheet.swift in Sources */, + E25A53EA4362FCC71BCE5A80 /* ExportModels.swift in Sources */, + 653556BA776A6E7755D3DD53 /* ExportPayload.swift in Sources */, + A3417EC0EF2DD2A4D35CAAB5 /* ExportQueue.swift in Sources */, + C7FAFFB62ADB58699720440A /* ExportSecrets.swift in Sources */, + 84E8F07CBD455A23EE2DF978 /* ExportSettingsView.swift in Sources */, + F5F925E03C86F8B023DC788D /* ExtensionManager.swift in Sources */, + BB4533F39F79A5D13D438C34 /* ExtensionRecovery.swift in Sources */, + A48DC12BB97A0E5499A3D87D /* ExtensionTrafficSource.swift in Sources */, + 22B534F23EF9F05AE27A6D71 /* FeatureGuide.swift in Sources */, + 451AB2522DC0E73CF1301EE1 /* FlowlightApp.swift in Sources */, + 27DC00A62F0BCEE6B1FC2B07 /* Focus.swift in Sources */, + 4D676BCFC2B27CB77015BDFA /* FocusView.swift in Sources */, + 118B4F7C72898BC0091B8F6A /* GlobMatch.swift in Sources */, + 48170BB139B744FAD6513959 /* Guardrail.swift in Sources */, + 1203A91F64B3D15431700D4F /* GuardrailEngine.swift in Sources */, + B0140F7BF021D067E67BF817 /* GuardrailStore.swift in Sources */, + 51694FE8AB65C2BC3BD5B21D /* GuardrailsPane.swift in Sources */, + 3A195005D8A4580FADEC59A9 /* HTTPDataTransport.swift in Sources */, + 4C028FF54CB024B6DAEA2DBA /* HTTPHostParser.swift in Sources */, + DED507EF1A36E9B66FE4512E /* HTTPStream.swift in Sources */, + D10DE307D1AD32A7D8173A41 /* HostCanonicalizer.swift in Sources */, + 5A2A8DF18D3C1FC584DAFBEB /* IPCProtocol.swift in Sources */, + B80FC9A3A8F21AFFCF5149A9 /* IPOwnerLookup.swift in Sources */, + 145E54492C15FDD359B6DB08 /* InsightsModel.swift in Sources */, + A3FF156082D5E00D561A7099 /* InsightsPanel.swift in Sources */, + E00C03B4955BFBA626340B5C /* InspectMenuItems.swift in Sources */, + E592D3A1D73A580676FA5696 /* InspectView.swift in Sources */, + 2504E2CFD3C6AFA86FDC86D3 /* InspectionBudget.swift in Sources */, + 042EE0F6F95E5432AB027C65 /* InspectionBudgetView.swift in Sources */, + 0D7D15BD7081161D53ED1578 /* InspectionController.swift in Sources */, + AF8A26B4F8FFA3C94F0D276E /* InspectionProxy.swift in Sources */, + FE3B0FCAFA812B5CEA810488 /* InspectionRecorder.swift in Sources */, + C558099602CDA3A231384EBD /* InstalledApps.swift in Sources */, + E15272D4731FBF6CB1126495 /* JSONTreeView.swift in Sources */, + A9675AD6413CA1740A75CE8F /* JSONValue.swift in Sources */, + AD57CBF846824C0BE9878BF1 /* LLMFacts.swift in Sources */, + 3144B2FBE6DEA543CA36D1CD /* LLMToolCalls.swift in Sources */, + 3FE68A4EC4BEA3A2B81D069E /* LiveView.swift in Sources */, + F9429DCDFAEE199D6635BA33 /* LocalRiskAnalysis.swift in Sources */, + 43329736A36E1C4367881E40 /* LocalRiskSettingsSection.swift in Sources */, + 4B0B6CA666157D7B72A8F511 /* LocalRiskViews.swift in Sources */, + 52A067CD50920CBDEC98A32F /* Localization.swift in Sources */, + 48330DCACD790F31E072D0B3 /* MCPAttribution.swift in Sources */, + 094C8F94FD053B615836D494 /* MCPDomains.swift in Sources */, + D58E19691840000472807F80 /* MCPDomainsSection.swift in Sources */, + BD91747457B98A2408D1977D /* MockGate.swift in Sources */, + AF9E41AC8E40F018E642A73E /* MockRule.swift in Sources */, + CB731DCD258C0048C4FECDF2 /* MockRulesView.swift in Sources */, + 42E39E8ADC51DA39DE0784AD /* Motion.swift in Sources */, + D688BB9313DA940E107D8237 /* NettopParser.swift in Sources */, + 643D3B8316459A2CEFBA261F /* NettopTrafficSource.swift in Sources */, + C456CD5C4C3C603419925D58 /* NetworkChannel.swift in Sources */, + 4767B9EBDCBFD6B3483079B2 /* NetworkScope.swift in Sources */, + 97CE90F39AE2FC5B9E0AD84C /* Notifier.swift in Sources */, + 35B3F93219A8854FFF1D3EEF /* OnDeviceAsk.swift in Sources */, + 6794B84FCA2A7991AD670BDA /* OnDeviceRiskProvider.swift in Sources */, + EDB017EC114FFAF18CEC2786 /* PacketSniffer.swift in Sources */, + 623C50C16EB5A7DCA225F775 /* PluginEngine.swift in Sources */, + 631C449B074FB7E31D887EFC /* PluginModels.swift in Sources */, + 4323C68638C74F3E8D02FA65 /* PluginPackageVerifier.swift in Sources */, + 58EB211C6C5B91A0435C5E11 /* PluginScriptRunner.swift in Sources */, + 931D85D9291D5E557B69BD43 /* PluginSettingsView.swift in Sources */, + A8869D4F16D83EC7120D901E /* PluginStore.swift in Sources */, + BA5C8DE36B0484931B6652E0 /* ProcessLookup.swift in Sources */, + 850653E102AF3CD2C3833524 /* ProcessNaming.swift in Sources */, + CAE2EEC350E48F001B343DE1 /* ProtocolCatalog.swift in Sources */, + 0ACF3321E6670591EC9B1306 /* ProtocolClassifier.swift in Sources */, + AF1BB39DC13C09CAC6253943 /* ProxyJanitor.swift in Sources */, + 3654D301BB54F59D172A1668 /* ProxyRelaunch.swift in Sources */, + 6BE9B797667820AD0E72D789 /* RemoteAsk.swift in Sources */, + F75EB274ED11E8E4225746B2 /* ReportsView.swift in Sources */, + 47F1C0E114B1AFD567C42792 /* ResponseGate.swift in Sources */, + E69786240DE2CC058F7A307A /* ResponseScriptRunner.swift in Sources */, + 897D75C0AEE76F10ADF0CD5C /* ResponseTransformRule.swift in Sources */, + CE0458FD46CC7EF3A1379B53 /* ResponseTransformRulesView.swift in Sources */, + 46E686B76B70B444AA375FBC /* RewriteRule.swift in Sources */, + FF59AD47E15AFE192913C918 /* RewriteRulesView.swift in Sources */, + CE1589D1A40B2EC1084C7A88 /* Rule.swift in Sources */, + 23CC0B3EE557E6F247EC4100 /* RuleEditor.swift in Sources */, + CF2049DA978EB9588596556F /* RulePack.swift in Sources */, + E5973D84F73F277220538694 /* RulePackCatalogComposition.swift in Sources */, + 6C42E5ECB1F31F42DDD421F7 /* RulePackCatalogState.swift in Sources */, + 574A061E9456AD6BD7E3AB5A /* RulePackCatalogUpdater.swift in Sources */, + 62885CD8C265122129AF78FF /* RulePackCatalogVerifier.swift in Sources */, + B1DCF272AD61D6284A4D63BD /* RulePackDeliveryStats.swift in Sources */, + 2497E16386CDFE769EFB0EF6 /* RulePackEditorDraft.swift in Sources */, + 290D1B10464B9915C1505610 /* RulePackEventDelivery.swift in Sources */, + E0C3CC3AA91B74C0D98ACE5F /* RulePackSimulation.swift in Sources */, + CF16C383C4E52E86951F7B17 /* RulePackStore.swift in Sources */, + 836D7B339C78B6FC98DD5AA8 /* RulePackTransfer.swift in Sources */, + C7B4D535CFF9FA9D0DE8D708 /* RulePacksView.swift in Sources */, + 72410A21824E39F8FF1854A3 /* RuleSimulation.swift in Sources */, + D4B24A76368B295B8DE8EC0B /* RuleSimulationView.swift in Sources */, + 67F5BAFB0D59F3692C418D0C /* RuleStore.swift in Sources */, + F130AF6A964F77EF85EBB32D /* RuleTemplates.swift in Sources */, + 14ACBD3AE23905CA5DA965CB /* RulesView.swift in Sources */, + 65DE86F9DCCC5A1293FC29E2 /* SQLite.swift in Sources */, + 80D7CBA2AE6B117ACC0BE7BB /* SettingsEnforcer.swift in Sources */, + 8DAA531E3904A7B356FE2B77 /* SettingsView.swift in Sources */, + 8B74946210FB3616E1F4ACD1 /* SharedStrings.swift in Sources */, + EF884A8D586CA5022C4DD01B /* SystemExtensionScan.swift in Sources */, + 2F80C3268E914A2041232706 /* TLSSNIParser.swift in Sources */, + 0B9096994698EFB06A95D26D /* ToolActivity.swift in Sources */, + C9E61A29C4EA61E978DF7C1A /* ToolCallLinks.swift in Sources */, + 4B7736E9D3BEAB93A4AA8B4E /* ToolResults.swift in Sources */, + DF8776D774DE087DBBFB257F /* TrafficDatabase.swift in Sources */, + 03861BEFD76EF771618B928F /* TrafficModels.swift in Sources */, + B3D4CAEA3D9EB39E1B7BCBA7 /* TrafficMonitor.swift in Sources */, + 7D613ABDA5085E4150738DA6 /* TrafficSource.swift in Sources */, + 7BE6EA58391841D37FB1117F /* TrafficTree.swift in Sources */, + 93AE87F6497373A647A92DD4 /* USBMonitor.swift in Sources */, + DFC721C64B216FEB81C55917 /* UpdateChecker.swift in Sources */, + A1DE70B1FFF145A8057E85C4 /* UpdateInstaller.swift in Sources */, + 8D660394CF2B20BC98E53675 /* UpdateView.swift in Sources */, + 05D3F9927B8A2B6F4D3CC93C /* WindowVisibility.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 0945A62A6C0D7F91032CFD50 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 36B21D467163CD9F57115778 /* FlowlightResponseScriptHelper */; + targetProxy = 8E69049BBCF586A050AA927F /* PBXContainerItemProxy */; + }; + 531D8A14230A1D40ACDD824B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 1C9BF0C33D1912981FB4B5AD /* Flowlight */; + targetProxy = 7C42FA3A564662B5DB0FD5BF /* PBXContainerItemProxy */; + }; + CBC6CA3966123861544E6E1F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 94D00543044D9B601CDCA877 /* FlowlightExtension */; + targetProxy = 8F920FDBFA157B736CCD7ECE /* PBXContainerItemProxy */; + }; + ECC654C18DFE8F2D4FE918A4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 904DAC0BB81071A09FF1A5B0 /* FlowlightStoreExtension */; + targetProxy = A212C96A4D9348FC9F87A9EA /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 77D58ED5F4678FC1C2A5634A /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 077EA8EE506D61EC90E4411E /* de */, + 0599916780428125A134B249 /* en */, + 7075FF219DB5D21F32149FE5 /* es */, + EC292A1F1020AAA580DA3CDB /* fr */, + 1D0AA61D989998AB7A90CDDB /* it */, + 9970A61AD194525C58096029 /* ja */, + B545B09C3EE58C355E7D048A /* ko */, + 1C63D0070EAC9A8146D63ABD /* pt-PT */, + 62444723DE772055CA79A923 /* zh-Hans */, + AF8F5D7CBCD592768D4C3F2E /* zh-Hant */, + ); + name = Localizable.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 0B4E4BC53709054EB9EDCBAF /* AppStore */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = FlowlightExtension/FlowlightExtension.entitlements; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = FlowlightExtension/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.filter; + PRODUCT_NAME = com.flowlight.app.filter; + PROVISIONING_PROFILE_SPECIFIER = "$(FL_EXT_PROFILE)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = AppStore; + }; + 0CB4AC86125929DEE6BFCBA3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = FlowlightExtension/FlowlightExtension.entitlements; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = FlowlightExtension/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.filter; + PRODUCT_NAME = com.flowlight.app.filter; + PROVISIONING_PROFILE_SPECIFIER = "$(FL_EXT_PROFILE)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 2BA4D1560ECB8CD40C5DB361 /* AppStore */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = "Flowlight/Flowlight-AppStore.entitlements"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = Flowlight/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app; + PRODUCT_NAME = Flowlight; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) APP_STORE"; + }; + name = AppStore; + }; + 3ED55A66D80AB5682CABEB3C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 51; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 0.15.6; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 3F7729973334863819D4A284 /* AppStore */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 51; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 38RJUJHKZS; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 0.15.6; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) APP_STORE"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = AppStore; + }; + 532DCA2CF4D443B8A0124ECE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Flowlight/Flowlight.entitlements; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = Flowlight/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app; + PRODUCT_NAME = Flowlight; + PROVISIONING_PROFILE_SPECIFIER = "$(FL_APP_PROFILE)"; + SDKROOT = macosx; + }; + name = Release; + }; + 555311EB7E3588CBED9AD438 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 51; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = ""; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "DEBUG=1", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 0.15.6; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 59D8FF91B8AD2C705CDDAC5E /* AppStore */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.tests; + SDKROOT = macosx; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flowlight.app/Contents/MacOS/Flowlight"; + }; + name = AppStore; + }; + 5DBD3E9CE3B414BC7FEEB00E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Flowlight/Flowlight.entitlements; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = Flowlight/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app; + PRODUCT_NAME = Flowlight; + PROVISIONING_PROFILE_SPECIFIER = "$(FL_APP_PROFILE)"; + SDKROOT = macosx; + }; + name = Debug; + }; + 745FC642D34466CA97B01B26 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = "FlowlightExtension/FlowlightExtension-AppStore.entitlements"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "FlowlightExtension/Info-AppStore.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.filter; + PRODUCT_NAME = com.flowlight.app.filter; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) APP_STORE"; + }; + name = Release; + }; + 7B63A17199D52F8B6039FF81 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.tests; + SDKROOT = macosx; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flowlight.app/Contents/MacOS/Flowlight"; + }; + name = Release; + }; + 82A2F2D87C1F408C546D371E /* AppStore */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Flowlight/Flowlight.entitlements; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = Flowlight/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app; + PRODUCT_NAME = Flowlight; + PROVISIONING_PROFILE_SPECIFIER = "$(FL_APP_PROFILE)"; + SDKROOT = macosx; + }; + name = AppStore; + }; + 8DE6CC23E67C44FB5A4DFE4E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = "Flowlight/Flowlight-AppStore.entitlements"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = Flowlight/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app; + PRODUCT_NAME = Flowlight; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) APP_STORE"; + }; + name = Release; + }; + 9456127BB85B5DFEA0196234 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = "FlowlightExtension/FlowlightExtension-AppStore.entitlements"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "FlowlightExtension/Info-AppStore.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.filter; + PRODUCT_NAME = com.flowlight.app.filter; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) APP_STORE"; + }; + name = Debug; + }; + 98278C91D8AA57F268A040BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.tests; + SDKROOT = macosx; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flowlight.app/Contents/MacOS/Flowlight"; + }; + name = Debug; + }; + A806300B0CAD7CC42ED5F904 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = FlowlightExtension/FlowlightExtension.entitlements; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = FlowlightExtension/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.filter; + PRODUCT_NAME = com.flowlight.app.filter; + PROVISIONING_PROFILE_SPECIFIER = "$(FL_EXT_PROFILE)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Release; + }; + ADBBC4464F6E91D8258DD00A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.FlowlightResponseScriptHelper; + PRODUCT_NAME = FlowlightResponseScriptHelper; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Release; + }; + CAD52FE1B16C85FE2E4B8081 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.FlowlightResponseScriptHelper; + PRODUCT_NAME = FlowlightResponseScriptHelper; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + D6B73476179B6ECC0E8FF0AC /* AppStore */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = "FlowlightExtension/FlowlightExtension-AppStore.entitlements"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "FlowlightExtension/Info-AppStore.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@executable_path/../../../../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app.filter; + PRODUCT_NAME = com.flowlight.app.filter; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) APP_STORE"; + }; + name = AppStore; + }; + E49C0C89C2E9D3324293BA12 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = "Flowlight/Flowlight-AppStore.entitlements"; + COMBINE_HIDPI_IMAGES = YES; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = Flowlight/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.app; + PRODUCT_NAME = Flowlight; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) APP_STORE"; + }; + name = Debug; + }; + E89D09DB0A0881E3F0A59071 /* AppStore */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.flowlight.FlowlightResponseScriptHelper; + PRODUCT_NAME = FlowlightResponseScriptHelper; + SDKROOT = macosx; + SKIP_INSTALL = YES; + }; + name = AppStore; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0F10D312DC2BCA5C48705215 /* Build configuration list for PBXNativeTarget "FlowlightAppStore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2BA4D1560ECB8CD40C5DB361 /* AppStore */, + E49C0C89C2E9D3324293BA12 /* Debug */, + 8DE6CC23E67C44FB5A4DFE4E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AppStore; + }; + 33A9FF4B8D9B2D5D15133A18 /* Build configuration list for PBXNativeTarget "FlowlightResponseScriptHelper" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E89D09DB0A0881E3F0A59071 /* AppStore */, + CAD52FE1B16C85FE2E4B8081 /* Debug */, + ADBBC4464F6E91D8258DD00A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AppStore; + }; + 4A74C79A97028F05EA626F95 /* Build configuration list for PBXNativeTarget "Flowlight" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 82A2F2D87C1F408C546D371E /* AppStore */, + 5DBD3E9CE3B414BC7FEEB00E /* Debug */, + 532DCA2CF4D443B8A0124ECE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AppStore; + }; + 6C5A1D60ED3AC8932FFE1FB1 /* Build configuration list for PBXNativeTarget "FlowlightExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0B4E4BC53709054EB9EDCBAF /* AppStore */, + 0CB4AC86125929DEE6BFCBA3 /* Debug */, + A806300B0CAD7CC42ED5F904 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AppStore; + }; + 6D4671AC947DCF84267F4477 /* Build configuration list for PBXNativeTarget "FlowlightTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 59D8FF91B8AD2C705CDDAC5E /* AppStore */, + 98278C91D8AA57F268A040BA /* Debug */, + 7B63A17199D52F8B6039FF81 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AppStore; + }; + CA490C327FA0F549ADD0301B /* Build configuration list for PBXProject "Flowlight" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3F7729973334863819D4A284 /* AppStore */, + 555311EB7E3588CBED9AD438 /* Debug */, + 3ED55A66D80AB5682CABEB3C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AppStore; + }; + D76A79764257B12EB4B0EB70 /* Build configuration list for PBXNativeTarget "FlowlightStoreExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D6B73476179B6ECC0E8FF0AC /* AppStore */, + 9456127BB85B5DFEA0196234 /* Debug */, + 745FC642D34466CA97B01B26 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = AppStore; + }; +/* End XCConfigurationList section */ + }; + rootObject = 27052BCDFA1783A148CD45FD /* Project object */; +} diff --git a/Flowlight.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Flowlight.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/Flowlight.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Flowlight.xcodeproj/xcshareddata/xcschemes/Flowlight App Store.xcscheme b/Flowlight.xcodeproj/xcshareddata/xcschemes/Flowlight App Store.xcscheme new file mode 100644 index 00000000..382dcac4 --- /dev/null +++ b/Flowlight.xcodeproj/xcshareddata/xcschemes/Flowlight App Store.xcscheme @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Flowlight.xcodeproj/xcshareddata/xcschemes/Flowlight.xcscheme b/Flowlight.xcodeproj/xcshareddata/xcschemes/Flowlight.xcscheme new file mode 100644 index 00000000..5d3375ab --- /dev/null +++ b/Flowlight.xcodeproj/xcshareddata/xcschemes/Flowlight.xcscheme @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md index 3e4f01a1..42f2f0fd 100644 --- a/README.md +++ b/README.md @@ -352,7 +352,8 @@ same local database. ```sh brew install xcodegen git clone https://github.com/xinbetween/flowlight.git && cd flowlight -xcodegen generate +scripts/check_xcode_project.sh --write # regenerate the committed shared Xcode project +scripts/check_xcode_project.sh # verify it still matches project.yml scripts/build-local.sh # ad-hoc signed, no Apple account needed open build/Build/Products/Release/Flowlight.app scripts/build-dmg.sh # optional: drag-to-install disk image (build/Flowlight.dmg) diff --git a/docs/404.html b/docs/404.html index fd3eef98..2c7f8501 100644 --- a/docs/404.html +++ b/docs/404.html @@ -86,7 +86,7 @@

That page isn't here

Try the home page,

diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index ba3be94a..a8e01557 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -5,7 +5,8 @@ Internals, build options and the Network Extension path. For an overview, see th ## Layout ``` -project.yml XcodeGen spec (run `xcodegen generate` to regenerate the .xcodeproj) +project.yml XcodeGen source of truth +Flowlight.xcodeproj/ Committed shared output so Xcode Cloud can discover the project before build scripts run Shared/ Compiled into both targets TrafficModels.swift FlowKey (pid, bundle, ip, domain, port, protocol) → bytes in/out, flows IPCProtocol.swift XPC contract between the extension and the app @@ -79,6 +80,11 @@ TEAM_ID=ABCDE12345 scripts/build-signed.sh Run the tests with `xcodebuild -scheme Flowlight test CODE_SIGN_IDENTITY=- CODE_SIGN_ENTITLEMENTS= DEVELOPMENT_TEAM=`. +`project.yml` remains the editable project definition. After changing it, run +`scripts/check_xcode_project.sh --write`, verify with `scripts/check_xcode_project.sh`, and commit the four shared files under +`Flowlight.xcodeproj/`. The generated project is deliberately committed because Xcode Cloud must find its selected +container before a post-clone script can run. User data and Xcode Cloud's local manifest remain ignored. + **If the checkout is under `~/Desktop`, `~/Documents` or `~/Downloads`, two tests will hang for two minutes each and the run will fail.** `HelpTests` reads the built `docs/docs/index.html` to check that every screen's Help anchor exists, and macOS asks for consent before the test host may read those folders — with nobody there diff --git a/docs/about/index.html b/docs/about/index.html index 20d3739e..b152f6fc 100644 --- a/docs/about/index.html +++ b/docs/about/index.html @@ -153,7 +153,7 @@

Thanks

diff --git a/docs/de/about/index.html b/docs/de/about/index.html index 35097033..1581c478 100644 --- a/docs/de/about/index.html +++ b/docs/de/about/index.html @@ -152,7 +152,7 @@

Dank

diff --git a/docs/de/docs/index.html b/docs/de/docs/index.html index da801b39..2f948636 100644 --- a/docs/de/docs/index.html +++ b/docs/de/docs/index.html @@ -76,7 +76,7 @@

Dokumentation

Flowlight benutzen

-

Alles vom ersten Start bis zum Feinschliff an den Agentenregeln. Flowlight 0.15.5, macOS 15 oder neuer.

+

Alles vom ersten Start bis zum Feinschliff an den Agentenregeln. Flowlight 0.15.6, macOS 15 oder neuer.

diff --git a/docs/de/index.html b/docs/de/index.html index ff75d1b5..2aba175d 100644 --- a/docs/de/index.html +++ b/docs/de/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

Sieh, was deine Apps im Netz tun.
brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+UniversalGPL-3.0Keine Telemetrie

+

v0.15.6macOS 15+UniversalGPL-3.0Keine Telemetrie

@@ -572,7 +572,7 @@

Wisse, was deinen Mac verlässt.

diff --git a/docs/de/privacy/index.html b/docs/de/privacy/index.html index ce975f2a..d4b13278 100644 --- a/docs/de/privacy/index.html +++ b/docs/de/privacy/index.html @@ -189,7 +189,7 @@

Kontakt

diff --git a/docs/de/threat-model/index.html b/docs/de/threat-model/index.html index 20d0e5b6..4a4bf1ed 100644 --- a/docs/de/threat-model/index.html +++ b/docs/de/threat-model/index.html @@ -225,7 +225,7 @@

Eine Schwachstelle melden

diff --git a/docs/docs/index.html b/docs/docs/index.html index 447fcea9..1c2691a7 100644 --- a/docs/docs/index.html +++ b/docs/docs/index.html @@ -76,7 +76,7 @@

Documentation

Using Flowlight

-

Everything from the first launch to tuning the agent rules. Flowlight 0.15.5, macOS 15 or later.

+

Everything from the first launch to tuning the agent rules. Flowlight 0.15.6, macOS 15 or later.

diff --git a/docs/es/about/index.html b/docs/es/about/index.html index bc1eb62c..f42bf604 100644 --- a/docs/es/about/index.html +++ b/docs/es/about/index.html @@ -152,7 +152,7 @@

Agradecimientos

diff --git a/docs/es/docs/index.html b/docs/es/docs/index.html index efab8a09..2dee3612 100644 --- a/docs/es/docs/index.html +++ b/docs/es/docs/index.html @@ -76,7 +76,7 @@

Documentación

Usar Flowlight

-

Todo, desde el primer arranque hasta el ajuste de las reglas de agentes. Flowlight 0.15.5, macOS 15 o posterior.

+

Todo, desde el primer arranque hasta el ajuste de las reglas de agentes. Flowlight 0.15.6, macOS 15 o posterior.

diff --git a/docs/es/index.html b/docs/es/index.html index 6bd350e4..73330a5a 100644 --- a/docs/es/index.html +++ b/docs/es/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

Observa la actividad de red de tus apps.

brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+UniversalGPL-3.0Sin telemetría

+

v0.15.6macOS 15+UniversalGPL-3.0Sin telemetría

@@ -572,7 +572,7 @@

Ten claro qué sale de tu Mac.

diff --git a/docs/es/privacy/index.html b/docs/es/privacy/index.html index db5cb6d5..8f3b9a53 100644 --- a/docs/es/privacy/index.html +++ b/docs/es/privacy/index.html @@ -189,7 +189,7 @@

Contacto

diff --git a/docs/es/threat-model/index.html b/docs/es/threat-model/index.html index 9d30869d..ae84a020 100644 --- a/docs/es/threat-model/index.html +++ b/docs/es/threat-model/index.html @@ -221,7 +221,7 @@

Informar de una vulnerabilidad

diff --git a/docs/fr/about/index.html b/docs/fr/about/index.html index 3422fc68..5f82f33f 100644 --- a/docs/fr/about/index.html +++ b/docs/fr/about/index.html @@ -152,7 +152,7 @@

Remerciements

diff --git a/docs/fr/docs/index.html b/docs/fr/docs/index.html index 9e9b6b7c..0e1d2c57 100644 --- a/docs/fr/docs/index.html +++ b/docs/fr/docs/index.html @@ -76,7 +76,7 @@

Documentation

Utiliser Flowlight

-

Tout, du premier lancement au réglage des règles des agents. Flowlight 0.15.5, macOS 15 ou version ultérieure.

+

Tout, du premier lancement au réglage des règles des agents. Flowlight 0.15.6, macOS 15 ou version ultérieure.

diff --git a/docs/fr/index.html b/docs/fr/index.html index fc3dda28..72cc83be 100644 --- a/docs/fr/index.html +++ b/docs/fr/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

Voyez l’activité réseau de vos apps.

brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+UniverselGPL-3.0Sans télémétrie

+

v0.15.6macOS 15+UniverselGPL-3.0Sans télémétrie

@@ -572,7 +572,7 @@

Sachez ce qui quitte votre Mac.

diff --git a/docs/fr/privacy/index.html b/docs/fr/privacy/index.html index ebbf5a25..a2afc061 100644 --- a/docs/fr/privacy/index.html +++ b/docs/fr/privacy/index.html @@ -189,7 +189,7 @@

Contact

diff --git a/docs/fr/threat-model/index.html b/docs/fr/threat-model/index.html index dcf1a52f..9d2a6c7e 100644 --- a/docs/fr/threat-model/index.html +++ b/docs/fr/threat-model/index.html @@ -224,7 +224,7 @@

Signaler une vulnérabilité

diff --git a/docs/index.html b/docs/index.html index f921ef65..b082bacc 100644 --- a/docs/index.html +++ b/docs/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

See your apps' network activity.
brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+UniversalGPL-3.0No telemetry

+

v0.15.6macOS 15+UniversalGPL-3.0No telemetry

@@ -594,7 +594,7 @@

Know what leaves your Mac.

diff --git a/docs/it/about/index.html b/docs/it/about/index.html index fc17bb70..f09ce987 100644 --- a/docs/it/about/index.html +++ b/docs/it/about/index.html @@ -152,7 +152,7 @@

Ringraziamenti

diff --git a/docs/it/docs/index.html b/docs/it/docs/index.html index 08d8ef64..63987cef 100644 --- a/docs/it/docs/index.html +++ b/docs/it/docs/index.html @@ -76,7 +76,7 @@

Documentazione

Usare Flowlight

-

Tutto, dal primo avvio alla messa a punto delle regole per gli agenti. Flowlight 0.15.5, macOS 15 o successivo.

+

Tutto, dal primo avvio alla messa a punto delle regole per gli agenti. Flowlight 0.15.6, macOS 15 o successivo.

diff --git a/docs/it/index.html b/docs/it/index.html index dce4c12c..1244dc9b 100644 --- a/docs/it/index.html +++ b/docs/it/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

Vedi la rete delle tue app.
Ca Metti una stella su GitHub

brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+UniversaleGPL-3.0Nessuna telemetria

+

v0.15.6macOS 15+UniversaleGPL-3.0Nessuna telemetria

@@ -572,7 +572,7 @@

Sappi che cosa esce dal tuo Mac.

diff --git a/docs/it/privacy/index.html b/docs/it/privacy/index.html index 40eb2eac..973bcda6 100644 --- a/docs/it/privacy/index.html +++ b/docs/it/privacy/index.html @@ -189,7 +189,7 @@

Contatti

diff --git a/docs/it/threat-model/index.html b/docs/it/threat-model/index.html index f0e1d09d..b6f54d6d 100644 --- a/docs/it/threat-model/index.html +++ b/docs/it/threat-model/index.html @@ -223,7 +223,7 @@

Segnalare una vulnerabilità

diff --git a/docs/ja/about/index.html b/docs/ja/about/index.html index 2cbe255d..cf08426a 100644 --- a/docs/ja/about/index.html +++ b/docs/ja/about/index.html @@ -153,7 +153,7 @@

謝辞

diff --git a/docs/ja/docs/index.html b/docs/ja/docs/index.html index febcec14..c9a1acdc 100644 --- a/docs/ja/docs/index.html +++ b/docs/ja/docs/index.html @@ -76,7 +76,7 @@

ドキュメント

Flowlight の使い方

-

初回起動からエージェントのルールの調整まで、すべてここに。Flowlight 0.15.5、macOS 15 以降。

+

初回起動からエージェントのルールの調整まで、すべてここに。Flowlight 0.15.6、macOS 15 以降。

diff --git a/docs/ja/index.html b/docs/ja/index.html index 2f5958a7..1fbfea78 100644 --- a/docs/ja/index.html +++ b/docs/ja/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

アプリの通信が見える。
brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+ユニバーサルGPL-3.0テレメトリなし

+

v0.15.6macOS 15+ユニバーサルGPL-3.0テレメトリなし

@@ -571,7 +571,7 @@

Mac から何が出ていくのかを知る。

diff --git a/docs/ja/privacy/index.html b/docs/ja/privacy/index.html index aee69594..156fa76e 100644 --- a/docs/ja/privacy/index.html +++ b/docs/ja/privacy/index.html @@ -187,7 +187,7 @@

連絡先

diff --git a/docs/ja/threat-model/index.html b/docs/ja/threat-model/index.html index 9d34d735..b54d85b7 100644 --- a/docs/ja/threat-model/index.html +++ b/docs/ja/threat-model/index.html @@ -222,7 +222,7 @@

脆弱性を報告する

diff --git a/docs/ko/about/index.html b/docs/ko/about/index.html index a47efaec..09319d4c 100644 --- a/docs/ko/about/index.html +++ b/docs/ko/about/index.html @@ -153,7 +153,7 @@

감사

diff --git a/docs/ko/docs/index.html b/docs/ko/docs/index.html index 9dbfce0e..8b625c8a 100644 --- a/docs/ko/docs/index.html +++ b/docs/ko/docs/index.html @@ -76,7 +76,7 @@

문서

Flowlight 사용하기

-

첫 실행부터 에이전트 규칙 조정까지 전부. Flowlight 0.15.5, macOS 15 이상.

+

첫 실행부터 에이전트 규칙 조정까지 전부. Flowlight 0.15.6, macOS 15 이상.

diff --git a/docs/ko/index.html b/docs/ko/index.html index b812881a..6b4e4c04 100644 --- a/docs/ko/index.html +++ b/docs/ko/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

앱이 무엇을 하는지 봅니다.

brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+유니버설GPL-3.0텔레메트리 없음

+

v0.15.6macOS 15+유니버설GPL-3.0텔레메트리 없음

@@ -572,7 +572,7 @@

내 Mac에서 무엇이 나가는지 아세요.

diff --git a/docs/ko/privacy/index.html b/docs/ko/privacy/index.html index 35c2df0b..73085658 100644 --- a/docs/ko/privacy/index.html +++ b/docs/ko/privacy/index.html @@ -190,7 +190,7 @@

문의

diff --git a/docs/ko/threat-model/index.html b/docs/ko/threat-model/index.html index 4203bc4f..3a39a54a 100644 --- a/docs/ko/threat-model/index.html +++ b/docs/ko/threat-model/index.html @@ -221,7 +221,7 @@

취약점 신고하기

diff --git a/docs/llms-full.txt b/docs/llms-full.txt index d5947d3a..ca3d0e0d 100644 --- a/docs/llms-full.txt +++ b/docs/llms-full.txt @@ -62,7 +62,7 @@ Documentation Using Flowlight - Everything from the first launch to tuning the agent rules. Flowlight 0.15.5, macOS 15 or later. + Everything from the first launch to tuning the agent rules. Flowlight 0.15.6, macOS 15 or later. On this page @@ -894,7 +894,7 @@ Understand your AI agents. brew install --cask xinbetween/tap/flowlightCopy - v0.15.5macOS 15+UniversalGPL-3.0No telemetry + v0.15.6macOS 15+UniversalGPL-3.0No telemetry connectionslive @@ -1629,8 +1629,21 @@ Releases Downloads, checksums and full notes for each version are on GitHub Releases. + 0.15.6 +October 23, 2026Latest + + Give Xcode Cloud a stable App Store project. The shared XcodeGen project and Store archive scheme are now + committed so Apple can discover the selected container before any cloud build script runs. + + Keep the generated project honest. A repeatable drift gate regenerates the project from + project.yml, canonicalizes XcodeGen’s one equivalent copy-phase ordering, and fails CI if shared project files are + stale while continuing to ignore user-specific and Xcode-managed state. + + Preserve both distribution channels. The committed project builds the sandboxed App Store content-filter + extension and the Developer ID system extension as separate product graphs, with Store packaging checks unchanged. + 0.15.5 -October 22, 2026Latest +October 22, 2026 Keep changed packs visible until fresh consent. A catalog update that disables an active pack now raises a persistent app-wide notice and Rules badge. Changed and removed packs stay off and visible until acknowledged or freshly diff --git a/docs/llms.txt b/docs/llms.txt index f10ea704..dddd8170 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -1,6 +1,6 @@ # Flowlight -> Free, open-source (GPL-3.0) application-aware network monitor for macOS, with focused visibility into AI agents. It attributes observed TCP and UDP activity to the application that made it and records the destination, protocol and byte counts, keeping local history from second to year. Recognized AI agents are listed by name along with the tools and MCP servers they start, under per-agent allowlists. It can also refuse, once asked: a rule blocks an application, a destination or a URL for as long as you specify, and a guardrail withholds a tool from an agent before its model is offered it. Runs on macOS 15 or later; capture is by a sampler or a Network Extension. Current version: 0.15.5. +> Free, open-source (GPL-3.0) application-aware network monitor for macOS, with focused visibility into AI agents. It attributes observed TCP and UDP activity to the application that made it and records the destination, protocol and byte counts, keeping local history from second to year. Recognized AI agents are listed by name along with the tools and MCP servers they start, under per-agent allowlists. It can also refuse, once asked: a rule blocks an application, a destination or a URL for as long as you specify, and a guardrail withholds a tool from an agent before its model is offered it. Runs on macOS 15 or later; capture is by a sampler or a Network Extension. Current version: 0.15.6. - [Download Flowlight.dmg](https://github.com/xinbetween/flowlight/releases/latest/download/Flowlight.dmg) - [Source code](https://github.com/xinbetween/flowlight) diff --git a/docs/plugins/index.html b/docs/plugins/index.html index 313ec311..902083f4 100644 --- a/docs/plugins/index.html +++ b/docs/plugins/index.html @@ -211,7 +211,7 @@

Review checklist

diff --git a/docs/privacy/index.html b/docs/privacy/index.html index 347192ac..d840f74a 100644 --- a/docs/privacy/index.html +++ b/docs/privacy/index.html @@ -196,7 +196,7 @@

Contact

diff --git a/docs/pt-PT/about/index.html b/docs/pt-PT/about/index.html index e2883ebc..fde3bba2 100644 --- a/docs/pt-PT/about/index.html +++ b/docs/pt-PT/about/index.html @@ -152,7 +152,7 @@

Agradecimentos

diff --git a/docs/pt-PT/docs/index.html b/docs/pt-PT/docs/index.html index f905f670..043511d3 100644 --- a/docs/pt-PT/docs/index.html +++ b/docs/pt-PT/docs/index.html @@ -76,7 +76,7 @@

Documentação

Usar o Flowlight

-

Tudo, da primeira abertura ao ajuste das regras dos agentes. Flowlight 0.15.5, macOS 15 ou posterior.

+

Tudo, da primeira abertura ao ajuste das regras dos agentes. Flowlight 0.15.6, macOS 15 ou posterior.

diff --git a/docs/pt-PT/index.html b/docs/pt-PT/index.html index fe88b78e..8f782bf5 100644 --- a/docs/pt-PT/index.html +++ b/docs/pt-PT/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

Veja a atividade de rede das suas apps.

brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+UniversalGPL-3.0Sem telemetria

+

v0.15.6macOS 15+UniversalGPL-3.0Sem telemetria

@@ -572,7 +572,7 @@

Saiba o que sai do seu Mac.

diff --git a/docs/pt-PT/privacy/index.html b/docs/pt-PT/privacy/index.html index f963a4a4..d8ab03c3 100644 --- a/docs/pt-PT/privacy/index.html +++ b/docs/pt-PT/privacy/index.html @@ -189,7 +189,7 @@

Contacto

diff --git a/docs/pt-PT/threat-model/index.html b/docs/pt-PT/threat-model/index.html index 10619b71..6af27c83 100644 --- a/docs/pt-PT/threat-model/index.html +++ b/docs/pt-PT/threat-model/index.html @@ -222,7 +222,7 @@

Comunicar uma vulnerabilidade

diff --git a/docs/releases/index.html b/docs/releases/index.html index 2af01e65..9732c2a0 100644 --- a/docs/releases/index.html +++ b/docs/releases/index.html @@ -28,7 +28,7 @@ - + @@ -61,7 +61,20 @@

What's new

-

0.15.5

Latest
+

0.15.6

Latest
+
    +
  • Give Xcode Cloud a stable App Store project. The shared XcodeGen project and Store archive scheme are now + committed so Apple can discover the selected container before any cloud build script runs.
  • +
  • Keep the generated project honest. A repeatable drift gate regenerates the project from + project.yml, canonicalizes XcodeGen’s one equivalent copy-phase ordering, and fails CI if shared project files are + stale while continuing to ignore user-specific and Xcode-managed state.
  • +
  • Preserve both distribution channels. The committed project builds the sandboxed App Store content-filter + extension and the Developer ID system extension as separate product graphs, with Store packaging checks unchanged.
  • +
+
+ +
+

0.15.5

  • Keep changed packs visible until fresh consent. A catalog update that disables an active pack now raises a persistent app-wide notice and Rules badge. Changed and removed packs stay off and visible until acknowledged or freshly @@ -1310,7 +1323,7 @@

    What's new

diff --git a/docs/sitemap.xml b/docs/sitemap.xml index bfe3b975..9f8edb91 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -5,7 +5,7 @@ https://flowlight.xinbetween.com/2026-10-20 https://flowlight.xinbetween.com/plugins/2026-10-13 https://flowlight.xinbetween.com/privacy/2026-10-20 - https://flowlight.xinbetween.com/releases/2026-10-22 + https://flowlight.xinbetween.com/releases/2026-10-23 https://flowlight.xinbetween.com/threat-model/2026-10-22 https://flowlight.xinbetween.com/de/about/2026-09-26 https://flowlight.xinbetween.com/de/docs/2026-10-22 diff --git a/docs/threat-model/index.html b/docs/threat-model/index.html index 7a3fa269..bd4ed3e9 100644 --- a/docs/threat-model/index.html +++ b/docs/threat-model/index.html @@ -231,7 +231,7 @@

Reporting a vulnerability

diff --git a/docs/zh-Hans/about/index.html b/docs/zh-Hans/about/index.html index 59f54b1b..2e798345 100644 --- a/docs/zh-Hans/about/index.html +++ b/docs/zh-Hans/about/index.html @@ -152,7 +152,7 @@

致谢

diff --git a/docs/zh-Hans/docs/index.html b/docs/zh-Hans/docs/index.html index 6060f6c1..05394e46 100644 --- a/docs/zh-Hans/docs/index.html +++ b/docs/zh-Hans/docs/index.html @@ -76,7 +76,7 @@

文档

使用 Flowlight

-

从第一次启动到调整代理规则,需要的都在这里。Flowlight 0.15.5,macOS 15 或更高版本。

+

从第一次启动到调整代理规则,需要的都在这里。Flowlight 0.15.6,macOS 15 或更高版本。

diff --git a/docs/zh-Hans/index.html b/docs/zh-Hans/index.html index 70c226b0..61c17681 100644 --- a/docs/zh-Hans/index.html +++ b/docs/zh-Hans/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

看清应用的网络活动。

brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+通用架构GPL-3.0无遥测

+

v0.15.6macOS 15+通用架构GPL-3.0无遥测

@@ -569,7 +569,7 @@

知道什么离开了你的 Mac。

diff --git a/docs/zh-Hans/privacy/index.html b/docs/zh-Hans/privacy/index.html index ebacd1af..be20231b 100644 --- a/docs/zh-Hans/privacy/index.html +++ b/docs/zh-Hans/privacy/index.html @@ -187,7 +187,7 @@

联系方式

diff --git a/docs/zh-Hans/threat-model/index.html b/docs/zh-Hans/threat-model/index.html index 1fe3dd17..3a633480 100644 --- a/docs/zh-Hans/threat-model/index.html +++ b/docs/zh-Hans/threat-model/index.html @@ -210,7 +210,7 @@

报告漏洞

diff --git a/docs/zh-Hant/about/index.html b/docs/zh-Hant/about/index.html index b320e7a1..a4c57a6b 100644 --- a/docs/zh-Hant/about/index.html +++ b/docs/zh-Hant/about/index.html @@ -152,7 +152,7 @@

致謝

diff --git a/docs/zh-Hant/docs/index.html b/docs/zh-Hant/docs/index.html index 164dbca9..7f4b6afa 100644 --- a/docs/zh-Hant/docs/index.html +++ b/docs/zh-Hant/docs/index.html @@ -76,7 +76,7 @@

說明文件

使用 Flowlight

-

從第一次啟動到調整代理規則,全都在這裡。Flowlight 0.15.5,macOS 15 或以上版本。

+

從第一次啟動到調整代理規則,全都在這裡。Flowlight 0.15.6,macOS 15 或以上版本。

diff --git a/docs/zh-Hant/index.html b/docs/zh-Hant/index.html index fab1ff4e..40a6a045 100644 --- a/docs/zh-Hant/index.html +++ b/docs/zh-Hant/index.html @@ -48,7 +48,7 @@ - + @@ -90,7 +90,7 @@

看見每個 App 的網路活動。
brew install --cask xinbetween/tap/flowlight

-

v0.15.5macOS 15+通用架構GPL-3.0無遙測

+

v0.15.6macOS 15+通用架構GPL-3.0無遙測

@@ -570,7 +570,7 @@

知道有什麼離開了你的 Mac。

diff --git a/docs/zh-Hant/privacy/index.html b/docs/zh-Hant/privacy/index.html index c3eb5a1b..2a2b0e98 100644 --- a/docs/zh-Hant/privacy/index.html +++ b/docs/zh-Hant/privacy/index.html @@ -187,7 +187,7 @@

聯絡

diff --git a/docs/zh-Hant/threat-model/index.html b/docs/zh-Hant/threat-model/index.html index cd46992f..3b2485b7 100644 --- a/docs/zh-Hant/threat-model/index.html +++ b/docs/zh-Hant/threat-model/index.html @@ -211,7 +211,7 @@

回報漏洞

diff --git a/project.yml b/project.yml index 755e295e..b82da2b1 100644 --- a/project.yml +++ b/project.yml @@ -15,8 +15,8 @@ settings: DEVELOPMENT_TEAM: "" CODE_SIGN_STYLE: Automatic ENABLE_HARDENED_RUNTIME: YES - MARKETING_VERSION: "0.15.5" - CURRENT_PROJECT_VERSION: "50" + MARKETING_VERSION: "0.15.6" + CURRENT_PROJECT_VERSION: "51" configs: AppStore: DEVELOPMENT_TEAM: 38RJUJHKZS diff --git a/scripts/check_xcode_project.sh b/scripts/check_xcode_project.sh new file mode 100755 index 00000000..7bc4d726 --- /dev/null +++ b/scripts/check_xcode_project.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# Regenerates the committed XcodeGen project in isolation and fails if its shared files drift. +set -euo pipefail +cd "$(dirname "$0")/.." + +command -v xcodegen >/dev/null || { + echo "xcodegen is required (brew install xcodegen)." >&2 + exit 1 +} + +mode=${1:-check} +if [[ "$mode" != check && "$mode" != --write ]]; then + echo "usage: scripts/check_xcode_project.sh [--write]" >&2 + exit 2 +fi + +temporary=$(mktemp -d "${TMPDIR:-/tmp}/flowlight-xcode-project.XXXXXX") +trap 'rm -rf "$temporary"' EXIT + +# Copy tracked and nonignored untracked files, including working-tree edits, without build output or Xcode state. +while IFS= read -r -d '' file; do + case "$file" in + Flowlight.xcodeproj/*) continue ;; + esac + [[ -e "$file" || -L "$file" ]] || continue + mkdir -p "$temporary/$(dirname "$file")" + cp -P "$file" "$temporary/$file" +done < <(git ls-files --cached --others --exclude-standard -z) + +( + cd "$temporary" + xcodegen generate >/dev/null + python3 -I scripts/normalize_xcode_project.py +) + +shared=( + "project.pbxproj" + "project.xcworkspace/contents.xcworkspacedata" + "xcshareddata/xcschemes/Flowlight.xcscheme" + "xcshareddata/xcschemes/Flowlight App Store.xcscheme" +) + +if [[ "$mode" == --write ]]; then + for file in "${shared[@]}"; do + mkdir -p "Flowlight.xcodeproj/$(dirname "$file")" + cp "$temporary/Flowlight.xcodeproj/$file" "Flowlight.xcodeproj/$file" + done + echo "Regenerated the committed Xcode project from project.yml." + exit 0 +fi + +changed=0 +for file in "${shared[@]}"; do + expected="$temporary/Flowlight.xcodeproj/$file" + committed="Flowlight.xcodeproj/$file" + if [[ ! -f "$committed" ]] || ! cmp -s "$expected" "$committed"; then + echo "--- $committed" + echo "+++ generated from project.yml" + diff -u "$committed" "$expected" || true + changed=1 + fi +done + +if [[ "$changed" -ne 0 ]]; then + echo "Flowlight.xcodeproj is out of date — run scripts/check_xcode_project.sh --write and commit the shared files." >&2 + exit 1 +fi + +echo "Committed Xcode project matches project.yml." diff --git a/scripts/normalize_xcode_project.py b/scripts/normalize_xcode_project.py new file mode 100755 index 00000000..6b3dc359 --- /dev/null +++ b/scripts/normalize_xcode_project.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +"""Canonicalize XcodeGen's equivalent duplicate copy-phase ordering.""" + +from pathlib import Path +import re +import sys + +PROJECT = Path(__file__).resolve().parents[1] / "Flowlight.xcodeproj/project.pbxproj" +PHASE = re.compile( + r"(?P
\t\t(?P[A-F0-9]{24}) /\* Embed Dependencies \*/ = \{\n)" + r"(?P\t\t\tisa = PBXCopyFilesBuildPhase;\n.*?" + r'\t\t\tname = "Embed Dependencies";\n' + r"\t\t\trunOnlyForDeploymentPostprocessing = 0;\n)" + r"(?P