diff --git a/.github/workflows/build-go-dependency-wrapper.yml b/.github/workflows/build-go-dependency-wrapper.yml new file mode 100644 index 000000000..baf9c93a6 --- /dev/null +++ b/.github/workflows/build-go-dependency-wrapper.yml @@ -0,0 +1,128 @@ +# Builds and publishes the wg-go binaries to this repo when run as a GitHub Workflow. +# The binaries in this repo are compiled without modification from upstream (official WireGuard) sources +# However, if you have security requirements beyond my assertion of "trust me bruh", the code/configs/scripts in this +# repo are 100% auditable and you are welcome to fork it and run it yourself to guarantee and grant yourself +# that wonderfully fluttery feeling of diy, security, and privacy. All the scripts should work automagically +# in their own github workflow context, or with a little effort, you can run it yourself offline. + +name: Go Dependency Wrapper + +on: + workflow_dispatch: + inputs: + update_go_deps: + description: 'Update go dependencies with `go get -u ./...' + required: false + type: boolean + default: false + go_update_patch_only: + description: '(only used if `update_go_deps` is `true`) When updating, only update the patch version.' + required: false + type: boolean + default: true + tag: + description: 'Releases can only be created from tags, so a unique tag is required. This will probably get updated to a versioning syntax in the future.' + required: true + + +jobs: + wg-build: + name: Wireguard Build and Release + runs-on: macos-15 + + concurrency: + # Only allow a single run of this workflow on each branch, automatically cancelling older runs. + group: wg-${{ github.head_ref }} + cancel-in-progress: true + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Determine Tag + id: tag + run: | + set -x + + RAW_TAG="${{ github.event.inputs.tag }}" + TAG=$(echo "$RAW_TAG" | sed 's/[^a-zA-Z0-9._-]/-/g' | sed 's/[-]+/-/g' ) + + echo "RAW_TAG=${RAW_TAG}" >> "$GITHUB_OUTPUT" + echo "TAG=${TAG}" >> "$GITHUB_OUTPUT" + env: + RAW_TAG: ${{ github.event.inputs.tag }} + GITHUB_EVENT_NAME: ${{ github.event_name }} + GITHUB_BASE_BRANCH: ${{ github.base_ref }} + GITHUB_REF: ${{ github.ref }} + + - name: Select Xcode + run: | + sudo xcode-select -s /Applications/Xcode_16.4.app + + - name: Install Dependencies + run: | + brew install go + + - name: Handle Inputs + run: | + set -xoe + + pushd WireGuardGoFoundationSource + + if [[ "$RUN_UPDATES" == "true" ]]; then + UPDATE_COMMAND=("go") + UPDATE_COMMAND+=("get") + + if [[ "$PATCH_ONLY_UPDATES" == "true" ]]; then + UPDATE_COMMAND+=("-u=patch") + else + UPDATE_COMMAND+=("-u") + fi + + UPDATE_COMMAND+=("./...") + fi + + "${UPDATE_COMMAND[@]}" + + popd + + git add WireGuardGoFoundationSource/. + env: + RUN_UPDATES: ${{ github.event.inputs.update_go_deps }} + PATCH_ONLY_UPDATES: ${{ github.event.inputs.go_update_patch_only }} + + - name: Build XCFramework + run: | + set -xoe + + pushd WireGuardGoFoundationSource + make build-xcframework + + zip -ry WireGuardGoFoundation.xcframework.zip WireGuardGoFoundation.xcframework + popd + mv WireGuardGoFoundationSource/WireGuardGoFoundation.xcframework.zip . + + - name: Update Package + run: | + set -xoe + + CHECKSUM=$(swift package compute-checksum WireGuardGoFoundation.xcframework.zip) + NEW_URL="https://github.com/${{ github.repository }}/releases/download/${TAG}/WireGuardGoFoundation.xcframework.zip" + + sed -i "" "s|let url = \".*\"|let url = \"$NEW_URL\"|" Package.swift + sed -i "" "s|let checksum = \".*\"|let checksum = \"$CHECKSUM\"|" Package.swift + + git add Package.swift + git commit -m "Release ${TAG}" + git push origin HEAD:master + git tag ${TAG} + git push origin ${TAG} + env: + TAG: ${{ steps.tag.outputs.TAG }} + + - name: Release + uses: softprops/action-gh-release@v2 + with: + files: WireGuardGoFoundation.xcframework.zip + make_latest: true + tag_name: ${{ steps.tag.outputs.TAG }} diff --git a/.gitignore b/.gitignore index 7cab9f377..0aa51a2c2 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ Sources/WireGuardApp/Config/Developer.xcconfig # Vim .*.sw* +*.profraw diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..571f52944 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,19 @@ +## MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/MOBILECONFIG.md b/Legacy Example Code/MOBILECONFIG.md similarity index 100% rename from MOBILECONFIG.md rename to Legacy Example Code/MOBILECONFIG.md diff --git a/Sources/WireGuardApp/Base.lproj/InfoPlist.strings b/Legacy Example Code/WireGuardApp/Base.lproj/InfoPlist.strings similarity index 100% rename from Sources/WireGuardApp/Base.lproj/InfoPlist.strings rename to Legacy Example Code/WireGuardApp/Base.lproj/InfoPlist.strings diff --git a/Sources/WireGuardApp/Base.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/Base.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/Base.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/Base.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/Config/Config.xcconfig b/Legacy Example Code/WireGuardApp/Config/Config.xcconfig similarity index 100% rename from Sources/WireGuardApp/Config/Config.xcconfig rename to Legacy Example Code/WireGuardApp/Config/Config.xcconfig diff --git a/Sources/WireGuardApp/Config/Developer.xcconfig.template b/Legacy Example Code/WireGuardApp/Config/Developer.xcconfig.template similarity index 100% rename from Sources/WireGuardApp/Config/Developer.xcconfig.template rename to Legacy Example Code/WireGuardApp/Config/Developer.xcconfig.template diff --git a/Sources/WireGuardApp/Config/Version.xcconfig b/Legacy Example Code/WireGuardApp/Config/Version.xcconfig similarity index 100% rename from Sources/WireGuardApp/Config/Version.xcconfig rename to Legacy Example Code/WireGuardApp/Config/Version.xcconfig diff --git a/Sources/WireGuardApp/LocalizationHelper.swift b/Legacy Example Code/WireGuardApp/LocalizationHelper.swift similarity index 100% rename from Sources/WireGuardApp/LocalizationHelper.swift rename to Legacy Example Code/WireGuardApp/LocalizationHelper.swift diff --git a/Sources/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_22x29.png b/Legacy Example Code/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_22x29.png similarity index 100% rename from Sources/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_22x29.png rename to Legacy Example Code/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_22x29.png diff --git a/Sources/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_320x320.png b/Legacy Example Code/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_320x320.png similarity index 100% rename from Sources/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_320x320.png rename to Legacy Example Code/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_320x320.png diff --git a/Sources/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_44x58.png b/Legacy Example Code/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_44x58.png similarity index 100% rename from Sources/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_44x58.png rename to Legacy Example Code/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_44x58.png diff --git a/Sources/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_64x64.png b/Legacy Example Code/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_64x64.png similarity index 100% rename from Sources/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_64x64.png rename to Legacy Example Code/WireGuardApp/Resources/DocumentIcons/wireguard_doc_logo_64x64.png diff --git a/Sources/WireGuardApp/Tunnel/ActivateOnDemandOption.swift b/Legacy Example Code/WireGuardApp/Tunnel/ActivateOnDemandOption.swift similarity index 100% rename from Sources/WireGuardApp/Tunnel/ActivateOnDemandOption.swift rename to Legacy Example Code/WireGuardApp/Tunnel/ActivateOnDemandOption.swift diff --git a/Sources/WireGuardApp/Tunnel/MockTunnels.swift b/Legacy Example Code/WireGuardApp/Tunnel/MockTunnels.swift similarity index 100% rename from Sources/WireGuardApp/Tunnel/MockTunnels.swift rename to Legacy Example Code/WireGuardApp/Tunnel/MockTunnels.swift diff --git a/Sources/WireGuardApp/Tunnel/TunnelConfiguration+UapiConfig.swift b/Legacy Example Code/WireGuardApp/Tunnel/TunnelConfiguration+UapiConfig.swift similarity index 100% rename from Sources/WireGuardApp/Tunnel/TunnelConfiguration+UapiConfig.swift rename to Legacy Example Code/WireGuardApp/Tunnel/TunnelConfiguration+UapiConfig.swift diff --git a/Sources/WireGuardApp/Tunnel/TunnelErrors.swift b/Legacy Example Code/WireGuardApp/Tunnel/TunnelErrors.swift similarity index 100% rename from Sources/WireGuardApp/Tunnel/TunnelErrors.swift rename to Legacy Example Code/WireGuardApp/Tunnel/TunnelErrors.swift diff --git a/Sources/WireGuardApp/Tunnel/TunnelStatus.swift b/Legacy Example Code/WireGuardApp/Tunnel/TunnelStatus.swift similarity index 100% rename from Sources/WireGuardApp/Tunnel/TunnelStatus.swift rename to Legacy Example Code/WireGuardApp/Tunnel/TunnelStatus.swift diff --git a/Sources/WireGuardApp/Tunnel/TunnelsManager.swift b/Legacy Example Code/WireGuardApp/Tunnel/TunnelsManager.swift similarity index 100% rename from Sources/WireGuardApp/Tunnel/TunnelsManager.swift rename to Legacy Example Code/WireGuardApp/Tunnel/TunnelsManager.swift diff --git a/Sources/WireGuardApp/UI/ActivateOnDemandViewModel.swift b/Legacy Example Code/WireGuardApp/UI/ActivateOnDemandViewModel.swift similarity index 100% rename from Sources/WireGuardApp/UI/ActivateOnDemandViewModel.swift rename to Legacy Example Code/WireGuardApp/UI/ActivateOnDemandViewModel.swift diff --git a/Sources/WireGuardApp/UI/ErrorPresenterProtocol.swift b/Legacy Example Code/WireGuardApp/UI/ErrorPresenterProtocol.swift similarity index 100% rename from Sources/WireGuardApp/UI/ErrorPresenterProtocol.swift rename to Legacy Example Code/WireGuardApp/UI/ErrorPresenterProtocol.swift diff --git a/Sources/WireGuardApp/UI/LogViewHelper.swift b/Legacy Example Code/WireGuardApp/UI/LogViewHelper.swift similarity index 100% rename from Sources/WireGuardApp/UI/LogViewHelper.swift rename to Legacy Example Code/WireGuardApp/UI/LogViewHelper.swift diff --git a/Sources/WireGuardApp/UI/PrivateDataConfirmation.swift b/Legacy Example Code/WireGuardApp/UI/PrivateDataConfirmation.swift similarity index 100% rename from Sources/WireGuardApp/UI/PrivateDataConfirmation.swift rename to Legacy Example Code/WireGuardApp/UI/PrivateDataConfirmation.swift diff --git a/Sources/WireGuardApp/UI/TunnelImporter.swift b/Legacy Example Code/WireGuardApp/UI/TunnelImporter.swift similarity index 100% rename from Sources/WireGuardApp/UI/TunnelImporter.swift rename to Legacy Example Code/WireGuardApp/UI/TunnelImporter.swift diff --git a/Sources/WireGuardApp/UI/TunnelViewModel.swift b/Legacy Example Code/WireGuardApp/UI/TunnelViewModel.swift similarity index 100% rename from Sources/WireGuardApp/UI/TunnelViewModel.swift rename to Legacy Example Code/WireGuardApp/UI/TunnelViewModel.swift diff --git a/Sources/WireGuardApp/UI/iOS/AppDelegate.swift b/Legacy Example Code/WireGuardApp/UI/iOS/AppDelegate.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/AppDelegate.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/AppDelegate.swift diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@1x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@1x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@1x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@2x-1.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@2x-1.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@2x-1.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@2x-1.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@2x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@2x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@2x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@3x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@3x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_20pt@3x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@1x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@1x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@1x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@2x-1.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@2x-1.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@2x-1.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@2x-1.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@2x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@2x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@2x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@3x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@3x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_29pt@3x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@1x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@1x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@1x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@2x-1.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@2x-1.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@2x-1.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@2x-1.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@2x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@2x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@2x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@3x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@3x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_40pt@3x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_60pt@2x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_60pt@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_60pt@2x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_60pt@2x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_60pt@3x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_60pt@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_60pt@3x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_60pt@3x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_76pt@1x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_76pt@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_76pt@1x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_76pt@1x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_76pt@2x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_76pt@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_76pt@2x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_76pt@2x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_83.5pt@2x.png b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_83.5pt@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_83.5pt@2x.png rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/AppIcon.appiconset/wireguard_logo_83.5pt@2x.png diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/Contents.json b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/Contents.json rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/Contents.json diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/wireguard.imageset/Contents.json b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/wireguard.imageset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/wireguard.imageset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/wireguard.imageset/Contents.json diff --git a/Sources/WireGuardApp/UI/iOS/Assets.xcassets/wireguard.imageset/wireguard.pdf b/Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/wireguard.imageset/wireguard.pdf similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Assets.xcassets/wireguard.imageset/wireguard.pdf rename to Legacy Example Code/WireGuardApp/UI/iOS/Assets.xcassets/wireguard.imageset/wireguard.pdf diff --git a/Sources/WireGuardApp/UI/iOS/Base.lproj/LaunchScreen.storyboard b/Legacy Example Code/WireGuardApp/UI/iOS/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Base.lproj/LaunchScreen.storyboard rename to Legacy Example Code/WireGuardApp/UI/iOS/Base.lproj/LaunchScreen.storyboard diff --git a/Sources/WireGuardApp/UI/iOS/ConfirmationAlertPresenter.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ConfirmationAlertPresenter.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ConfirmationAlertPresenter.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ConfirmationAlertPresenter.swift diff --git a/Sources/WireGuardApp/UI/iOS/ErrorPresenter.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ErrorPresenter.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ErrorPresenter.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ErrorPresenter.swift diff --git a/Sources/WireGuardApp/UI/iOS/Info.plist b/Legacy Example Code/WireGuardApp/UI/iOS/Info.plist similarity index 100% rename from Sources/WireGuardApp/UI/iOS/Info.plist rename to Legacy Example Code/WireGuardApp/UI/iOS/Info.plist diff --git a/Sources/WireGuardApp/UI/iOS/QuickActionItem.swift b/Legacy Example Code/WireGuardApp/UI/iOS/QuickActionItem.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/QuickActionItem.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/QuickActionItem.swift diff --git a/Sources/WireGuardApp/UI/iOS/RecentTunnelsTracker.swift b/Legacy Example Code/WireGuardApp/UI/iOS/RecentTunnelsTracker.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/RecentTunnelsTracker.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/RecentTunnelsTracker.swift diff --git a/Sources/WireGuardApp/UI/iOS/UITableViewCell+Reuse.swift b/Legacy Example Code/WireGuardApp/UI/iOS/UITableViewCell+Reuse.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/UITableViewCell+Reuse.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/UITableViewCell+Reuse.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/BorderedTextButton.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/BorderedTextButton.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/BorderedTextButton.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/BorderedTextButton.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/ButtonCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/ButtonCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/ButtonCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/ButtonCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/CheckmarkCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/CheckmarkCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/CheckmarkCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/CheckmarkCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/ChevronCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/ChevronCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/ChevronCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/ChevronCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/EditableTextCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/EditableTextCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/EditableTextCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/EditableTextCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/KeyValueCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/KeyValueCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/KeyValueCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/KeyValueCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/SwitchCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/SwitchCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/SwitchCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/SwitchCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/TextCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/TextCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/TextCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/TextCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/TunnelEditKeyValueCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/TunnelEditKeyValueCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/TunnelEditKeyValueCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/TunnelEditKeyValueCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/View/TunnelListCell.swift b/Legacy Example Code/WireGuardApp/UI/iOS/View/TunnelListCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/View/TunnelListCell.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/View/TunnelListCell.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/LogViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/LogViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/LogViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/LogViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/MainViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/MainViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/MainViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/MainViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/QRScanViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/QRScanViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/QRScanViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/QRScanViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/SSIDOptionDetailTableViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/SSIDOptionDetailTableViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/SSIDOptionDetailTableViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/SSIDOptionDetailTableViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/SSIDOptionEditTableViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/SSIDOptionEditTableViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/SSIDOptionEditTableViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/SSIDOptionEditTableViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/SettingsTableViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/SettingsTableViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/SettingsTableViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/SettingsTableViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/TunnelDetailTableViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/TunnelDetailTableViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/TunnelDetailTableViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/TunnelDetailTableViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/TunnelEditTableViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/TunnelEditTableViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/TunnelEditTableViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/TunnelEditTableViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/ViewController/TunnelsListTableViewController.swift b/Legacy Example Code/WireGuardApp/UI/iOS/ViewController/TunnelsListTableViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/iOS/ViewController/TunnelsListTableViewController.swift rename to Legacy Example Code/WireGuardApp/UI/iOS/ViewController/TunnelsListTableViewController.swift diff --git a/Sources/WireGuardApp/UI/iOS/WireGuard.entitlements b/Legacy Example Code/WireGuardApp/UI/iOS/WireGuard.entitlements similarity index 100% rename from Sources/WireGuardApp/UI/iOS/WireGuard.entitlements rename to Legacy Example Code/WireGuardApp/UI/iOS/WireGuard.entitlements diff --git a/Sources/WireGuardApp/UI/macOS/AppDelegate.swift b/Legacy Example Code/WireGuardApp/UI/macOS/AppDelegate.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/AppDelegate.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/AppDelegate.swift diff --git a/Sources/WireGuardApp/UI/macOS/Application.swift b/Legacy Example Code/WireGuardApp/UI/macOS/Application.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Application.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/Application.swift diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon128.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon128.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon128.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon128.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon16.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon16.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon16.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon16.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon256-1.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon256-1.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon256-1.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon256-1.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon256.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon256.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon256.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon256.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon32-1.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon32-1.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon32-1.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon32-1.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon32.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon32.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon32.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon32.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon512-1.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon512-1.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon512-1.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon512-1.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon512.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon512.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon512.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon512.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon64.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon64.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon64.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/AppIcon.appiconset/WireGuardMacAppIcon64.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/Contents.json b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/Contents.json rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/Contents.json diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/Contents.json b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/Contents.json diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@1x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@1x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@1x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@2x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@2x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@2x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@3x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@3x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIcon.imageset/StatusBarIcon@3x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/Contents.json b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/Contents.json diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@1x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@1x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@1x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@2x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@2x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@2x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@3x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@3x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDimmed.imageset/StatusBarIconDimmed@3x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/Contents.json b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/Contents.json diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@1x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@1x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@1x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@2x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@2x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@2x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@3x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@3x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot1.imageset/StatusBarIconDot1@3x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/Contents.json b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/Contents.json diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@1x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@1x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@1x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@2x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@2x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@2x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@3x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@3x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot2.imageset/StatusBarIconDot2@3x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/Contents.json b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/Contents.json diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@1x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@1x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@1x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@2x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@2x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@2x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@3x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@3x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@3x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusBarIconDot3.imageset/StatusBarIconDot3@3x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/Contents.json b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/Contents.json similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/Contents.json rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/Contents.json diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/StatusCircleYellow@1x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/StatusCircleYellow@1x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/StatusCircleYellow@1x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/StatusCircleYellow@1x.png diff --git a/Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/StatusCircleYellow@2x.png b/Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/StatusCircleYellow@2x.png similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/StatusCircleYellow@2x.png rename to Legacy Example Code/WireGuardApp/UI/macOS/Assets.xcassets/StatusCircleYellow.imageset/StatusCircleYellow@2x.png diff --git a/Sources/WireGuardApp/UI/macOS/ErrorPresenter.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ErrorPresenter.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ErrorPresenter.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ErrorPresenter.swift diff --git a/Sources/WireGuardApp/UI/macOS/ImportPanelPresenter.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ImportPanelPresenter.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ImportPanelPresenter.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ImportPanelPresenter.swift diff --git a/Sources/WireGuardApp/UI/macOS/Info.plist b/Legacy Example Code/WireGuardApp/UI/macOS/Info.plist similarity index 100% rename from Sources/WireGuardApp/UI/macOS/Info.plist rename to Legacy Example Code/WireGuardApp/UI/macOS/Info.plist diff --git a/Sources/WireGuardApp/UI/macOS/LaunchedAtLoginDetector.swift b/Legacy Example Code/WireGuardApp/UI/macOS/LaunchedAtLoginDetector.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/LaunchedAtLoginDetector.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/LaunchedAtLoginDetector.swift diff --git a/Sources/WireGuardApp/UI/macOS/LoginItemHelper/Info.plist b/Legacy Example Code/WireGuardApp/UI/macOS/LoginItemHelper/Info.plist similarity index 100% rename from Sources/WireGuardApp/UI/macOS/LoginItemHelper/Info.plist rename to Legacy Example Code/WireGuardApp/UI/macOS/LoginItemHelper/Info.plist diff --git a/Sources/WireGuardApp/UI/macOS/LoginItemHelper/LoginItemHelper.entitlements b/Legacy Example Code/WireGuardApp/UI/macOS/LoginItemHelper/LoginItemHelper.entitlements similarity index 100% rename from Sources/WireGuardApp/UI/macOS/LoginItemHelper/LoginItemHelper.entitlements rename to Legacy Example Code/WireGuardApp/UI/macOS/LoginItemHelper/LoginItemHelper.entitlements diff --git a/Sources/WireGuardApp/UI/macOS/LoginItemHelper/main.m b/Legacy Example Code/WireGuardApp/UI/macOS/LoginItemHelper/main.m similarity index 100% rename from Sources/WireGuardApp/UI/macOS/LoginItemHelper/main.m rename to Legacy Example Code/WireGuardApp/UI/macOS/LoginItemHelper/main.m diff --git a/Sources/WireGuardApp/UI/macOS/MacAppStoreUpdateDetector.swift b/Legacy Example Code/WireGuardApp/UI/macOS/MacAppStoreUpdateDetector.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/MacAppStoreUpdateDetector.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/MacAppStoreUpdateDetector.swift diff --git a/Sources/WireGuardApp/UI/macOS/MainMenu.swift b/Legacy Example Code/WireGuardApp/UI/macOS/MainMenu.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/MainMenu.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/MainMenu.swift diff --git a/Sources/WireGuardApp/UI/macOS/NSColor+Hex.swift b/Legacy Example Code/WireGuardApp/UI/macOS/NSColor+Hex.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/NSColor+Hex.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/NSColor+Hex.swift diff --git a/Sources/WireGuardApp/UI/macOS/NSTableView+Reuse.swift b/Legacy Example Code/WireGuardApp/UI/macOS/NSTableView+Reuse.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/NSTableView+Reuse.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/NSTableView+Reuse.swift diff --git a/Sources/WireGuardApp/UI/macOS/ParseError+WireGuardAppError.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ParseError+WireGuardAppError.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ParseError+WireGuardAppError.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ParseError+WireGuardAppError.swift diff --git a/Sources/WireGuardApp/UI/macOS/StatusItemController.swift b/Legacy Example Code/WireGuardApp/UI/macOS/StatusItemController.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/StatusItemController.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/StatusItemController.swift diff --git a/Sources/WireGuardApp/UI/macOS/StatusMenu.swift b/Legacy Example Code/WireGuardApp/UI/macOS/StatusMenu.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/StatusMenu.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/StatusMenu.swift diff --git a/Sources/WireGuardApp/UI/macOS/TunnelsTracker.swift b/Legacy Example Code/WireGuardApp/UI/macOS/TunnelsTracker.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/TunnelsTracker.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/TunnelsTracker.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/ButtonRow.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/ButtonRow.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/ButtonRow.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/ButtonRow.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/ConfTextColorTheme.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/ConfTextColorTheme.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/ConfTextColorTheme.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/ConfTextColorTheme.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/ConfTextStorage.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/ConfTextStorage.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/ConfTextStorage.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/ConfTextStorage.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/ConfTextView.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/ConfTextView.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/ConfTextView.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/ConfTextView.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/DeleteTunnelsConfirmationAlert.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/DeleteTunnelsConfirmationAlert.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/DeleteTunnelsConfirmationAlert.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/DeleteTunnelsConfirmationAlert.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/KeyValueRow.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/KeyValueRow.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/KeyValueRow.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/KeyValueRow.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/LogViewCell.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/LogViewCell.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/LogViewCell.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/LogViewCell.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/OnDemandWiFiControls.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/OnDemandWiFiControls.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/OnDemandWiFiControls.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/OnDemandWiFiControls.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/TunnelListRow.swift b/Legacy Example Code/WireGuardApp/UI/macOS/View/TunnelListRow.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/TunnelListRow.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/View/TunnelListRow.swift diff --git a/Sources/WireGuardApp/UI/macOS/View/highlighter.c b/Legacy Example Code/WireGuardApp/UI/macOS/View/highlighter.c similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/highlighter.c rename to Legacy Example Code/WireGuardApp/UI/macOS/View/highlighter.c diff --git a/Sources/WireGuardApp/UI/macOS/View/highlighter.h b/Legacy Example Code/WireGuardApp/UI/macOS/View/highlighter.h similarity index 100% rename from Sources/WireGuardApp/UI/macOS/View/highlighter.h rename to Legacy Example Code/WireGuardApp/UI/macOS/View/highlighter.h diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/ButtonedDetailViewController.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ViewController/ButtonedDetailViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ViewController/ButtonedDetailViewController.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ViewController/ButtonedDetailViewController.swift diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/LogViewController.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ViewController/LogViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ViewController/LogViewController.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ViewController/LogViewController.swift diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/ManageTunnelsRootViewController.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ViewController/ManageTunnelsRootViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ViewController/ManageTunnelsRootViewController.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ViewController/ManageTunnelsRootViewController.swift diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/TunnelDetailTableViewController.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ViewController/TunnelDetailTableViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ViewController/TunnelDetailTableViewController.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ViewController/TunnelDetailTableViewController.swift diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/TunnelEditViewController.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ViewController/TunnelEditViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ViewController/TunnelEditViewController.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ViewController/TunnelEditViewController.swift diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/TunnelsListTableViewController.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ViewController/TunnelsListTableViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ViewController/TunnelsListTableViewController.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ViewController/TunnelsListTableViewController.swift diff --git a/Sources/WireGuardApp/UI/macOS/ViewController/UnusableTunnelDetailViewController.swift b/Legacy Example Code/WireGuardApp/UI/macOS/ViewController/UnusableTunnelDetailViewController.swift similarity index 100% rename from Sources/WireGuardApp/UI/macOS/ViewController/UnusableTunnelDetailViewController.swift rename to Legacy Example Code/WireGuardApp/UI/macOS/ViewController/UnusableTunnelDetailViewController.swift diff --git a/Sources/WireGuardApp/UI/macOS/WireGuard.entitlements b/Legacy Example Code/WireGuardApp/UI/macOS/WireGuard.entitlements similarity index 100% rename from Sources/WireGuardApp/UI/macOS/WireGuard.entitlements rename to Legacy Example Code/WireGuardApp/UI/macOS/WireGuard.entitlements diff --git a/Sources/WireGuardApp/WireGuard-Bridging-Header.h b/Legacy Example Code/WireGuardApp/WireGuard-Bridging-Header.h similarity index 100% rename from Sources/WireGuardApp/WireGuard-Bridging-Header.h rename to Legacy Example Code/WireGuardApp/WireGuard-Bridging-Header.h diff --git a/Sources/WireGuardApp/WireGuardAppError.swift b/Legacy Example Code/WireGuardApp/WireGuardAppError.swift similarity index 100% rename from Sources/WireGuardApp/WireGuardAppError.swift rename to Legacy Example Code/WireGuardApp/WireGuardAppError.swift diff --git a/Sources/WireGuardApp/WireGuardResult.swift b/Legacy Example Code/WireGuardApp/WireGuardResult.swift similarity index 100% rename from Sources/WireGuardApp/WireGuardResult.swift rename to Legacy Example Code/WireGuardApp/WireGuardResult.swift diff --git a/Sources/WireGuardApp/ZipArchive/3rdparty/minizip/MiniZip64_info.txt b/Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/MiniZip64_info.txt similarity index 100% rename from Sources/WireGuardApp/ZipArchive/3rdparty/minizip/MiniZip64_info.txt rename to Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/MiniZip64_info.txt diff --git a/Sources/WireGuardApp/ZipArchive/3rdparty/minizip/ioapi.c b/Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/ioapi.c similarity index 100% rename from Sources/WireGuardApp/ZipArchive/3rdparty/minizip/ioapi.c rename to Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/ioapi.c diff --git a/Sources/WireGuardApp/ZipArchive/3rdparty/minizip/ioapi.h b/Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/ioapi.h similarity index 100% rename from Sources/WireGuardApp/ZipArchive/3rdparty/minizip/ioapi.h rename to Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/ioapi.h diff --git a/Sources/WireGuardApp/ZipArchive/3rdparty/minizip/unzip.c b/Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/unzip.c similarity index 100% rename from Sources/WireGuardApp/ZipArchive/3rdparty/minizip/unzip.c rename to Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/unzip.c diff --git a/Sources/WireGuardApp/ZipArchive/3rdparty/minizip/unzip.h b/Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/unzip.h similarity index 100% rename from Sources/WireGuardApp/ZipArchive/3rdparty/minizip/unzip.h rename to Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/unzip.h diff --git a/Sources/WireGuardApp/ZipArchive/3rdparty/minizip/zip.c b/Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/zip.c similarity index 100% rename from Sources/WireGuardApp/ZipArchive/3rdparty/minizip/zip.c rename to Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/zip.c diff --git a/Sources/WireGuardApp/ZipArchive/3rdparty/minizip/zip.h b/Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/zip.h similarity index 100% rename from Sources/WireGuardApp/ZipArchive/3rdparty/minizip/zip.h rename to Legacy Example Code/WireGuardApp/ZipArchive/3rdparty/minizip/zip.h diff --git a/Sources/WireGuardApp/ZipArchive/ZipArchive.swift b/Legacy Example Code/WireGuardApp/ZipArchive/ZipArchive.swift similarity index 100% rename from Sources/WireGuardApp/ZipArchive/ZipArchive.swift rename to Legacy Example Code/WireGuardApp/ZipArchive/ZipArchive.swift diff --git a/Sources/WireGuardApp/ZipArchive/ZipExporter.swift b/Legacy Example Code/WireGuardApp/ZipArchive/ZipExporter.swift similarity index 100% rename from Sources/WireGuardApp/ZipArchive/ZipExporter.swift rename to Legacy Example Code/WireGuardApp/ZipArchive/ZipExporter.swift diff --git a/Sources/WireGuardApp/ZipArchive/ZipImporter.swift b/Legacy Example Code/WireGuardApp/ZipArchive/ZipImporter.swift similarity index 100% rename from Sources/WireGuardApp/ZipArchive/ZipImporter.swift rename to Legacy Example Code/WireGuardApp/ZipArchive/ZipImporter.swift diff --git a/Sources/WireGuardApp/ca.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/ca.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/ca.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/ca.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/de.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/de.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/de.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/de.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/es.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/es.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/es.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/es.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/fa.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/fa.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/fa.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/fa.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/fi.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/fi.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/fi.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/fi.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/fr.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/fr.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/fr.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/fr.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/id.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/id.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/id.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/id.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/it.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/it.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/it.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/it.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/ja.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/ja.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/ja.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/ja.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/ko.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/ko.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/ko.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/ko.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/pa.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/pa.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/pa.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/pa.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/pl.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/pl.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/pl.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/pl.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/ro.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/ro.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/ro.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/ro.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/ru.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/ru.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/ru.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/ru.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/sl.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/sl.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/sl.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/sl.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/tr.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/tr.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/tr.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/tr.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/zh-Hans.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/zh-Hans.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/zh-Hans.lproj/Localizable.strings diff --git a/Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings b/Legacy Example Code/WireGuardApp/zh-Hant.lproj/Localizable.strings similarity index 100% rename from Sources/WireGuardApp/zh-Hant.lproj/Localizable.strings rename to Legacy Example Code/WireGuardApp/zh-Hant.lproj/Localizable.strings diff --git a/Sources/WireGuardNetworkExtension/ErrorNotifier.swift b/Legacy Example Code/WireGuardNetworkExtension/ErrorNotifier.swift similarity index 100% rename from Sources/WireGuardNetworkExtension/ErrorNotifier.swift rename to Legacy Example Code/WireGuardNetworkExtension/ErrorNotifier.swift diff --git a/Sources/WireGuardNetworkExtension/Info.plist b/Legacy Example Code/WireGuardNetworkExtension/Info.plist similarity index 100% rename from Sources/WireGuardNetworkExtension/Info.plist rename to Legacy Example Code/WireGuardNetworkExtension/Info.plist diff --git a/Sources/WireGuardNetworkExtension/PacketTunnelProvider.swift b/Legacy Example Code/WireGuardNetworkExtension/PacketTunnelProvider.swift similarity index 100% rename from Sources/WireGuardNetworkExtension/PacketTunnelProvider.swift rename to Legacy Example Code/WireGuardNetworkExtension/PacketTunnelProvider.swift diff --git a/Sources/WireGuardNetworkExtension/WireGuardNetworkExtension-Bridging-Header.h b/Legacy Example Code/WireGuardNetworkExtension/WireGuardNetworkExtension-Bridging-Header.h similarity index 100% rename from Sources/WireGuardNetworkExtension/WireGuardNetworkExtension-Bridging-Header.h rename to Legacy Example Code/WireGuardNetworkExtension/WireGuardNetworkExtension-Bridging-Header.h diff --git a/Sources/WireGuardNetworkExtension/WireGuardNetworkExtension_iOS.entitlements b/Legacy Example Code/WireGuardNetworkExtension/WireGuardNetworkExtension_iOS.entitlements similarity index 100% rename from Sources/WireGuardNetworkExtension/WireGuardNetworkExtension_iOS.entitlements rename to Legacy Example Code/WireGuardNetworkExtension/WireGuardNetworkExtension_iOS.entitlements diff --git a/Sources/WireGuardNetworkExtension/WireGuardNetworkExtension_macOS.entitlements b/Legacy Example Code/WireGuardNetworkExtension/WireGuardNetworkExtension_macOS.entitlements similarity index 100% rename from Sources/WireGuardNetworkExtension/WireGuardNetworkExtension_macOS.entitlements rename to Legacy Example Code/WireGuardNetworkExtension/WireGuardNetworkExtension_macOS.entitlements diff --git a/sync-translations.sh b/Legacy Example Code/sync-translations.sh similarity index 100% rename from sync-translations.sh rename to Legacy Example Code/sync-translations.sh diff --git a/Package.swift b/Package.swift index 5d15a1b0d..088c69430 100644 --- a/Package.swift +++ b/Package.swift @@ -1,13 +1,16 @@ -// swift-tools-version:5.3 +// swift-tools-version:5.10 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription +let url = "https://github.com/ridgelineinternational/wireguard-apple-xcframework/releases/download/0.0.7/WireGuardGoFoundation.xcframework.zip" +let checksum = "9cf2b8e63e92bcb21ff0c453c10afa1977992f1aea38e28b9bf5be5804beab0e" + let package = Package( name: "WireGuardKit", platforms: [ - .macOS(.v12), - .iOS(.v15) + .macOS(.v13), + .iOS(.v16) ], products: [ .library(name: "WireGuardKit", targets: ["WireGuardKit"]) @@ -16,25 +19,13 @@ let package = Package( targets: [ .target( name: "WireGuardKit", - dependencies: ["WireGuardKitGo", "WireGuardKitC"] + dependencies: ["WireGuardGoFoundation", "WireGuardKitC"] ), .target( name: "WireGuardKitC", dependencies: [], publicHeadersPath: "." ), - .target( - name: "WireGuardKitGo", - dependencies: [], - exclude: [ - "goruntime-boottime-over-monotonic.diff", - "go.mod", - "go.sum", - "api-apple.go", - "Makefile" - ], - publicHeadersPath: ".", - linkerSettings: [.linkedLibrary("wg-go")] - ) + .binaryTarget(name: "WireGuardGoFoundation", url: url, checksum: checksum) ] ) diff --git a/README.md b/README.md index 2efc5d459..2a307380e 100644 --- a/README.md +++ b/README.md @@ -1,99 +1,167 @@ -# [WireGuard](https://www.wireguard.com/) for iOS and macOS +# WireGuardKit - Swift Package for iOS and macOS -This project contains an application for iOS and for macOS, as well as many components shared between the two of them. You may toggle between the two platforms by selecting the target from within Xcode. +A Swift Package Manager library providing [WireGuard](https://www.wireguard.com/) VPN functionality for iOS and macOS applications. This package wraps the official WireGuard-Go implementation in an easy-to-use Swift interface with prebuilt XCFramework binaries. -## Building +## Overview -- Clone this repo: +This project consists of two main components: -``` -$ git clone https://git.zx2c4.com/wireguard-apple -$ cd wireguard-apple -``` +1. **Go Foundation Layer** (`WireGuardGoFoundationSource/`) - A thin Go shim around the official WireGuard implementation, compiled into native XCFramework binaries for iOS, iOS Simulator, and macOS +2. **Swift Package** - Swift wrapper providing a clean API for WireGuard functionality -- Rename and populate developer team ID file: +The package uses **prebuilt binaries** distributed via GitHub Releases, so consumers don't need Go installed or need to compile anything themselves. -``` -$ cp Sources/WireGuardApp/Config/Developer.xcconfig.template Sources/WireGuardApp/Config/Developer.xcconfig -$ vim Sources/WireGuardApp/Config/Developer.xcconfig -``` +## Platform Support -- Install swiftlint and go 1.19: +- **iOS**: 16.0+ +- **macOS**: 13.0+ +- **iOS Simulator**: arm64, x86_64 -``` -$ brew install swiftlint go -``` +## Installation -- Open project in Xcode: +### Swift Package Manager +Add this package to your Xcode project or `Package.swift`: + +```swift +dependencies: [ + .package(url: "https://github.com/ridgelineinternational/wireguard-apple-xcframework.git", from: "0.0.5") +] ``` -$ open WireGuard.xcodeproj + +Then add `WireGuardKit` as a dependency to your target: + +```swift +.target( + name: "YourTarget", + dependencies: ["WireGuardKit"] +) ``` -- Flip switches, press buttons, and make whirling noises until Xcode builds it. +## Project Structure -## WireGuardKit integration +### Library Components (Active) -1. Open your Xcode project and add the Swift package with the following URL: - +- **`Sources/WireGuardKit/`** - Swift library code providing the main WireGuardKit API (this is what you import in your projects) +- **`Sources/WireGuardKitC/`** - C bridge layer connecting Swift to Go +- **`Sources/Shared/`** - Shared utilities (logging, models, keychain helpers) +- **`WireGuardGoFoundationSource/`** - Go shim + build system for the native XCFramework + +### Build Infrastructure + +- **`Package.swift`** - Swift Package Manager manifest +- **`.github/workflows/`** - GitHub Actions for building and releasing +- **`WireGuardGoFoundationSource/Makefile`** - Build system for compiling Go code into XCFramework + +### Legacy Code + +- **`Legacy Example Code/`** - Contains the original WireGuard iOS/macOS applications, network extension implementations, and related tooling. Preserved for reference but not used by the library. + +## Building the XCFramework + +> **Note**: Most users don't need to build anything - just add the package as a dependency and Swift Package Manager will download the prebuilt XCFramework. + +If you need to build from source (for security auditing or contributing): + +### Via GitHub Actions (Recommended) + +This is the easiest way to create a trusted build: + +1. Fork this repository +2. Go to **Actions** in your fork +3. Select the **"Go Dependency Wrapper"** workflow +4. Click **"Run workflow"** on the right side +5. Configure the build: + - **Update go dependencies**: Check this to update to the latest WireGuard-Go version + - **Patch only**: Check this to only update patch versions (safer) + - **Tag**: Provide a version tag (e.g., `0.0.6`) +6. Click **"Run Workflow"** + +The workflow will: +- Build the XCFramework for all platforms +- Create a GitHub release with your tag +- Upload the built XCFramework +- Automatically update `Package.swift` with the new URL and checksum + +Your fork will now have a release you can reference in your projects. + +### Building Locally + +For local development or if you want to inspect every step: + +1. **Prerequisites**: + ```bash + brew install go ``` - https://git.zx2c4.com/wireguard-apple + +2. **Clone and navigate**: + ```bash + git clone https://github.com/ridgelineinternational/wireguard-apple-xcframework.git + cd wireguard-apple-xcframework/WireGuardGoFoundationSource ``` + +3. **Build the XCFramework**: + ```bash + make clean + make build-xcframework + ``` + +4. **Create release zip**: + ```bash + zip -ry WireGuardGoFoundation.xcframework.zip WireGuardGoFoundation.xcframework + ``` + +For detailed steps, see `.github/workflows/build-go-dependency-wrapper.yml`. + +## Updating WireGuard Dependencies + +The core WireGuard functionality comes from the official `golang.zx2c4.com/wireguard` Go package. To update to the latest version: + +1. Navigate to the Go source directory: + ```bash + cd WireGuardGoFoundationSource + ``` + +2. Update dependencies: + ```bash + # Update all dependencies to latest versions + go get -u ./... -2. `WireGuardKit` links against `wireguard-go-bridge` library, but it cannot build it automatically - due to Swift package manager limitations. So it needs a little help from a developer. - Please follow the instructions below to create a build target(s) for `wireguard-go-bridge`. - - - In Xcode, click File -> New -> Target. Switch to "Other" tab and choose "External Build - System". - - Type in `WireGuardGoBridge` under the "Product name", replacing the `` - placeholder with the name of the platform. For example, when targeting macOS use `macOS`, or - when targeting iOS use `iOS`. - Make sure the build tool is set to: `/usr/bin/make` (default). - - In the appeared "Info" tab of a newly created target, type in the "Directory" path under - the "External Build Tool Configuration": - - ``` - ${BUILD_DIR%Build/*}SourcePackages/checkouts/wireguard-apple/Sources/WireGuardKitGo - ``` - - - Switch to "Build Settings" and find `SDKROOT`. - Type in `macosx` if you target macOS, or type in `iphoneos` if you target iOS. - -3. Go to Xcode project settings and locate your network extension target and switch to - "Build Phases" tab. - - - Locate "Dependencies" section and hit "+" to add `WireGuardGoBridge` replacing - the `` placeholder with the name of platform matching the network extension - deployment target (i.e macOS or iOS). - - - Locate the "Link with binary libraries" section and hit "+" to add `WireGuardKit`. - -4. In Xcode project settings, locate your main bundle app and switch to "Build Phases" tab. - Locate the "Link with binary libraries" section and hit "+" to add `WireGuardKit`. - -5. iOS only: Locate Bitcode settings under your application target, Build settings -> Enable Bitcode, - change the corresponding value to "No". - -Note that if you ship your app for both iOS and macOS, make sure to repeat the steps 2-4 twice, -once per platform. - -## MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. + # OR update only patch versions (safer) + go get -u=patch ./... + ``` + +3. Clean up: + ```bash + go mod tidy + ``` + +4. Test the build: + ```bash + make clean + make build-xcframework + ``` + +5. Create a new release (via GitHub Actions or manually) + +**Note**: The GitHub Actions workflow includes an option to automatically run `go get -u` during the build process. + +## Security Note + +This repository distributes **prebuilt binaries** via GitHub Releases. If you have security requirements that prevent using third-party binaries: + +1. Fork this repository +2. Audit the code (everything is transparent and auditable) +3. Run the GitHub Actions workflow in your fork to create your own trusted build +4. Reference your fork's releases in your projects + +The entire build process is reproducible and automated via GitHub Actions. + +## License + +See [LICENSE.md](LICENSE.md) and [COPYING](COPYING) for details. + +## Related Projects + +- [Official WireGuard Go Implementation](https://git.zx2c4.com/wireguard-go/) +- [Original WireGuard Apple Apps](https://git.zx2c4.com/wireguard-apple/) diff --git a/Sources/WireGuardKit/WireGuardAdapter.swift b/Sources/WireGuardKit/WireGuardAdapter.swift index f7be19b15..34719cb86 100644 --- a/Sources/WireGuardKit/WireGuardAdapter.swift +++ b/Sources/WireGuardKit/WireGuardAdapter.swift @@ -5,7 +5,7 @@ import Foundation import NetworkExtension #if SWIFT_PACKAGE -import WireGuardKitGo +import WireGuardGoFoundation import WireGuardKitC #endif diff --git a/Sources/WireGuardKitC/WireGuardKitC.h b/Sources/WireGuardKitC/WireGuardKitC.h index 54e4783d4..53b48cd86 100644 --- a/Sources/WireGuardKitC/WireGuardKitC.h +++ b/Sources/WireGuardKitC/WireGuardKitC.h @@ -3,6 +3,7 @@ #include "key.h" #include "x25519.h" +#include /* From */ #define CTLIOCGINFO 0xc0644e03UL diff --git a/Sources/WireGuardKitGo/Makefile b/Sources/WireGuardKitGo/Makefile deleted file mode 100644 index 16cb2d584..000000000 --- a/Sources/WireGuardKitGo/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# SPDX-License-Identifier: MIT -# -# Copyright (C) 2018-2019 Jason A. Donenfeld . All Rights Reserved. - -# These are generally passed to us by xcode, but we set working defaults for standalone compilation too. -ARCHS ?= x86_64 arm64 -PLATFORM_NAME ?= macosx -SDKROOT ?= $(shell xcrun --sdk $(PLATFORM_NAME) --show-sdk-path) -CONFIGURATION_BUILD_DIR ?= $(CURDIR)/out -CONFIGURATION_TEMP_DIR ?= $(CURDIR)/.tmp - -export PATH := $(PATH):/usr/local/bin:/opt/homebrew/bin -export CC ?= clang -LIPO ?= lipo -DESTDIR ?= $(CONFIGURATION_BUILD_DIR) -BUILDDIR ?= $(CONFIGURATION_TEMP_DIR)/wireguard-go-bridge - -CFLAGS_PREFIX := $(if $(DEPLOYMENT_TARGET_CLANG_FLAG_NAME),-$(DEPLOYMENT_TARGET_CLANG_FLAG_NAME)=$($(DEPLOYMENT_TARGET_CLANG_ENV_NAME)),) -isysroot $(SDKROOT) -arch -GOARCH_arm64 := arm64 -GOARCH_x86_64 := amd64 -GOOS_macosx := darwin -GOOS_iphoneos := ios - -build: $(DESTDIR)/libwg-go.a -version-header: $(DESTDIR)/wireguard-go-version.h - -REAL_GOROOT := $(shell go env GOROOT 2>/dev/null) -export GOROOT := $(BUILDDIR)/goroot -$(GOROOT)/.prepared: - [ -n "$(REAL_GOROOT)" ] - mkdir -p "$(GOROOT)" - rsync -a --delete --exclude=pkg/obj/go-build "$(REAL_GOROOT)/" "$(GOROOT)/" - cat goruntime-*.diff | patch -p1 -f -N -r- -d "$(GOROOT)" - touch "$@" - -define libwg-go-a -$(BUILDDIR)/libwg-go-$(1).a: export CGO_ENABLED := 1 -$(BUILDDIR)/libwg-go-$(1).a: export CGO_CFLAGS := $(CFLAGS_PREFIX) $(ARCH) -$(BUILDDIR)/libwg-go-$(1).a: export CGO_LDFLAGS := $(CFLAGS_PREFIX) $(ARCH) -$(BUILDDIR)/libwg-go-$(1).a: export GOOS := $(GOOS_$(PLATFORM_NAME)) -$(BUILDDIR)/libwg-go-$(1).a: export GOARCH := $(GOARCH_$(1)) -$(BUILDDIR)/libwg-go-$(1).a: $(GOROOT)/.prepared go.mod - go build -ldflags=-w -trimpath -v -o "$(BUILDDIR)/libwg-go-$(1).a" -buildmode c-archive - rm -f "$(BUILDDIR)/libwg-go-$(1).h" -endef -$(foreach ARCH,$(ARCHS),$(eval $(call libwg-go-a,$(ARCH)))) - -$(DESTDIR)/wireguard-go-version.h: go.mod $(GOROOT)/.prepared - sed -E -n 's/.*golang\.zx2c4\.com\/wireguard +v[0-9.]+-[0-9]+-([0-9a-f]{8})[0-9a-f]{4}.*/#define WIREGUARD_GO_VERSION "\1"/p' "$<" > "$@" - -$(DESTDIR)/libwg-go.a: $(foreach ARCH,$(ARCHS),$(BUILDDIR)/libwg-go-$(ARCH).a) - @mkdir -vp "$(DESTDIR)" - $(LIPO) -create -output "$@" $^ - -clean: - rm -rf "$(BUILDDIR)" "$(DESTDIR)/libwg-go.a" "$(DESTDIR)/wireguard-go-version.h" - -install: build - -.PHONY: clean build version-header install diff --git a/Sources/WireGuardKitGo/dummy.c b/Sources/WireGuardKitGo/dummy.c deleted file mode 100644 index d15abba59..000000000 --- a/Sources/WireGuardKitGo/dummy.c +++ /dev/null @@ -1 +0,0 @@ -// Empty diff --git a/Sources/WireGuardKitGo/go.mod b/Sources/WireGuardKitGo/go.mod deleted file mode 100644 index 789358e64..000000000 --- a/Sources/WireGuardKitGo/go.mod +++ /dev/null @@ -1,14 +0,0 @@ -module golang.zx2c4.com/wireguard/apple - -go 1.17 - -require ( - golang.org/x/sys v0.5.0 - golang.zx2c4.com/wireguard v0.0.0-20230209153558-1e2c3e5a3c14 -) - -require ( - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.6.0 // indirect - golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect -) diff --git a/Sources/WireGuardKitGo/go.sum b/Sources/WireGuardKitGo/go.sum deleted file mode 100644 index 278aef8f1..000000000 --- a/Sources/WireGuardKitGo/go.sum +++ /dev/null @@ -1,708 +0,0 @@ -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/bazelbuild/rules_go v0.30.0/go.mod h1:MC23Dc/wkXEyk3Wpq6lCqz0ZAYOZDw2DR5y3N1q2i7M= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/cenkalti/backoff v1.1.1-0.20190506075156-2146c9339422/go.mod h1:b6Nc7NRH5C4aCISLry0tLnTjcuTEvoiqcWDdsU0sOGM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.12/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.2.1/go.mod h1:wCYX+dRqZdImhGucXOqTQn05AhX6EUDaGEMUzTFFpLg= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/subcommands v1.0.2-0.20190508160503-636abe8753b8/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= -github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.4-0.20190131011033-7dc38fb350b1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mohae/deepcopy v0.0.0-20170308212314-bb9b5e7adda9/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20211123151946-c2389c3cb60a/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vishvananda/netlink v1.0.1-0.20190930145447-2ec5bdc52b86/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= -github.com/vishvananda/netns v0.0.0-20211101163701-50045581ed74/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= -golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg= -golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= -golang.zx2c4.com/wireguard v0.0.0-20230209153558-1e2c3e5a3c14 h1:HVTnb30bngAvlUMb5VRy4jELMvWL5VIapumjqzFXMZc= -golang.zx2c4.com/wireguard v0.0.0-20230209153558-1e2c3e5a3c14/go.mod h1:whfbyDBt09xhCYQWtO2+3UVjlaq6/9hDZrjg2ZE6SyA= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210722135532-667f2b7c528f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.51.0-dev/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= -gvisor.dev/gvisor v0.0.0-20221203005347-703fd9b7fbc0/go.mod h1:Dn5idtptoW1dIos9U6A2rpebLs/MtTwFacjKb8jLdQA= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.16.13/go.mod h1:QWu8UWSTiuQZMMeYjwLs6ILu5O74qKSJ0c+4vrchDxs= -k8s.io/apimachinery v0.16.13/go.mod h1:4HMHS3mDHtVttspuuhrJ1GGr/0S9B6iWYWZ57KnnZqQ= -k8s.io/apimachinery v0.16.14-rc.0/go.mod h1:4HMHS3mDHtVttspuuhrJ1GGr/0S9B6iWYWZ57KnnZqQ= -k8s.io/client-go v0.16.13/go.mod h1:UKvVT4cajC2iN7DCjLgT0KVY/cbY6DGdUCyRiIfws5M= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/kube-openapi v0.0.0-20200410163147-594e756bea31/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/Sources/WireGuardKitGo/module.modulemap b/Sources/WireGuardKitGo/module.modulemap deleted file mode 100644 index 2ca39160f..000000000 --- a/Sources/WireGuardKitGo/module.modulemap +++ /dev/null @@ -1,5 +0,0 @@ -module WireGuardKitGo { - umbrella header "wireguard.h" - link "wg-go" - export * -} diff --git a/Updating WG Dependency.md b/Updating WG Dependency.md new file mode 100644 index 000000000..5b9982560 --- /dev/null +++ b/Updating WG Dependency.md @@ -0,0 +1,20 @@ +#### Upgrading the WireGuard Dependency + +WireGuard code is just a copy of files from the [official wg repo](https://git.zx2c4.com/wireguard-apple/about/) with some modifications to the makefile to build a whole xcframework and updating go dependencies. + +Going forward, since the code in `WireGuardGoFoundationSource` is essentially just a shim around the wg go package, it is just a matter of updating go packages. + +1. `cd` to `WireGuardGoFoundationSource` +1. Depending on intent, run one of the following update commands: + + # Update all dependencies to latest minor/patch versions + go get -u ./... + + # Update only patch versions (safer) + go get -u=patch ./... + +1. Use discretion to run `go mod tidy` to cleanup afterwards +1. Confirm building `WireGuardGoFoundationSource` still works + 1. `make clean` + 1. `make build-xcframework` + diff --git a/Sources/WireGuardKitGo/.gitignore b/WireGuardGoFoundationSource/.gitignore similarity index 100% rename from Sources/WireGuardKitGo/.gitignore rename to WireGuardGoFoundationSource/.gitignore diff --git a/WireGuardGoFoundationSource/Headers/WireGuardGoFoundation/module.modulemap b/WireGuardGoFoundationSource/Headers/WireGuardGoFoundation/module.modulemap new file mode 100644 index 000000000..0bcba2535 --- /dev/null +++ b/WireGuardGoFoundationSource/Headers/WireGuardGoFoundation/module.modulemap @@ -0,0 +1,4 @@ +module WireGuardGoFoundation { + umbrella header "wireguard.h" + export * +} diff --git a/Sources/WireGuardKitGo/wireguard.h b/WireGuardGoFoundationSource/Headers/WireGuardGoFoundation/wireguard.h similarity index 100% rename from Sources/WireGuardKitGo/wireguard.h rename to WireGuardGoFoundationSource/Headers/WireGuardGoFoundation/wireguard.h diff --git a/WireGuardGoFoundationSource/Makefile b/WireGuardGoFoundationSource/Makefile new file mode 100644 index 000000000..d293070b2 --- /dev/null +++ b/WireGuardGoFoundationSource/Makefile @@ -0,0 +1,153 @@ +# SPDX-License-Identifier: MIT +# +# Copyright (C) 2018-2019 Jason A. Donenfeld . All Rights Reserved. + +# VAR SETUP + +MACOS_PLATFORM_NAME = macosx +MACOS_DEPLOYMENT_TARGET = 12.0 +MACOS_ARCHS = x86_64 arm64 +IOS_PLATFORM_NAME = iphoneos +IOS_DEPLOYMENT_TARGET = 17.6 +IOS_ARCHS = arm64 +IOS_SIM_PLATFORM_NAME = iphonesimulator +IOS_SIM_ARCHS = arm64 x86_64 +MACOS_CONFIGURATION_BUILD_DIR ?= $(CURDIR)/out-macos +IOS_CONFIGURATION_BUILD_DIR ?= $(CURDIR)/out-ios +IOS_SIM_CONFIGURATION_BUILD_DIR ?= $(CURDIR)/out-ios-sim +CONFIGURATION_TEMP_DIR ?= $(CURDIR)/.tmp +XCFRAMEWORK_BASENAME = WireGuardGoFoundation +XCFRAMEWORK_NAME = $(XCFRAMEWORK_BASENAME).xcframework +USER := $(shell whoami) + +define get_sdkroot +$(shell xcrun --sdk $(1) --show-sdk-path) +endef + +MACOS_SDKROOT = $(call get_sdkroot,$(MACOS_PLATFORM_NAME)) +IOS_SDKROOT = $(call get_sdkroot,$(IOS_PLATFORM_NAME)) +IOS_SIM_SDKROOT = $(call get_sdkroot,$(IOS_SIM_PLATFORM_NAME)) + +export PATH := $(PATH):/usr/local/bin:/opt/homebrew/bin +export CC ?= clang +LIPO ?= lipo +MACOS_DESTDIR ?= $(MACOS_CONFIGURATION_BUILD_DIR) +IOS_DESTDIR ?= $(IOS_CONFIGURATION_BUILD_DIR) +IOS_SIM_DESTDIR ?= $(IOS_SIM_CONFIGURATION_BUILD_DIR) +BUILDDIR ?= $(CONFIGURATION_TEMP_DIR)/wireguard-go-bridge + +MACOS_CFLAGS_PREFIX := -mmacosx-version-min=$(MACOS_DEPLOYMENT_TARGET) -isysroot $(MACOS_SDKROOT) -arch +IOS_CFLAGS_PREFIX := -miphoneos-version-min=$(IOS_DEPLOYMENT_TARGET) -isysroot $(IOS_SDKROOT) -arch +IOS_SIM_CFLAGS_PREFIX := -mios-simulator-version-min=$(IOS_DEPLOYMENT_TARGET) -isysroot $(IOS_SIM_SDKROOT) -arch +GOARCH_arm64 := arm64 +GOARCH_x86_64 := amd64 +GOOS_macosx := darwin +GOOS_iphoneos := ios +GOOS_iphonesimulator := ios + +# -- CONVENIENCE + +macos-version-header: $(MACOS_DESTDIR)/wireguard-go-version.h +ios-version-header: $(IOS_DESTDIR)/wireguard-go-version.h $(IOS_SIM_DESTDIR)/wireguard-go-version.h +macos-build: $(MACOS_DESTDIR)/libwg-go.a macos-version-header +ios-build: $(IOS_DESTDIR)/libwg-go.a $(IOS_SIM_DESTDIR)/libwg-go.a ios-version-header +build: macos-build ios-build +build-xcframework: $(XCFRAMEWORK_NAME) + +REAL_GOROOT := $(shell go env GOROOT 2>/dev/null) +export GOROOT := $(BUILDDIR)/goroot +$(GOROOT)/.prepared: + [ -n "$(REAL_GOROOT)" ] + @echo "BUILDDIR: $(BUILDDIR)" + @echo "GOROOT: $(GOROOT)" + @echo "CURDIR: $(CURDIR)" + @echo "PWD: $(PWD)" + mkdir -p "$(GOROOT)" + mkdir -p "$(BUILDDIR)/tmp" + rsync -Dlprth --delete --exclude=pkg/obj/go-build "$(REAL_GOROOT)/" "$(GOROOT)/" + chmod -R u+w "$(BUILDDIR)" + cd "$(GOROOT)" && TMPDIR="$(BUILDDIR)/tmp" patch -p1 -f -N -r- < "$(CURDIR)/goruntime-boottime-over-monotonic.diff" + touch "$@" + + +# -- COMPILING + +# ARCH-$(1) CFLAGS_PREFIX-$(2) PLATFORM_NAME-$(3) +define libwg-go-a +$(BUILDDIR)/libwg-go-$(3)-$(1).a: export CGO_ENABLED := 1 +$(BUILDDIR)/libwg-go-$(3)-$(1).a: export CGO_CFLAGS := $(2) $(1) +$(BUILDDIR)/libwg-go-$(3)-$(1).a: export CGO_LDFLAGS := $(2) $(1) +$(BUILDDIR)/libwg-go-$(3)-$(1).a: export GOOS := $(GOOS_$(3)) +$(BUILDDIR)/libwg-go-$(3)-$(1).a: export GOARCH := $(GOARCH_$(1)) +$(BUILDDIR)/libwg-go-$(3)-$(1).a: $(GOROOT)/.prepared go.mod + @echo "🟨🟨🟨🟨🟨 building $(3) $(1) 🟨🟨🟨🟨🟨" + $(info 'target 🎯: $(3) $(1)') + go build -ldflags=-w -trimpath -v -o "$(BUILDDIR)/libwg-go-$(3)-$(1).a" -buildmode c-archive + rm -f "$(BUILDDIR)/libwg-go-$(1).h" +endef + +$(foreach ARCH,$(MACOS_ARCHS),$(eval $(call libwg-go-a,$(ARCH),$(MACOS_CFLAGS_PREFIX),$(MACOS_PLATFORM_NAME)))) +$(foreach ARCH,$(IOS_ARCHS),$(eval $(call libwg-go-a,$(ARCH),$(IOS_CFLAGS_PREFIX),$(IOS_PLATFORM_NAME)))) +$(foreach ARCH,$(IOS_SIM_ARCHS),$(eval $(call libwg-go-a,$(ARCH),$(IOS_SIM_CFLAGS_PREFIX),$(IOS_SIM_PLATFORM_NAME)))) + + +# -- HEADERS STUFF + +# DESTDIR: $(1) +$(MACOS_DESTDIR)/wireguard-go-version.h: go.mod $(GOROOT)/.prepared + sed -E -n 's/.*golang\.zx2c4\.com\/wireguard +v[0-9.]+-([0-9]+-[0-9a-f]{8})[0-9a-f]{4}.*/#define WIREGUARD_GO_VERSION "\1"/p' "$<" > "$@" +$(IOS_DESTDIR)/wireguard-go-version.h: go.mod $(GOROOT)/.prepared + sed -E -n 's/.*golang\.zx2c4\.com\/wireguard +v[0-9.]+-([0-9]+-[0-9a-f]{8})[0-9a-f]{4}.*/#define WIREGUARD_GO_VERSION "\1"/p' "$<" > "$@" +$(IOS_SIM_DESTDIR)/wireguard-go-version.h: go.mod $(GOROOT)/.prepared + sed -E -n 's/.*golang\.zx2c4\.com\/wireguard +v[0-9.]+-([0-9]+-[0-9a-f]{8})[0-9a-f]{4}.*/#define WIREGUARD_GO_VERSION "\1"/p' "$<" > "$@" + +# -- LINKING + +# DESTDIR: $(1) ARCHS: $(2) PLATFORM_NAME: $(3) +define linkinator +$(1)/libwg-go.a: $(foreach ARCH,$(2),$(BUILDDIR)/libwg-go-$(3)-$(ARCH).a) + @mkdir -vp "$(1)" + $(LIPO) -create -output "$$@" $$^ +endef + +$(eval $(call linkinator,$(MACOS_DESTDIR),$(MACOS_ARCHS),$(MACOS_PLATFORM_NAME))) +$(eval $(call linkinator,$(IOS_DESTDIR),$(IOS_ARCHS),$(IOS_PLATFORM_NAME))) +$(eval $(call linkinator,$(IOS_SIM_DESTDIR),$(IOS_SIM_ARCHS),$(IOS_SIM_PLATFORM_NAME))) + + +# -- XCFRAMEWORK COMPILING + +$(XCFRAMEWORK_NAME): build ios-version-header macos-version-header + git checkout Headers/WireGuardGoFoundation/wireguard.h + cat "$(IOS_DESTDIR)/wireguard-go-version.h" >> Headers/WireGuardGoFoundation/wireguard.h + + xcrun xcodebuild -create-xcframework \ + -library $(IOS_DESTDIR)/libwg-go.a \ + -headers Headers/ \ + -library $(IOS_SIM_DESTDIR)/libwg-go.a \ + -headers Headers/ \ + -library $(MACOS_DESTDIR)/libwg-go.a \ + -headers Headers/ \ + -output "$(XCFRAMEWORK_NAME)" + + git checkout Headers/WireGuardGoFoundation/wireguard.h + + +# -- CLEANING + +# BUILDDIR: $(1) DESTDIR: $(2) +define clean-output +rm -rf "$(1)" "$(2)" +endef + +clean: + $(call clean-output,$(BUILDDIR),$(MACOS_DESTDIR)) + $(call clean-output,$(BUILDDIR),$(IOS_DESTDIR)) + $(call clean-output,$(BUILDDIR),$(IOS_SIM_DESTDIR)) + rm -rf "$(XCFRAMEWORK_NAME)" + +install-macos: macos-build +install-ios: ios-build +install: build + +.PHONY: clean macos-build ios-build version-header install-macos install-ios debug build install diff --git a/Sources/WireGuardKitGo/api-apple.go b/WireGuardGoFoundationSource/api-apple.go similarity index 100% rename from Sources/WireGuardKitGo/api-apple.go rename to WireGuardGoFoundationSource/api-apple.go diff --git a/WireGuardGoFoundationSource/go.mod b/WireGuardGoFoundationSource/go.mod new file mode 100644 index 000000000..e29b27a4b --- /dev/null +++ b/WireGuardGoFoundationSource/go.mod @@ -0,0 +1,16 @@ +module golang.zx2c4.com/wireguard/apple + +go 1.23.1 + +toolchain go1.24.5 + +require ( + golang.org/x/sys v0.34.0 + golang.zx2c4.com/wireguard v0.0.0-20250521234502-f333402bd9cb +) + +require ( + golang.org/x/crypto v0.40.0 // indirect + golang.org/x/net v0.42.0 // indirect + golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect +) diff --git a/WireGuardGoFoundationSource/go.sum b/WireGuardGoFoundationSource/go.sum new file mode 100644 index 000000000..81cfbcff2 --- /dev/null +++ b/WireGuardGoFoundationSource/go.sum @@ -0,0 +1,16 @@ +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= +golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg= +golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= +golang.zx2c4.com/wireguard v0.0.0-20250521234502-f333402bd9cb h1:whnFRlWMcXI9d+ZbWg+4sHnLp52d5yiIPUxMBSt4X9A= +golang.zx2c4.com/wireguard v0.0.0-20250521234502-f333402bd9cb/go.mod h1:rpwXGsirqLqN2L0JDJQlwOboGHmptD5ZD6T2VmcqhTw= +gvisor.dev/gvisor v0.0.0-20250503011706-39ed1f5ac29c h1:m/r7OM+Y2Ty1sgBQ7Qb27VgIMBW8ZZhT4gLnUyDIhzI= +gvisor.dev/gvisor v0.0.0-20250503011706-39ed1f5ac29c/go.mod h1:3r5CMtNQMKIvBlrmM9xWUNamjKBYPOWyXOjmg5Kts3g= diff --git a/Sources/WireGuardKitGo/goruntime-boottime-over-monotonic.diff b/WireGuardGoFoundationSource/goruntime-boottime-over-monotonic.diff similarity index 100% rename from Sources/WireGuardKitGo/goruntime-boottime-over-monotonic.diff rename to WireGuardGoFoundationSource/goruntime-boottime-over-monotonic.diff