From dba65da42beb628e3ea77d2471c8f84af241786a Mon Sep 17 00:00:00 2001 From: Jakub Janowski Date: Wed, 30 Oct 2024 13:28:32 +0200 Subject: [PATCH] Rename BoringTun to NepTUN --- .github/workflows/linters.yml | 4 +- .github/workflows/tests.yml | 4 +- CONTRIBUTING.md | 32 +++++++ Cargo.lock | 86 +++++++++--------- Cargo.toml | 2 +- LICENSE.md | 3 +- README.md | 59 ++++-------- banner.png | Bin 24574 -> 0 bytes logo.png | Bin 118874 -> 0 bytes {boringtun-cli => neptun-cli}/Cargo.toml | 9 +- {boringtun-cli => neptun-cli}/src/main.rs | 23 ++--- {boringtun => neptun}/Cargo.toml | 3 +- .../crypto_benches/blake2s_benching.rs | 0 .../chacha20poly1305_benching.rs | 0 .../benches/crypto_benches/main.rs | 0 .../x25519_public_key_benching.rs | 0 .../x25519_shared_key_benching.rs | 0 .../src/device/allowed_ips.rs | 0 {boringtun => neptun}/src/device/api.rs | 3 +- {boringtun => neptun}/src/device/dev_lock.rs | 0 .../src/device/drop_privileges.rs | 0 {boringtun => neptun}/src/device/epoll.rs | 0 .../src/device/integration_tests/mod.rs | 11 ++- {boringtun => neptun}/src/device/kqueue.rs | 0 {boringtun => neptun}/src/device/mod.rs | 13 +-- {boringtun => neptun}/src/device/peer.rs | 11 ++- .../src/device/tun_darwin.rs | 3 +- {boringtun => neptun}/src/device/tun_linux.rs | 3 +- {boringtun => neptun}/src/lib.rs | 2 +- .../src/noise/_instant_boottime_android.rs | 3 + .../src/noise/_instant_boottime_ios.rs | 3 + .../src/noise/_instant_boottime_tvos.rs | 3 + {boringtun => neptun}/src/noise/errors.rs | 0 {boringtun => neptun}/src/noise/handshake.rs | 3 +- .../src/noise/integration_tests/mod.rs | 3 + {boringtun => neptun}/src/noise/mod.rs | 3 +- .../src/noise/rate_limiter.rs | 3 + .../src/noise/safe_duration.rs | 3 + {boringtun => neptun}/src/noise/session.rs | 3 +- {boringtun => neptun}/src/noise/timers.rs | 3 +- {boringtun => neptun}/src/serialization.rs | 0 .../src/sleepyinstant/mod.rs | 0 .../src/sleepyinstant/unix.rs | 0 .../src/sleepyinstant/windows.rs | 0 44 files changed, 167 insertions(+), 134 deletions(-) create mode 100644 CONTRIBUTING.md delete mode 100644 banner.png delete mode 100644 logo.png rename {boringtun-cli => neptun-cli}/Cargo.toml (72%) rename {boringtun-cli => neptun-cli}/src/main.rs (90%) rename {boringtun => neptun}/Cargo.toml (96%) rename {boringtun => neptun}/benches/crypto_benches/blake2s_benching.rs (100%) rename {boringtun => neptun}/benches/crypto_benches/chacha20poly1305_benching.rs (100%) rename {boringtun => neptun}/benches/crypto_benches/main.rs (100%) rename {boringtun => neptun}/benches/crypto_benches/x25519_public_key_benching.rs (100%) rename {boringtun => neptun}/benches/crypto_benches/x25519_shared_key_benching.rs (100%) rename {boringtun => neptun}/src/device/allowed_ips.rs (100%) rename {boringtun => neptun}/src/device/api.rs (99%) rename {boringtun => neptun}/src/device/dev_lock.rs (100%) rename {boringtun => neptun}/src/device/drop_privileges.rs (100%) rename {boringtun => neptun}/src/device/epoll.rs (100%) rename {boringtun => neptun}/src/device/integration_tests/mod.rs (98%) rename {boringtun => neptun}/src/device/kqueue.rs (100%) rename {boringtun => neptun}/src/device/mod.rs (99%) rename {boringtun => neptun}/src/device/peer.rs (95%) rename {boringtun => neptun}/src/device/tun_darwin.rs (98%) rename {boringtun => neptun}/src/device/tun_linux.rs (98%) rename {boringtun => neptun}/src/lib.rs (89%) rename {boringtun => neptun}/src/noise/_instant_boottime_android.rs (96%) rename {boringtun => neptun}/src/noise/_instant_boottime_ios.rs (96%) rename {boringtun => neptun}/src/noise/_instant_boottime_tvos.rs (96%) rename {boringtun => neptun}/src/noise/errors.rs (100%) rename {boringtun => neptun}/src/noise/handshake.rs (99%) rename {boringtun => neptun}/src/noise/integration_tests/mod.rs (98%) rename {boringtun => neptun}/src/noise/mod.rs (99%) rename {boringtun => neptun}/src/noise/rate_limiter.rs (98%) rename {boringtun => neptun}/src/noise/safe_duration.rs (94%) rename {boringtun => neptun}/src/noise/session.rs (98%) rename {boringtun => neptun}/src/noise/timers.rs (99%) rename {boringtun => neptun}/src/serialization.rs (100%) rename {boringtun => neptun}/src/sleepyinstant/mod.rs (100%) rename {boringtun => neptun}/src/sleepyinstant/unix.rs (100%) rename {boringtun => neptun}/src/sleepyinstant/windows.rs (100%) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 19a680d..3f99454 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -21,7 +21,7 @@ jobs: - os: macos-12 packages: "" - os: windows-2022 - packages: "-p boringtun" + packages: "-p neptun" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 @@ -38,7 +38,7 @@ jobs: - os: macos-12 packages: "" - os: windows-2022 - packages: -p boringtun + packages: -p neptun runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1ff1609..bbbfe95 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,7 +12,7 @@ jobs: - os: macos-12 packages: "" - os: windows-2022 - packages: -p boringtun + packages: -p neptun runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 @@ -39,4 +39,4 @@ jobs: steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions-rs/toolchain@b2417cde72dcf67f306c0ae8e0828a81bf0b189f # v1.0.6 - - run: cargo bench -p boringtun --no-run + - run: cargo bench -p neptun --no-run diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..0b8d146 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,32 @@ +# Contributing +We happily accept both issues and pull requests for bug reports, bug fixes, feature requests, features implementations and documentation improvements. + +For new features we recommend that you create an issue first so the feature can be discussed and to prevent unnecessary work in case it's not a feature we want to support. Although, we do realize that sometimes code needs to be in place to allow for a meaningful discussion so creating an issue upfront is not a requirement. + +## Building and testing +The steps for how to build and test NepTUN are described in the [README](README.md) + +## PR workflow +We want to get your changes merged as fast as possible, and we know you want that too. To help with this there are a few things you can do to speed up the process: + +### Build, test and lint locally +The local feedback cycle is faster than waiting for the CI. Make sure your changes can be built locally and that tests, rustfmt and clippy all pass locally. A green CI is a happy CI. + +### PR Hygiene +On top of the CI being green, every PR will go through code review, and you can help us speed up the review process by making your PR easier to review. Here are some guidelines: + +**Small PRs are easier to review than big PRs**, so try to keep your PRs small and focused. To achieve that, try to make sure you PR doesn't contain multiple unrelated changes and if you are doing some bigger feature work, try to split the work into multiple smaller PRs that solve the problem together. + +**A clean history can make things easier**. Some PRs are easier to review commit-by-commit, rather than looking at the full changelist in one go. To enable that, prefer `rebase` over `merge` when updating your branch. Keeping PRs small and short-lived will also help keep your history clean since there's less time for upstream to change that much. + +## Licensing +NepTUN is released under 3-Clause BSD License. For more details please refer to [LICENSE.md](LICENSE.md). + +## Contributing Documents +Before we can accept your pull request we may need you to submit documents (e.g., DCO, CLA) that either be provided automatically or manually by us. +In any case, we will guide you through and provide you with the support, if needed. + +## Code of conduct +Nord Security and all of it's projects adhere to the [Contributor Covenant Code of Conduct](https://github.com/NordSecurity/.github/blob/master/CODE_OF_CONDUCT.md). When participating, you are expected to honor this code. + +## Thank you! diff --git a/Cargo.lock b/Cargo.lock index 26e6cdb..06fbd13 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -148,49 +148,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "boringtun" -version = "0.6.0" -dependencies = [ - "aead", - "base64", - "blake2", - "chacha20poly1305", - "criterion", - "dispatch", - "etherparse", - "hex", - "hmac", - "ip_network", - "ip_network_table", - "libc", - "mock_instant", - "nix", - "parking_lot", - "rand", - "rand_core", - "ring", - "socket2", - "thiserror", - "tokio", - "tracing", - "tracing-subscriber", - "untrusted", - "x25519-dalek", -] - -[[package]] -name = "boringtun-cli" -version = "0.6.0" -dependencies = [ - "boringtun", - "clap", - "daemonize", - "tracing", - "tracing-appender", - "tracing-subscriber", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -697,6 +654,49 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "717e29a243b81f8130e31e24e04fb151b04a44b5a7d05370935f7d937e9de06d" +[[package]] +name = "neptun" +version = "0.6.0" +dependencies = [ + "aead", + "base64", + "blake2", + "chacha20poly1305", + "criterion", + "dispatch", + "etherparse", + "hex", + "hmac", + "ip_network", + "ip_network_table", + "libc", + "mock_instant", + "nix", + "parking_lot", + "rand", + "rand_core", + "ring", + "socket2", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", + "untrusted", + "x25519-dalek", +] + +[[package]] +name = "neptun-cli" +version = "0.6.0" +dependencies = [ + "clap", + "daemonize", + "neptun", + "tracing", + "tracing-appender", + "tracing-subscriber", +] + [[package]] name = "nix" version = "0.28.0" diff --git a/Cargo.toml b/Cargo.toml index 388b88f..5148113 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "2" -members = ["boringtun", "boringtun-cli"] +members = ["neptun", "neptun-cli"] [profile.release] lto = true # Enable full link-time optimization. diff --git a/LICENSE.md b/LICENSE.md index dfd871a..69d7969 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,4 +1,5 @@ -Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +Copyright (c) 2024 Nord Security. All rights reserved. +Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 4c4195c..2161c98 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,29 @@ -![boringtun logo banner](./banner.png) +# NepTUN -# BoringTun - -## Warning -Boringtun is currently undergoing a restructuring. You should probably not rely on or link to -the master branch right now. Instead you should use the crates.io page. - -- boringtun: [![crates.io](https://img.shields.io/crates/v/boringtun.svg)](https://crates.io/crates/boringtun) -- boringtun-cli [![crates.io](https://img.shields.io/crates/v/boringtun-cli.svg)](https://crates.io/crates/boringtun-cli) - -**BoringTun** is an implementation of the [WireGuard®](https://www.wireguard.com/) protocol designed for portability and speed. - -**BoringTun** is successfully deployed on millions of [iOS](https://apps.apple.com/us/app/1-1-1-1-faster-internet/id1423538627) and [Android](https://play.google.com/store/apps/details?id=com.cloudflare.onedotonedotonedotone&hl=en_US) consumer devices as well as thousands of Cloudflare Linux servers. +**NepTUN** is an implementation of the [WireGuard®](https://www.wireguard.com/) protocol designed for portability and speed. The project consists of two parts: - -* The executable `boringtun-cli`, a [userspace WireGuard](https://www.wireguard.com/xplatform/) - implementation for Linux and macOS. -* The library `boringtun` that can be used to implement fast and efficient WireGuard client apps on various platforms, including iOS and Android. It implements the underlying WireGuard protocol, without the network or tunnel stacks, those can be implemented in a platform idiomatic way. - -### Installation - -You can install this project using `cargo`: - -``` -cargo install boringtun-cli -``` +* The executable `neptun-cli`, a [userspace WireGuard](https://www.wireguard.com/xplatform/) implementation for Linux and macOS. +* The library `neptun` that can be used to implement fast and efficient WireGuard client apps on various platforms, including iOS and Android. It implements the underlying WireGuard protocol, without the network or tunnel stacks, those can be implemented in a platform idiomatic way. ### Building - Library only: `cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)]` -- Executable: `cargo build --bin boringtun-cli --release [--target $(TARGET_TRIPLE)]` +- Executable: `cargo build --bin neptun-cli --release [--target $(TARGET_TRIPLE)]` -By default the executable is placed in the `./target/release` folder. You can copy it to a desired location manually, or install it using `cargo install --bin boringtun --path .`. +By default the executable is placed in the `./target/release` folder. You can copy it to a desired location manually, or install it using `cargo install --bin neptun --path .`. ### Running As per the specification, to start a tunnel use: -`boringtun-cli [-f/--foreground] INTERFACE-NAME` +`neptun-cli [-f/--foreground] INTERFACE-NAME` The tunnel can then be configured using [wg](https://git.zx2c4.com/WireGuard/about/src/tools/man/wg.8), as a regular WireGuard tunnel, or any other tool. -It is also possible to use with [wg-quick](https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8) by setting the environment variable `WG_QUICK_USERSPACE_IMPLEMENTATION` to `boringtun`. For example: +It is also possible to use with [wg-quick](https://git.zx2c4.com/WireGuard/about/src/tools/man/wg-quick.8) by setting the environment variable `WG_QUICK_USERSPACE_IMPLEMENTATION` to `neptun`. For example: -`sudo WG_QUICK_USERSPACE_IMPLEMENTATION=boringtun-cli WG_SUDO=1 wg-quick up CONFIGURATION` +`sudo WG_QUICK_USERSPACE_IMPLEMENTATION=neptun-cli WG_SUDO=1 wg-quick up CONFIGURATION` ### Testing @@ -74,24 +53,14 @@ arm-linux-androideabi | | ✓ | `x86-64`, `aarch64` and `armv7` architectures are supported. The behaviour should be identical to that of [wireguard-go](https://git.zx2c4.com/wireguard-go/about/), with the following difference: -`boringtun` will drop privileges when started. When privileges are dropped it is not possible to set `fwmark`. If `fwmark` is required, such as when using `wg-quick`, run with `--disable-drop-privileges` or set the environment variable `WG_SUDO=1`. +`neptun` will drop privileges when started. When privileges are dropped it is not possible to set `fwmark`. If `fwmark` is required, such as when using `wg-quick`, run with `--disable-drop-privileges` or set the environment variable `WG_SUDO=1`. -You will need to give the executable the `CAP_NET_ADMIN` capability using: `sudo setcap cap_net_admin+epi boringtun`. sudo is not needed. +You will need to give the executable the `CAP_NET_ADMIN` capability using: `sudo setcap cap_net_admin+epi neptun`. sudo is not needed. #### macOS The behaviour is similar to that of [wireguard-go](https://git.zx2c4.com/wireguard-go/about/). Specifically the interface name must be `utun[0-9]+` for an explicit interface name or `utun` to have the kernel select the lowest available. If you choose `utun` as the interface name, and the environment variable `WG_TUN_NAME_FILE` is defined, then the actual name of the interface chosen by the kernel is written to the file specified by that variable. ---- - -#### FFI bindings - -The library exposes a set of C ABI bindings, those are defined in the `wireguard_ffi.h` header file. The C bindings can be used with C/C++, Swift (using a bridging header) or C# (using [DLLImport](https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.dllimportattribute?view=netcore-2.2) with [CallingConvention](https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.dllimportattribute.callingconvention?view=netcore-2.2) set to `Cdecl`). - -#### JNI bindings - -The library exposes a set of Java Native Interface bindings, those are defined in `src/jni.rs`. - ## License The project is licensed under the [3-Clause BSD License](https://opensource.org/licenses/BSD-3-Clause). @@ -104,5 +73,9 @@ If you want to contribute to this project, please read our [`CONTRIBUTING.md`]. [`CONTRIBUTING.md`]: https://github.com/cloudflare/.github/blob/master/CONTRIBUTING.md +## Acknowledgements + +This project is based on the [BoringTun](https://github.com/cloudflare/boringtun) project by Cloudflare. + --- -WireGuard is a registered trademark of Jason A. Donenfeld. BoringTun is not sponsored or endorsed by Jason A. Donenfeld. +WireGuard is a registered trademark of Jason A. Donenfeld. NepTUN is not sponsored or endorsed by Jason A. Donenfeld. diff --git a/banner.png b/banner.png deleted file mode 100644 index d039debac7b47e05e9de0df6d4ad2c9265134b98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24574 zcmbTdc|2788$aB>P-$$(5;B%#8CkQ0J2^x4vB!*^2HD3R+GH5iNQflIzJ_cwwrp8T zBTM#Mwn2z&kvzx!eZ8LN&*%60{WHUvbFR$4h~q82ZgIfhGy196FYBI_1tM`#6`D?1hoi8wIz4Yie`K^Y-qcaHOTmKG`DJ$ z>v6}-k1dg#Zz57Z%TT`FFwMK3J0_x#D4*KFQ9dP}Lpw(rP%oUgoc8rj`M~Y0UJ=St zc*i)IGWlz3@5lPC?9&d3Ck-4Um~gftllkG!E{!?_RE-pOLkRC&p(SOq;R-U#bpz(+m>F|%MrW{T{bPbbf<*X zy+IJn5RpyfaBmQojpuNI8LQ&3tGcTFMo=&3vT1?f?Hqo+0#?5k@oVvXPF3PJUJ1e% zF$MfyR6dt#Ub}K3(-H}p7ZTF(60$EOWa7o;5@rz!SB@O9X1%R((9J~tM671I6vI+RijU{LleGp3Tk{v<|{bu9qYN& z-LWFRUO`J!?p#;h5{HRDAjKdV*uJA0+>eato2L(7B)}r~!W>5~lD0Wb`h!uA;$X5U zrSunzM_DlG&#)$qjausutleK4l)i)IhLT>(;#ie&f=>BjTI7R&{`;BW%(TaScwpv& zq8poKS_CqMe)ND}KKL5R>yS3Ni>Xc317i2VJl+Sz0To-dvm2LSN?5_bX5D_k^C}QJ zYRH(Th3-K=nbG+X3jgv1_j7x)_T*Klfz%5!iL*onR-EKM3d?}ImsN%=l*zav=`#nN zE`=d976>eh3cJbya*hJ#s7JAfz>+4ny_`ilXBuCMfp<(7UT=Bm0TnJt#tUMMPs1ng zap^#GYe6=NWR!0bZ|n#h`)$+Uix7IahCaOA8RM6lN5-=1x5Y<|tX+R?N}4>Qw!iUp zA?d4Oak8%7^>mWRT?OP(_-sE-b>2@W?NaEYJA|U-oqu+;y(ske1jN+lQs$6md!=Jh zCsrdFtcLkSQThKADtJhf15gY=yc?h3`5NLkBBn&h_|pt>#BlqRrqJO{M@{y|MAtuq zQx=}psfO-uC?&l1PyjGp3gYm(n4w7MxFidw4~^h6JsrUMp7hzZQl`mV z5-LicinGj}H_l6M?NJ5GoE1oCDA zhAASvR?0JH0C!dgyQ7tcJAbf(uY}GBCGG7}|b(YCX?}yvaS_ z)J(=nDO$!de>XaI4!RS}KYH(bV6Q)dzrxQ0g^aN^x(tJ+-(7cez!cF7=J#YYpYlvH z)^jw%)MGVFHEut(9z}J{c6IvtBJ9{si@<_j6pfyap;Gb;M*__aG{Stz{WP*f<``zZ z>G#{T3x|s%4n)5RuhS)?+qGBEG;7?}{EDp?rlNfiSB%Z>RirC4W_X<3Bpgc3Do|QY zHB28RT2vo$1y?c04-NVt918ujhUsJanF5!x4sQ~(#esgln1YR!Gy=KM{j(5ql0vK= zc**UVzZCTINZa_~O^h`*Jk?TE5$x`MKn7IlSfeU2hy1ADfpSn7Q8GZcE9f4gt}<7l zAhlxw3S8e0nSy+EWqCX_QQ!6a5@RRol8XzWH>Wu-<-+9X!N2DFb^^z-tRV;1HF?(8 zF;>20=gjM#6M~lo4h8nm*8aukf{bDu&E8nCKO-dgSf zi=s2cv4r?;4we3vcOm~RNl>92w7!boz$Vm%rq+rWU*?Uzepx^n$hI$YEVDRw$8ACA zOs8W}KDPB~Bd<4*_PXeE@I2C|>7PS>2|UAcsdy~A&*U6Rw5=wJ%NQeyPU?1GjCs-B zSSj~0d~ac+d(m6M?&`vQHiYZm7-B%#T zWKHOoFM?*cyi-X1xU*O=hYX2b`|2aX=_Ufi_Qc&Q_JKLLG}H+Sa*o4xqa=%jt5|YE zE<%AhNws+C2ZfaH`XlPNu~a0*US_KikGNoQ$a}E@ zC*L-#*G7^72+udlk^t?-Mt3CBCn~W-D$G*s&0QpWY+OW)zBaGZ_`T6~1S70sB?!v0 z_bQfE%p2%5B*YQv($kGQuyqkJxgiOBii>gd83VVUeQF|tndD0s?i?-?YDBBj6h$Tl zmM7H`H(A>vqMO%~ZfQhLN?Cf*at+k@c&;qXBaxZKrYq3iySpkr7y~B9Lv=1;QcE^% zeS}yRwMRv_O|R7qqUV1IXb-A}{rPqQSYBNX&vzgA1kM;uqp0bl(rw6woBvtMl%L!2 zxzQh6>V@VYU5n%nF@TLZl20v|LN7|x5+t=b>ORlPjAgF0%&S|RLaHko!#nqiUp+CK2L)#qr zeyJEr`((Wc=_*WIk<^YPcYvLhEw>^`^3i3-h8O?k7l?nRo_hh9_1Pisb9CPIm6=pp1$z2o| z=kSOF3X=Az`VwVEJuQ-RXlQvp{i%s0eb)d@(8_CpHa8mFw-1djR;y0=h6#?4Ok^{P zph}lhNj*)(rM$Xaib&F4{6-h3fp(gM8V%4`iq-|0X7VBal#(Iyv$*@&6%?0P(M6VF ztzNJ*U{w|<7GiAGn5Sr^3Q&TPVQUQM3E zFwZs-3>8aFm|$JIxGchKUJxy<3nr4JrTCFPe)^H*!ndPe(S^aXO5q{8jzYxj5^?1AJ(rsToVr%F9cz7hZH|iH3cu$i7D{ z{XqE1qaus`e|T^$6p>e*g8G$s6X|)R6*>;`=+?6F-uVxG)15ncia=YSsP^WXVTJoV z(pod=&wl+fRGG|1EV9|eCM4()CXUC*a$;Q5Svl(!<>!$)=tABm`Z8~v&EfiXW9fWy z^T-Uyg0I@pW^7UNJBy^_L}N9!BC#TM?sF&DX^$i;D9_zjDH(8W(8L4ae+&AIC!)#sS5k!-hD2mSuCzUTN?jbCLRLoC$L7tW_vz zy$`l&EXSa%v&3y2i)~E)TI#(1icYdS@Au9fsPA-&q2L`IUv}p?_P~k~sqo-XQ8d?< zcJicvJEF|Oi_`lWCg=+PjGuq&XOYa&%_rpm&P6(N<@B$?zL5Rhic8x4z2FmvQP5N0 zRlu41EN3yt|Bm|6A*Cz)mh{&Yt#jg*3)4=FP{ii~E3JlVT!LMO$m{hUux(^5@?C7n z(k>M%rlglOgKQpg>xLeTI|~M*j7UIqCDkqF-5Z|@xsL{EN=CkjWw~-3L7h~4zUW7{9r`KuiJ8*j z3EaNH$tMQ~D--I#N~Q>x{V!UCOtl2?GEh)@9sUs*3i!c}Bju(>V(j3S z1dw*go%1oR>#Sss%qEbL_&=t$i`kV_fNXI##Bp!V&D$(eY_|a?20=DXU&L83>e&|8 zv=O+8BM`ERq^$J=XCd7jf+K}KBjS*Nc^beu5JNdr{9mBrkQW!1;)A)5z90@Uf8Ph| zoFD!XP4KWnX+M1xjlZVNwy_3wrc{2cF#tlpPl>!B%p*ti?^5W3cN57R&J|8wAjcZR zp} zG&8t@BgE^(1)BS(A0D1nkIrE%uJq_T3_M7vifX$*QkyD4(@52ik#u&xW zYX}rSDK0-b;nuoHZONXno`Q@-#VzR;;p8+@a@1lCeP^f0j4^^a$`Yv|lGKd`mc0Qf z?pHpToQkd6)D9hVU6@^QyTykG>n9IS^XR!)SaOpLz8H(DFKe^N-EUZe3D^w2y5{+o zQQ01IFSbMql$J%avQ{9|sI@|cS>&mKo zkU!@><)Q6~BXn(`p0Z`4sYl6smX8;{SJ=U2$J)E04M?%wsRzx%F}I6kN+=yEzbfbi zL=py*Lc}rhEGyy?y3>TEOKeR;u6dq99Qblaf>555YD!}Z&L&BxL~8t2w_E-)1--Wka0z%GRXhm}p)VG+6lx)ylx3u8Yo?7KkKm_$y^VMlLo~ zx}d|oYys4+?|{O;n*o=)4neTU!6!EZDZI;A`fB?XditWi85GjoyX2Os(-4wNp?e8j zWoMnYiXX-2FL?=3gO6vEg#tRF~A&sTRXB^|G^j@|T|D_C=8EieA z#K$UF(s!~LE8;wI&1;CgRd4%IhWrRN7gT{$kzd;jDKS8TvkU0w6;S3L&_F>&D+{Qu zVyZ93Mc@jSaM1rR#OzCJD7!y(vHeiEi?1zYMHvC-O~ckIi+2Q!_zyh92ry&^^n+$> z<5QNp=7`~%sKmr*olVnL?gjOz=d;LR!@CrbYIC1isP7elwx2QzzR1-@yNP7~7X$H< z&nMj+-hQ}?cmVB>^v}H7g1=;xPE{W9|EP`tsNKE7QBbVn{?s$Im?pX#>^VxV4vl~m_ZK9i z&&?-?HO#*`iY`hx8F{en|JC=SS@s-Z!AKB#Mn{ul3i{PetFEGgf3G{4&L9WvvbysA z6zZUZQKIgz&j9;49}3>*F@;{}ZKibT(;>9h6@L$8LEi6zJx0{qomhRVzC;)ceFEK9 z3^gR%o;b1UXqr;$zc_993=NV$u91Z^_v2-NmvPx7A2Ad_qpqmkctk^7xC>iW!tZl( z9Hg2U`&1-AQ6e=*^sN?6}(qbmZ+EYDVJC`n9IyZOR_{xs$!(SW?3XeQX;S9bz2F&R?san;+Njj6S zM<)5}ik4$5%GiB#AoY7!F`61E9t_{G{7AOEPm1mfTIzMesZ%&~F1&xw8mw&4Mx^;Q z>hr~j@RKQOfcS;E<2&~r7W!a#LjV+2*I%y;KayE3@@9C3(lM?Mgm~8C-6ayW7btlb zbpnI55M&R55`n9*MEG;##5vPmUj*tE{ZD1~MS0OWqr1UI8Gy5$BhA_yWz?B-e8<0F zwPW+gPg`E)S!N%^BSkFX6$RhJN)pbGM&GbUd;+fqj6YgN<{<4M6YXFTGp#{aVHU)( z8S~4mZ_QDh2tcnsIbM3iZ~S2bt+VrNnwovfodz#qY*vD#7N9qmM~ZRN#A<9d-~O_PW~;#{wGWAtlcws1}K7hbeU7=P}iwh2dp)N)3$s`&`GV6Ka;X z6Kn>hYdnxizG%f(ro8I|cy5nRegrRHpIWYjEtTi`z(Y;mLeO>IUb-hVC<8KJn}E zo%SfZi!?2@P4t)4rnthV2(I4i_aEnn+if?4No}d2tB*WZEh=0%?l@BL60gc_QPJLP zXV1C_TUsh9Sa7jefg^d$7Dy$AJZUHmZG@J*1iNE46jEBL)4iq(xYX3)Pdn#JE-R|t zzZK(%QffT^rjZ?)t$nRPuHW>hqA~7?=W^Fn-x1GKzrz@1?=$|u*3hLJO@qu(J;5I# zJ#+D{u_{~wIfIx?>=bFzGjR~M|Mk1{9}N|P*EPa5e=pln;>k>HZMl_x{W`d56 z(~?d}u@?@8x`-5dpc)+gX8lOO=rf_CN!mSNcDG9w<4&QTQk00i_T&!JNb1{x$4}p1 zz@DIr0GwigaO}x(GjVN-C7npBi49BgV^l{+eB)ZXI9?O2AjmAmNG{CCkSeE%jiUuQ z&hjX}ps_T+S%KcKH;kK*t$b_f7KaPrH=Aw3XHmIi)W5azSIf_E4io*m!B%9=83LJ9 z@UiRUBIMFL0kH)zrY%FsDbdN%CY(ZeL5540Ze*Uj6Vn-s$uG5SEhpP&UVVBK-3s0< z)PDaPvu_IrKmvX=8-XOF+rUpX=jq!cE2Wy!3`TPAGNUh`j*ZVCjakNJ-5^r!DIll~ z`sNPT`1@W)=S8>0R?U*jwzmfc$wvuoQREZtnvUyRgsnjY6FAfnzL)9H`#vGm1w zyGvwr;BP;HGVcDmb?aCEO_mMjS8sWJren~q()QB9`Q3DqG^*JxhL-Xbl-bTF>E4Q& z2rxlGorifB>KHDCR26GV_$W-3$bcm7iZ9lO*0$nIwDk%_wWZmHg&9f>Wes#SaI!Z! zQZDnxuSCUwy3)+`Xj7`*f^={Og>JDRW$9N#uk@njfBg^kSCY!SG~NyF`Kwqae;<8s`{fA2#MMKyJvfT`AEP2}WhdMPP%Bi=Iny#MMla{$KK z(i@ZUuPg#X`%}k?XnD&IYO)D&-$BK9($8x8(T3OFEJMbc*G8(7;=bTyTd)NGv!>$` z^UxS;a17kuqkaJoIDX-w)YqFuSgkgmdayo`WM4os0wvfbgf6Uf>dH#$$<8?;rv&Wz zCAdsoa%l;onYd42q4qVO8v0{g{oC3@G|=8Of!T50AVpSt;gIY#z&&*i%Cxf^dGEu& z@ASwaeUi5LHlLJmb_6(B7uFN1=*vRRJMeL=~L@I+C2c`jq+*kh)5VF}mJf9!PB zwriE-CwWuxk56V+1Cw@eE3EtxLiqMcF9aP4?7O}u#Zigh?v7#63h?UfaFNh_N55TePkT-^eelP~ZoJb)#B1#ssUqh7fy++uA?D64UJ zJ-e&Rx_J!w<`cR3c zeg^^T&9F$OpfRNWl_Qihgjb}AzyKgtd6zWv&rs>CKaTzM&)uMl_)muCq<;b^_{K#!s>tkX0{;yM zb6VTLBafgrjmt#Pa_ZQ!I8r{iLFKwsyE^S3K}p?Ku%am5x+>IBGcy=A9n_AL`%`~I zH8-1qDd@a$BrV(*P#LLIp@@8oQ$E@O!pYI)Xx>bcMF8Bn`4%JhWq_t}h2}s@=`*j` z_`xqnYdJgoPkYz=sV7lSh=cCQ&rCS4c6Ows>YtM~TB1gfita3|Oa>I?Z>M1~z5R9@ zlLrm;^zSEY&RhnL)^t3ulcVR-Us!A;#EGT64F#oHr4X3o=SR-)b>0(9 zU2v4{)8x!oK{tbiu$MqnCtjOJ(n1%ZSQ5$_pG*2;a{`w5P)!GHTyzXRy`TO}gR3xQ zHHjpDalqvzqf~KJTpKjcl&%)8)Sf6BU0QH52bmaELkzpr?={@PFHl>WdcCjS5Gz;+ z5J?-_)QQPDrI@%pQUixlj1mf1&Xt@gbie$ZDd%^I!TjTgI={dFd2&NIyw%oeaZ&Bu zp7G4@qF%G{G$S5Hk>C`I6-{jF&EH6&2VU?Et6*bZ5fsQ0;N=r%`)%X?7EQoP9F$; zi|WE{^f0;?FL+FvkN#tb0yC~9msBhx9tEwlpW3{8=?uEEy*r0Hye9v0ttMaXGznep|bt=ocWe#;y8KTPvL2FiWA+&@=Z~ zJl8zb3x1SVvZh{J!Do&#qZr&Mcq$wgnz=*ouYjiZw6D3oH`qEGkaiH?S*-dUZCSV9 zd6QLS)26rbUn$No<3?Ny^0GkvHkaMT8)}D1-A|p|SqNKI{0sHNypPnvE1okdd%SSZ zN%P!RZOpy`zHaKp{eCyTB2AQ*#u6`6@_8<#eJM^%q)H4pX+`CmG>+t$+}_Vu@|^ti z`qmED90UaoMs#-8$N-6tY>z}O77SCJZAQRPZ8=h_%sK`{?te5C>_ICrG0YCeIZ=faSa)VH{IiJy~rIAm1@ zoqlM(Am#KWl`>wc-S@87)UExF9>w*$q8O?OYVLkCMNb>~@Z&9*-oJj+LsIYhBD{y_ z$Q4LJ1z6Ss#`OzO(i`k5cgu)FUuYJB#)w`GT@4b6G|AE-IVaGK#-cy&p6o?aRl31+ z0?>&-3+2Wnlg`OV-mCJB?DoZrZ6gr#h4MGjt~9kx{kpwc_2-}6?!+t7SCUHkvPlUC zexLJWhD9a^pW%+zrhU^28EFP3)GC%C_SGxj`u1h_pQbWpp(h(U{_0KdQt;uUEug@3 z999sQ0QX#S%;zA9N}rqDR*r>u^@J}cP1(u}H8eED9eHlFYCemI89e_h-4K5R9iN?0mOFhHD?UEc;-7 z^}2ltYWe7|F8kbV^rm5_d}FT@%Jp~C=nS-9=!bdlIcdv1saiuqd}igXp{`geA$=#hR7(gWE}`&I8Q0HT8=I2NRLZ@OpgxvpGWT;8Xf z)_G~*97VE1M(rqg^ZPrN7sQOI%05 z5tUfh_qZ%Gno~tKQp1yGJZvRoH50>e&Orv*ZZG$u=dw4f)L zcQAi5s4Tb+2lKc`fnzB=WaYV;uhGxsCTpNCdhq3q>1DNV4aQ~bT)-n#t=Z$#&&~MB>#$sB|;7?;}>lN?LQP)z0D`);nzZZOB1EJ5~PhD zlXs3~otKgh;7D^tE!M9}{c6@+gbui{8^+uLf!Ui_!Ou=F+0$=Zx?dPqolZ9j@rR1HQ(Y#H^u0{)4eGf+>PseI3L~HO zfG^GBBF%isl`@$*{lDH%FV|wEsbQ#f@dalmg6p-EDbz@`n;t>TC(fh3mYA0}gNH(P zH}b{UqfBP9k->=-@w9R&4%1E8pL^2)hqYtgv<6Ln+`A-_D)s^C&pZ-ADlb-fhTG!~ zuku&|TdOb|x0QX!3X$i{-r>~>C?Y>=9^&4<{%kpXe5AJBC}W%VTP3edD29^P=X!9v zG<(lQ2Nf;*xSOvaZ(+8Fww711-4v}Y_R7IO#f0G#0lj<2>b^b2 z+SdR0$4be@$GsDjW;@Bf^m`|j5q)+-0q=$v0&#FiTq}Y{XwRXkX_V+<>!FStnwrq>o z0qO%$hTLgN+w#AwhSEQP%emj>bhc{*fb1uvoJwqhG!;Lxh(d}geMzOmP0P2@PaAD| zoHHkyv|iBQaRCx=K@JF=ul%gwOABeS9lFp3t~(5jblz}(cF8sC+BDx_iF}IJILwZSjUidqrx$((kt4aOBWuM;_db9?Yj2y< zEgVj0ya%*IX>(pdOW?=B?FwNfP4VDAJA1#-r|!QyDd4nz(pU&Lte~=3HU~YkMs@8E z-T06fi-M=Yz@m5aYSm#}E`Qv<_ma)56lcCV*Bd-cf9IuUiDHmndlXhhy7Z^oc*RoG z^=C}7*j`osX+&X7okY3k4?L4^uat}kz z8%eNQe*fygjCxZCj9qz9F|HSh&8p4on;8xGYPnEi!<}X~65%p!I3zIz!7@>95g^m3(OD#z!4*>d!Z`Nc7pDu z<5a#oF;zL(nuPe!Y<(YBge9J`*{J>XORrFCf1L?fKylqeWm|QIc?TSzzp$ZFOnu19 z0^P8%Exl_+bYXcbcGK|zW}AZA?JGl-YZqEx znk!#9n5KAm=~T1F6s%jk`!lxj9!^p(z!(2sE~?JnJ%OSU zfb1JSv}kiwpEew%M#uF=63!hj2`}VOHncw#Mb}?H1wBxqt z2^BRPnHxA+cpgb+473VHb#dUbK0?Ps2;^iETn4wlg@T$oT(i2B3jjxfaTas_@d6kB ze(R9ZrS$W)d9fkbH@8wlGk@GgIyz^0GK2`i=aHhD} zk;7%`EEAJ_Q0;>bqnkF>Tle>8c&!9s=S-}h+J3t9M+akE-NRJ9@Y04cSQU4Dk)qWN z7Z)qA{cZ%ZcxEQ0Lo_qQm5vG?qs!8sWn!`eo66o!{Dw!CAks)pOR+EBx4QhwkF!-f zCms!6DPKtK`a4PZb$#Da?cfmAMlc(RJ@>eCoC$(tg!Ws6Jaxf4*Xp}psK!wzCk z$M^0bG;cAU?(^Du(OB)dKV)$If!jP}qiNL*)_;uH=*MpKypM@9qsg(8iqKRiWB#-e zyDYfqFA1b^2p@HwyincHd)+(L)%w-bD__2|JeOcw3iA+;wQ!$eHL5S)&r2t{G`MW# zAP(MTeBUcqe!EW!HGN7o56ui=GGN)-bSl5_G={spz_r-~l=Tg4#4>w=fnv=eBX<_UJ!z>wd|GZHLth6Ki0rUA8$iVzH z>HekWkOA&~yC>MzT~Y$)gB!af4bJiD9Bfu4?bQ;UDhq(8ACs%T(VYqxX0j(I_NL^o zKdV@Qi0PphHv^7&NX41`i%cTj_uCb(dLMQQZ>&{yz0JKs(dVQ~yB+;;Y89P&x(a1w?P>di9 zeFpacsRogIvq+@|y45&%({Cc;DK25wozR_wouND+H?Dyc9dDZL&r5wXn@WrHKqc*J z<~U2w%x_j3Nup0j$CUcYNq?LYi0>lL@2q;vE7vmsiXI&IW))AX`Kcub+~i)e#9C_K zc(D%>uGSxw0OaIWA1Ps~t*Krr^Emv@r1_(z3qskU+gm3_4F4%zc~_l1UjI>|RwO)% ziTfVqy*RwtV_OrmymD~zq&Y+~Xq3OfHy$ko6bJSkb)1LI%hmd`+0RQF^N*qz?-N!= zA|A9Or>jU?u_z^%Z{YIi^nsY#`SX+ihClnejW2-W0(q>@?cU$G|ANWmAAiN{)Vj35 zMe`~?_Zi9#GoOEbMC8mfvAcB~_d# zF?iQ~=uUPl%Eh4ex#8SGT!qsc4<#Bbq)9}S?gzvvrXMY!_*5&K{FEgK6mD@_?u8(pDsA;|gb*s9 z#CJ$!o*I&bj59^Y!5|vW#M_|OOKJ(gJs{m5ALPAT&aviuy4hLMD)=O+LI0Gy^2@3^ zzSE=L(r%*K454?ev@#{9Ab;u^3O#rR@?xQg_y;XfOHxzmmzJmv_#oWS`_F!G#iL@C z<(~?P`SJ(pkqu;2{B=vu*-i8mvL>(A7gH7o8_$IQ^3@K147w96i^pevJ>B6-l-=50+ ztAy=;di*SE(N>ffl|q<<`>!q%K=v34Iv&G(HUzEY_5k6Q_0@UtuN0TN-U~Zf zWQi)rWl7j(>Gy|v8Aw=vd5n=wanB00qYZ1!bCUYwJ)H8EGUgzrW{?{VxKnW^i-N$N z0WZDD&Nm7n8YAlreMx}~lsS}ZzNLCyfP)tT+dobbneoT)DNAlE`jFu$GLh7rJz?~& zFi-ilZcQ`*xA$$FuxHW3tK18cyJ1qI4rG}B*RlGNI9t^2N7*_e6>nOTH)9C*c4*O~ z;HpwLsOeCi=5cS8xtBM-;NAP9SlO|-Ax5~1HNFTHB$1lqu&e-Tqz|3~cc5rpU3@cf zmDAk+B@bGf*#2&;?1Dc{ zl4lMQpm2S*ugp&^uAUb^0m%I>9hR@jV}Mt>jsjw}0T)W10TmuV6cbuNWUU?KA7xVovc%h8^rvTcatZ2wG4RrY-Z>Jf=L3i=5z4*DX*7ALYI2yxI#JY5=|_R1ORpWWac zY0~1cXBB#?XoDVu2h}jOK1~j5&=t!7a#>7?V-jJtHV5|>ZgJG)r773xrJqu~5dMP! zI|IW7+yC7ylJqaM;!mUH&D)x59v=D}lrW1d4&+}b%6c)tC<~N1_NRyb38aT6S9se~9VM5=$G(q$0O4al0SvTU z`{rj^1B>VC6qGQbb+=Z;iFesmt}klwBrhx-nMF;3Pa3V@@J%81lb<;k3VLFwITX5b z?-bY%7J9JNFMq%~>M^i9B>f9FnNU6y`evoWsP6-^z#&rYQ=*$WyFu4TjH^VM^Yy-k z7M#HG-x1eV3D>%7J$tv2=xp^yY?C0Fbtb8rc@f zO#QPY`Rgb2Ngs}@invOe|0g3{2vBdmF1i?}?1R9`J)+{lUf5!|DAq4nsJmy^UI~tw z%Zp)$?l6v`=Wdo_{Ae;)Gjn}e_H{*4Vt7L+^bi#mkPT!PGDR%TQX zMaP>jKr0F#R0d9*}`MW@Sm%*eX(rKkRZHBAY-j8eI3t&r1dR6yfQ%8oW*~Xf=0rApuQ& z!WQ#pOAL*17mQxGClGajB{(CINNTp2t0!6d%YY#*w4jzwf~mu=1DHQ1jZhm$cU*|_ zA=1x(LG=xf-hbEg$5d^u9vQ4-JhV>5sC879?;O;iw*s-j^NiYwq<%Ejr41}^rw=^C zoHjyFhD>$9WwRJ!VKvbdr3GBoBXGmR&J)>i^-k#4?SNdW$oLQ3$x$Enf@V-p^`7!N z{^X(Zj)S+}$n+_~1A6QM2wbyPC0uvKe5?(g`gfvbJ|I)A{F8eoXaGp0=xJ!3zF|*$ zWdzO_(NQlaf<948JF$+*oPIgRxP7tgmU=+Dsl#GpcJS<?JBS; ztVFG=QD(mV$g~Y~8UQun>bWqrk8B=56ZIqK6Q*iQyvf+1N{RWmu$k&qf#+%)F2L3m zw*pD#TDLI@goehUGGBhuyE9N6Uxv*xmCRE?-`any=4$xf0#$zZSf6aG6o^cTJ~cFS zdPpqJ0xm7S$HJAH+WqQw!SNT0i;&D?l4?LKsdZi^M#)1`<6I-YT=F4Znm> zK2Dg*WX+PB}~BDIBgYf4DG$};3xe*F);R&cQ!ZZ)UClCWMP@ks;q zatSE7(>^%r#kC$}U*Cy}-wm5On2m#V1v6CJVNrJt(j9PTnH;MSTVVAs!U{e{z;E_^ zctlfgoYBmUt$D`2#NsCi{q;-xlaTClGmowt1zyplMr((Mm=eAoZetv*uI&Jq={3Y1 zH!ms;Ww|}jmJ`1s4Vc0PxZ@`{l-YuJ?t68pAEm0T#7=tEIdr~BH1371Y{l55jRE?x z{pK0PyVWVg6TzdeZ-Fj8XKw`Mw?Q`U08dIPeM|E-ifVv!Ttw}DDMN9&?K<3XX*sLc z!^HcL#C2uTClXTyJKj_9@jtbdU6eBo7`szvE7zx32xO5ou6;*|W*N0T42$I(mycFe zeJ1kt`BmoZ1vDy1g1vY|)W-y6VM@3wkOObz+&H)#rUPsJPqNQbD-ZGbWj#26unS`# zMlkI+SOlGh=kPCM2{e>aecU~6O^#2xpR?deZI`UC#5<_(O(H_cOExQwI$<3zb7RZr zsUqEaGg=yB>aRCvrF6i%+Mcw|vY@w1lVbV+4?Ktjx9-ASS3f7FKb0RF2>uly*mY8BI7l)p4udOVvn zvT@;D)yAWgMiSIHZI1~4dQxJR1~RGfpsh@SgoIxZu#f~F>W(c;87 z#^>t74^-v#ZXs@i0k`2!ez#KjFL*HMo`V(>r>V03j&9$8E)aTQl(`3-0wJz zD_w;{>-qf0cpF4D4VTX#!7arv=ZvJ5)X;7bG8ydEo@}UJ`}xuB9$9X_nFb?_@8G8^ zvU60BE^ z$aW+=OEOxuy5t|qHFG4^x$$L##l4JnEmizxya7M%U*z!T!9Nniz=Jk`XCC^xSlWwL zQf6-gfq7`M2^HGcx z%P*G?uB4~$0=~2qP4TW+1zg4Nc0OJ`LaO`Z!1~uO-^V+U)HdMLgwbx+_k){B2C0q3 z3K4`4VXX7t#e%<0E#{|R7awonQK0Yb2Oy2h(?=zCLjlVXCimS9-06~hl69nREI}5a zMAlk5jhEO~w1`r#B(wB1X+8c%Z^ut>j28Q--|}EVu+1(UlzhRPY(;~2Q9!XY@G6BK zwqOX<6EE!5^Kr(M>skG{zV?kp;PV2rzO^(gh_Gl*2@!7N@g$i5lwu&gVs&RJ#kyshaF{6Mt5wRh4%Wv zoQEZzqm8+vzg(W%l)qQ?;9g7h=xdREi!sDLBc%3(fL6Ef`=^Qvb(hk}yC#+joaZ(FD2gvGDYk&p&*dv8gO21#l);6uC520Fb8Kaa^$c)o z@k&arFE$Q-J0mE`Px&!zEc2utWbUYJgC^MbH_@NX-|n!)UA`8o#nF0vDUk%+X@hB7nu3>@uklj zq9>@LP+bq$bzs5|zY{A04`R1Mh+?0IHTaf(jew)ImSJ3fCU5<-#dcmZbUe&&puizo zb}i4yRyCdS|3WEnZ+A9d`3qg5CVF?2dT1Gc3KyZShYF&8@wWHg{9i1#X)sxtF+ZaE z>$t<_F{eRgj{FyrJ!L;{@oc!-+I_g3St}@aUPRHksSGP-%shNbh0JbGxx!JQA^SmI z54`Ezc6>X5QJOs#e;Cl@bVb0)3Fb>dWNgFF5Wa4`ZV{wu|LQOPDX2HS&$E|C@eo12U10RmiF5aC&{N~$e{`=IL z{nQhMGu@9r#V4lS#DYfZ$A1`ju#rDSquZs~dE#INQ#aj+%=gKdul?+cX=4Dtv(7Rt zS##azHTz}MzxuctOjkP?Wk_oI{qcCI7KUd5x%UCD_5YM|UQtagVc+K*rHPafAoLP? z3y7ge6-elaL8JyyK#4S|QYAcBD$&$*S>#ZP5%bP+l#%cLMvwX$fs=dYyn$~2kX<#?*pyCmnn5h~Du z?P#|mbjV$h#z}>S`?AEI*w-GHzW1n$q35f}DDpz{ezQJa-T*b`1_3wx!P=RT>K~ok z?f$=KSAuzvqQ%+&RBA(eQ`JwCu4Mbm*?;c+H&yq4;uaT4JtX(7h)=H_%&NOS^|!S_ z1Y_^03Et<3j8kJegf5ZIetNu2jlPDjWXXStgR@eZ0@%JJdOv)IveF+%t9x{)42k$+>sFuW+ZfP&AA9q=cMJ|k8P1r zyO`>+T#$P7VB0XkJJaX)V&GMq_1tvqD60)|S!7+dGq+!si%LhwV#2qxDtn$f51SxM zx%yL81*S+I)#0|{zgIioXt5sfEAhX9r!|tU9wz|Doj2f`b5*0ocM_ZigRk8UpcehO zfhcvVf@J-u?gY*ai0+CqaGtoZ`QD7!FJWRDk*A-<(Rs1T8wsH9%K6g!u^Q85+S^0k zPN>+s69Rj+=;`OOH%z1^jF^o@na!2}2O1jo>_U#rfa)vEjNW#@Ms~D^c;A=8Sd5y( z-q6CvZtzv2gNo(WE{rd>Od3~=iW9*$@p=Kk7NpCE%2Yr+Z9D6y$Gb`DA-`f8`^Up=gJ~@Aq-Xra1*N$kjLo4RvBc zEUxUB3_NHneZUqpPcv%_;zFBXGIX8K&UY{tUi^XISA3uV}_ z@KjBxu&ak534!HbV3t~!c(xQyzxmXGw@p@kWz+zDfIPZA=KR6;I% zr5UpIZ%WYKg8@_|#F53isc6a5>m@rnzDya&$NKjw`%4;@uss*coTXF2#*&*63&nF8-o8)}{#8%!PQBTuAhQIIoFS6uY}7)F{R++kMm#y6(3roQXG?+t#!&* zTdW=vw0$avCiH8OBhG(ojx2ngW$J(A9Sjor()U%DgZVXZbVA)bwDy5>H}>Cf4|wpf z5aUzRXQGR47&!FKtJ^k3=b-$y$&V$-5_CCtT+UYKCw9V_yoPiyd? zRJ`@2Lj3lqll`=wC(Ir#=(*EF)@WHI3wrE58Y9hI8o}2t&@R{DeNm##RF|m@cc26w z*oa`oXF+WkAD6ND)AeGa6T)|5%@7h2&>;gAlYpW1%Fxnxb2pCzkosmwP6{Xu$3frC zbilNodP+JKUwvfkm`wTH8pVa?Fi&v&3O@5jA!|^ok4~W;sXl$L>}_l-r0kSJ1JbQ? z^QT2<=x@%Gzjjp#F)heRP431_rOK^25Vfm@Uu*u8+a|6}O7ECmKeFGkjsEVt+b(!gHoD>zP~uQ;vJNPzc+6c4CVmIq`){Bgy7nmiB%1HwsZrO_BSH6iwH$ZkVObYKo3g=I2TMXSZpBCg zqAN);S+3z_Nxn}dD#3a#(uK}@7Jqqfi<%WmOnmV^Wp0L5(JPL6tF*H@FI%Ezg|;He z>~DOST|ZN)p~2Oo4g-|t*N!a37_9Z5em$GjY_Pt>}FMOjIQ^bAPlgICcJpos%gS)Xb;s z#_J>D5vW>@)UEdY!M|jn2Ce?6cnYxnaRt#FRj9za2Sk2V*CM@{3??ThrK{c^q;x~w zGq<81=S4fky20UajvT>>!7hG3V8ioCBJ#m*nU`-@i9j6G2YeL@_JKaV_|Q>?SfIih zg^y3iS%dI3LAw~-K-dzauPEA$0npsvmu(#YK{qd&!y(U!n##;Yt}ocDTZ~OY~Kq!@ELUbQ<9sk(yS) z0!yO}4A%8A(`K45IXEREzyZ!*>s6iMy&?sD_0^>Ykkod%vmWQel-_bavOTTNg1Q}J zLgRY{&7m|6wX3dK3RonTRXq~|^7k2K5D*6A#VG;?XnS8Drp?)v2oS1EdV(btbz_d7 z(|nFMZ2!69xkmJd9~(4e2K3|3m)xiDT7U5dQdNHn*eC*rX~`)HOPcp&4)qn13iO2@WJh0vk{07OE;f({XJG$}$GVZNF^oo!hH6>E zk3w(8BS&ev?65ZyQf$bw7xe=l;q~&-2#0yg4c6J&iU&UZ<5x$RtA+(VjJ|PuBP-0Ni4daA|%bdjk=mT zSu*n);pmitt>|!?I5aF&MXbJ`%~VTn@3i2v!nH5=k1Qfg4Kmc?YH1ZENF9CRqg*w} zpS{R^b%Q!Yf=^YYq1EP6|B!sJ=ka6cKAVO!STJ757a?cpk<^m?|g~&KtD;|O@;>I=*%9*mnmnHcDE@l z0E0b(hP$_6MobL`^(~Pp(P=?+>psT_GY2sjd8w@OgTn8G%dhD2^Kdhcf|Z670(*Ds zxUYh0sh4&%;$3`25L4_F^HC*&?P;HUd^HLXSz~Qw1yYGFB28-jJ{{66bLpvZGlF)D z4?GvgnQi0A_nz2%b|t2U6NN&QulKvprPt|ROv5@2KiSX8puGy(GhGqM&kZMK@uBS% zJ<9Hl7bn~5+!3j`1v_&~rewU};4T80Tc;aP-sDV_-FF}o2QHO&s5Z%#9jcWl>>_!v zz5>h$UQr9l1Hr^?;Au!~^x#YmRJZ__p9OfuZK-n_{0(CfiB;P5#CIJ-uh*-%XL)5@ zg(CQ7pvCuU`&HowUfXs{{fBDaWY@o4baJOW4xc7cyKB31yLYxbGSNY_4~A=rF0Hba~e8iOpf%&nF=b)=$QmCX|s;8AfX!V;ARh zCu{|wRtrU#rEC}m9){QFMho|n3ihI(5WQaLYpGTcVfN-}W{42APhin@K%5RG`MHSR zg!-F5C{|KWTP-z1q)C#EGK8^n7%4r4ARe$oR6152^KD?pj<>|FNJhq9sd(<9TYmUa zk5n!*f8E&Mj4g5JhemCc9WizzG|GWvH)lw<&lqqHS8mCb>0>*n7vZX{fel&>NAIih zkfQ0>nQSnGQgBIJ9T%5rdczEdmBn1U7U3+hc{%yA89e9(560d{4|(MnUK%0Fjh1@a z+%1nMAab#C!QAmKO|-t}9XFMy#-TE~r=X(wLZNsl@hnuRR%>{|s$v$wl!=iuc9GI&=`U?3 z#|1Wxg_2SCvYcj^VZ3bTf1(=A5Yg!C*k@Qf%tH@MgbBvwk~5@El;di8R6Zrjawq>v zPtU8nr9H3gNTgRn`S~lM4J3pVhfFx_*u*Yd$$lJ`u+G>yDbGPRhkxd;%R1FT6^ETc zMSC5`o#7#S$G1u4hZx<=tEN={s&;Qg_)C+m%r2+Q)Nf4bm3iM6VSEt!(!##ESAZl- zEJe1>O7tCPWUNKnOBs}rpd`sFj8LHk=uMH54t7?ecS-?CQm5hhZ^XU3@9UjZw714w zypsj3u`E_`P72uEY*-WXDRtkf;eJ>Epy-;}+GRl9DZXv;uMzEDj zI-frvQ^L)rvkn1+$}em2btp7qT(3PfF;M!LOuB%1hVJZU>fhxwN9wS#1k#>kCgVf; zu?Axnx)Fh6&VCaz#R^b;(Uh!x)Je>_+@rt`2dwy;a~K>QLLJ zJ2;37UK&k_lKW+QwqvkumT*-WeAV^!1=#c^+jX0(M3Qhz%61)yP!r{zyF`&_ow*M6 z)pyJ*mf{!?6bO2=-f9h(dHveWT1k$_TQ;=tw#FqygO`=jYiT)wv;6_zy??suB|prd zTHk(i`frniAyy0aQYWwFBRnWA*#U;|a=$>DGCTiF09X5scPHxIaAFIMJ_uAmNWa12qKwvjjf^IXTo}_lb&F%y z;?ZrdvTPZ0qSiDk3KiNWEMg1|u2Z`cVuT=NWo3anRc!dFfJeUY{6zP51%%w;WFpPA z%4Et!Ha~I^V^!@-vw7L{Ddch&r`5H=QuigCRDtlY>v3$Sy3G`?rDXP?!m8R6HvPk* zVfRDFD}z%ZP#4X)&;uqG^a*ceod0emMzh`O`yd|^{<0VtrPfYpurpC(1gV}A;#@N4 zHZsA6869TpjX(5hWV@PJBw|uH=8^2GJ|Qz86Tms#$pD^LanV+<_xl5~(&qWG@KvfF zZPgkX6~n=2434V5KS*DR)nn8q>-!mhOiU(vKqW|z>$)wmW$jda4`OGfBdiVMo{#~M zHOjw9E4hqgPQ}QdkU;1-v>d-fIu#*LP2fCH2Z3NlzQ%*B9W4blv*hwuCq$!^9u&Ipsngqe>iVQrS%kQ$h{a! z;m#d1d513GLH5S3%AT~`uciw{If$=FC`t}SWOAU9Mu|CKZ;HU6B`Bxr=M#gloJzR- zS}W3BQnDRsSQ@S5Lv=pQd4l9ytV=SKBk>VIeyG)Dw=_vnyDDMthPz2+fH?!8sdzMK zD3{}k0%dy$PN-umO1PMwzJjwQ>vEEjm^nOCi7vPQX{zK9^2Xz6H<*3xxj$i=D(>5_ z`GTIJ9-RdGstcmB2|Q-&&bHg0W#)mv0ORW`Pp9Y z5UQ;D51@`96+)j|?Hf&*Q%Nw0KZ2eUVWUjwjO&qSrbU=?V=8b?(J8Mrr~HYW__Eg9 zBZ`peJAxt2Bzb=F36H@Z3ApBPk`%lVyksBmW*&SmqpX{#(>bUgZ=`N{Q$!0Ulqw)o z;=O5kqx?B`p3A=tJ1?~%D>NFm9@d+Qlj9NjlN^|l!Tm{p<|^)B>hg}U1|-&&!@8+P zh65K{T6$i+C*Blk4c}+2Wk*R7&0Y@i`ln;u?i97hqsQfWVMMc_yp!Srvibwfg!1$Qe9L;r z&7=DU>33?|^okN)8jL=@RY9LLZzK0iON7ndlWPwKnOU`s%aw|fuo@rUM4wLKAY6b zL?cYOEAS)7M|WR~&_>nw_*e#|zj+dS)7|sn!Z>ODbwP9m?!jL)4}D&?IZh=JSD*u) zVmGXC%E{P#JBc%@H*@>HdpSbHxBV}yK(AO32d;mJ&<6;%5Jy*BkUvPa5DW|3d25Av z?f2~^>6QiOk08`~5KIznRotU)`0l)#CBWsOZl$1{fk1LmmKAfu_7XD|1`qsEGw@U} z%s%t}+L&(DH)tWi0){vSv)|wH2jyIzfRWU39~B@!@W|Ie@d3%NJ)!HRk0v>2x~5_K zZx8lfmN_aw$kCNaz92HH#G3*Tn;brhwjmB;>4WA&*X}H9(9q2Jg!wcSA9BCVz+;e( zW|ebmzVdb$i*RBhu`~m)mn)&(ZjWhl67DsiPOw&$k0zbZYz2UdR{;m^_gh7t@(^$F zOWvSqy;9b1uC&d6xS_luwEEfQ_&fs31-?ex1HfE$`04_9%gq;iLT+2pwN?z7h4xyO zOE@Be+`Ni6GVw_{qDaI6qX$W2wt~SCz#IeWMK!tSsrWgI>m4c7al>Hs^>lnvv-9@O z@&i(Cd*%jm^V$^KKbTS_ZLZE1q+i*~q%yoztXr!yEQu_YBDES28QZGSpx=%N3X0sm zaI#_m+3$Y0A)nq~PF*rB&6SkA*~QYK<<3&1|g!oo7sxFpmiAyxHM#*?uUoxh#g zI>7I86^vu_{Xn1Q?UhnIBp{7RAC-QwHTqMXFfk!>-!cI{=D_R;Ab7{pOALY%Xk=PVb2UGyc z2fo&#j@iyHzqbc1bbbf!PvdKm(}<<`j#D`Riq>i$m^7-mj5$(5OcY%Jku#w;4rb{+ zHBa()nT>A>{f!ij`Gd@*nhS#jZ!1EK^Pj}pm%`MwVBbdk)@zig0+CRlA}z4}-E+MN zn9DuWGOLm_HO~fQL5}^oJI!Xp=nv}x@y5W20t0Mi;ZN}sqxSFhDE1vwBsRax=blzx zi3tPXcBc%*PJSEg#OlmvpsF6?s(YOpff}rxXgGf6q&$JAq?pBD*C%1ICO?|HXfK7=+k^3v+&hh+4wSFFP z#Lq)VB+e!O6Ylldaj9vo-Ywul{=(c`jrG#)ldJ9HQeN>$z$H-lv>( zb_=I&w(@SDI{{W#2Yydcuk07V0y!Te8T1=*4QN#}mpHQOL zS95*w8`N6;lMg?(+bgLoD?nbBDa{E3e8q}FM=v)lv5v3}F}JwAocu!Mq(7LLC`i09 zzo4Mwv15y~m-mgtDB#PmN=*gn8l977fOh{Sas#OXuKl5g|3QWSp@#eZMsEV(qyGaX zoaPUa{6B4vok4E`%L#xp|F=KY5#;JgK*h9waOMAt;QkEYzu5Dk%aCC@py{_<|91TU zh)S0#;Zr7_o zdkggH^L(TF7xTAeZ_a1SMELBYM9khk%HDVCaAz(G`@UO4{d%U!WEt~!zMFKnhGwCx zW4Ar6j3YXhX(HZMcceRQUWw!()s5R<$Dq*@Ln?~9<^HVTDHOZ zO&`sDvhPkW-2M@`14Kju_y#C>vDDW`N_yF#Ane7fUd^_TYivJ{?QX(Z#(&*O-B>8V zFS>9Gn-w}w!&^&a1g=k^|0Au`)yCMah!K^O(n`(MJ?2-+fxgPW z2YkX`u{pu_Fu|sB=WZ=DyJtZ#;Nj5i~=vtD*1(Z?hFE2=>MSToD!w8$0pVM8^fskqR&2fk2ONFh0%Ds_inO6j4Wh zMft1{c>IdQx!{qE`9pN5AzoaZ2(U_fc5dXuNz4s5FgHMYwS5nF2%^5z99PHAAs(T# zoHBgUpjppJplv0A{@V@G=*s|2AToZ<{3BB6?+u45;YCunjudiM5~!NMV55?V+C6*` z)3Nu6J8KD=3+|`+Kb(63lfTsequtx9I+D|xuv(!VyW2tZ(p%*CBE%M6MkU3N0k1sC zba`|H8;K9#FQk}IWpeYyvA*(hKSzYny8SJ92kALBWFT+?mav(KJe<7#GVPSL+dcf} zdQQysUju2+x6_Tknk<)?GvGj!!7P(w`O@HZl*aTG(@Jy>~&N=DI&N z<2$UHyOOngzX$Pz=5Y7g1R~AW2;eo=K}K<&3AB_eUgnGI;^SF#Adns?h#my0d|!Hb ztc(X$RCL;}K~;r={Llh2xtOE|TvRojNJ4qbXg~Q|(Q`>%AAden$RoKJ^fiS?wKj1HIutMabB@ zLURDLu-=9YytxBsp^n{BT)jQsA0y9I_+;+L@{Vbh5~w)`8zT((qOb7mv_4_v=j!O% zuI-Hs!XQ{IF5L3@2V@M9+%fZEh^;o!rGigMsaW9JZy>~A@?LY!T1si-<@fN}+U1MT zqhQIGMaeHw`#ks}F#F{)Zb&RZ*Hf`HJJl0rNLOE<%7k{1rQDjC{@$H%UD-|J;+<{R%}I1k)(d)yEex zD!Dgx=K69E3siUik7x_}FnpNH8aZAR71nDo9$Xr5pjr#NM`({)3tO6^AI12MDI|bE zfATZ($eZn{WX$rjuP^W`3Gmeg@I?ZUG2Ogx0TcG{noWI27T##V1EIheKQQc>Ydq^P z;}ozBXYMk4=}2NlPLkt90>y^2#J&AR1&K;{`?J~;u8k8w3_?<3>{l1r3aaf`Q(z0ATmpacxFFeByrlco9E|HIA2 zn=;z(V1dR?2$v*sy>-OgEbXfI&(4{^Xn&MCbT`rG4 zu)_xy?!-hQi7!oFM^RiF86M|$?$2I-)skHc#oSzQ6A}esL=(pJ;Cg9SmXgg44geVg z2$;u$zdhaFBMake3wFe6(kHG7d$2+NpE27HrSLo1ctA4=e$6}ZLd7h!8W-zzA@CeM z1~g%XfYTw9&sXC$Il1qGE03AsU;z(C2IKdieYg!ZeUS z5(^^)_MGoFF(b4)cJt!NxY3m1Er{}qJMWQfy(@XK&Q<mW6li5u{UPhdUu7}T z68BvtP@@hX)_`;>F4x{A+y11wD&a}m!(4{DbgsS1Oz%v5)3bO|M7S*d(tke-g28(S z48}ay`zy}BnGk^<@?d}i8K^Nn4-B7QU)wWCAa1aAe}*rz@Le3jC8izOuwr?r*G3te zn9`@ts!c(-r-Y({TiS?MHIR9imCZW6dG}CKX{Cx=kMjNMiL6}3#36vufTYn`ji0V` zmlv~XmM4g|=U6}*z#t_k-l6IEgIV0=-m&%+KD;B`bNntm7soIs&(D&jLZdsO@_S6% zCo>9-26DbnNOJFy$^4)>ljKyxn-Y4U93Rz}`MM;~5J-sAUn@8}s158Q-mOjeB=!@4 z##JzW1J8V}s7}zZ)KdKlRc1;*$%QUg7wGO=srto0lb6rv^}hyHZ5ZZCDwq7 zr`C_Ik)ID_bwpMrcWf(~OX$bAeT&_sf+wV~#Y)Z?yw}QcDpalWe}FI26r}`s(CvPm z2ZO&vo!p3R_H+Giy+jcl-}r*a|LEdSVB7H(Hsh7F0_4{e461_yb{mdAbg-#5blAEx zSwA(e`hZ;Oz=h|w8MuK<+tb3QaOagh zE}SJv7mzB;E2iV>V{*U1=~m;34l|JX2ryAAZBKBXTC^b5wiQg!?U$6}hKja`-} zuPaXw?Kt^V||(uJ+iuY&Yh5dER9 zh{=tf@yO3a2$N(o?+;Qv84gA1=7)c@zCQcrTa#Yc&g(L&zbS`HYOc}wrOb*z!-FX; z=h)A<>RMhcP5B?K*gk%$m3@QL#J6MDqruM7|GcW?gE z3}SvxL#i_F=g;29!VqQ2?f6_G7e7=At{-d z{yvv2HEU66``N=@(?*%>+9DO^RtVR4h~4F~uZ>WxS4d~E#Q8&XFUCN9jYA2CoP$K} z=`-g<@wY*sO-!mpl4?*y*{BNdHh&Em|}Q2|Kx431}?N2J4wS+~bzU+5uOO%Vi6(8Zz$I^+}Ye;ft{RC`bC7VHkGy`RqZ z7SO*m0$bG&q18D0`j&4hiF2YGI>fE%R-B0)MoGoA()?YvAt=v%!vq^PT&CY7GdDq% zn1kiZDbKU2xd+aHH0fjDl|aTRL)rTZy4yI{InOhSdH5`t)2N|IQ=WPaX_>v-sj!SL z!VfAa*1>pM1+^l6sr}g(?O?He*uiedv0sHb;V2PDENPvJOZy%6#$e9;@aBR&wg+on zY5I@UNX5k;IDAJQ(r1yGx43)6%6+IQAHGxBJR%$daF<;OTsp4!uF|xR8y5^C8}=XB zJSNH8mu^;p|AY0ixFO2QT@A48_9;&%=MuyoE+L{IRNgK>v<~)yNm{)@FTNSK@nas5 zNMM%@jRy8N2GGo@?P(R+``2X9k`BJKuWC#~)D%8LRd?WPl8tWD-QB6`p*vWhUj#s4 z_{t%CIk`L9=+TrXwI9@?fFt^%d?qdnK)=zR1DJ7A&dkhWNEBY<)Fg3Iy5fS()ud6B zEz~l|zB%8Ij~KD~@+FW!?iO=pv%I}*xMUK|vsd)L^^_tWttUSr5D}|dG4D*%W6%vPX=gEzzzrOd zF|5=G`m^91e9DlVb{HLZy}$RF#CduO_6`NO1< z03hAzz``d?S`+~L#BfmLbC~aT@y)FCcIU?XXlwf3y_V?hlE=4mijD*P)b9;y-KXIu z=iA~nEi}7=!l-uh(r;+<&{0A6XYVrMbq{lq2d>Pmcz>X#{^nEljU7l${u@Lh@iM$E zxeUIMP(}TSdr-leQ-aCfR%rf=hk6ibH=SIRMYw z4xdaIXpxgaM##AEGewI|)xpMm$qa=^?MVx`c8>x}-tTofjSKXPTC{_OmSA)PgMNhOQ~xyx(o~ zU{T?nXOyCTYUF&m$ik6V(3qq3C9iKPM4+#n7+TAF*xOY@&!s$?)zQh1zjl-U(8S^p zA8}DG&z;b7qf{qiwpa^k4^N<%wQ|f2N=uGsP230T-Uu?v3O3@%KM?Kbh;il@cX5W9 z%7Mt5ekE2=;UhL4&`;aMDvJ#8kMwM{G2^ET4907-#gq3I0cT)Lh;^uQE2>`U<+d3> z{4Go~Apk`aMPcWIVrp=7!{kmE3AB8B2*J>2&^6qe7GQ!Dh396tA*Q~VJMw=)b`)*L zlbZoKzx924%|bD$LeR~PkI2I>Twl0rWn2zL+wFVT&5RnWAOrIIomybwvIIFVsYH?b zhU{ZJJI^XpftFqy!2M=YY>#u^cG%P>3mAuOy#}*@nlbG2D{F%~Zy>7qwV%QQNvQ+= zhWik@Lf1nDS(GOE2srJuNidJmCrABhwI85faAG$B=;;lB*;yr8DmNZ|-%Kh1&Q?)* zI`7tJ;{qb*N2#<4?zm;E{s#P(%H51$V=jqZxyxnZ>2&BeoB!Xdl2St(<3}XsXayo_ zs|gXwJuU%+$~&V22XRAT{@L)$6lD}?j?)d00*1`pUz~_>NK+YDs)gkzzv8Pvst?S~ zAU@{?cQH^puON2s8%+l!Q$xEd!>5_@{5m!c-3qI1@7lK=Q#O}BL@QP zGlT+=OL!zuVdL+=X!h9Z3Js_QTiu-_7ZY}I4s^nJi4aaO`QU-AEMR#x$6YE|pOMGm zZ%-l%Eid(Z05hrJHx$y+7vR>}shl*qoZX-CuqXCcyaT}Lq^+LN8}qs}In6@-Y#7EYWx{ZLJQ; zbtoA=mzepxwtl&nU6$z=2fE-1JeR@Ss0BD(j^6$iH6zqWGq8>IEeu1rp29>q5DCZ!81tv>k$PT8-F}_2Qff-8{ZZ4&uhC-Q$XocC(Of* zlX8BqSZ7RcSmtU%O69C~sk(hHvA}jT{z(0*G5x30e=j79S?Ko*--EscgABj@TzeyU zg1*{~Qke?=o`HFRA^hYt180bGSlz;m?8el6>XW+699$0)=miK8wbnDHTNn(Z=FR4I zv;SgRAT!dOc;}J~GnQ-XDVlgVmJbqcEik;hv2u_;AzRC(g`HlC>pMH0 zGV_PkPHZXqSX9Mv2Rm)i@5xu;{J4b?LLGBDQ(@SBx#B5|5TkEmv!#b?vy&()QylRq zHobluWR%gtO4Kkz5Z+F+sr?U?U(}+4kcErO;S^#*vSB?Zon3GA!RP|K2`>7KiTh_4rmMdU8bBp3^1h#?s%sY@%8+Dg%ue!{-m zi~AOK>5H8J>Hs%<|-9S(I)era#5&aMkf&2tP_1)#|6{zPF17jgG&^K6Ilw2T0`p zioIbm4vq6?REDfSb_r)V(5t)gs9zIbU?p8rYMT^L#E)l_utl$X4dx+f z?ne!yuCSSgavFi{|4m=mgJADe6u*d3(*W+2m!H~o;-I$Zv?m~X%3vjd(j+Fb3GU~j zE3xZpMs(Sc8Q>%{O(p*q4vu!QI0vs&MHzP%|OUA#1yzvLdjX??&fbroiGkR6j$1$hx5A@OVn`1SB@7(+UP$*cat`}U{Y)F z`CE#o#xb9M|1HIr1;OH_gj42g*Or6F>if+@%#zIV`33XjoB>t%B5AQoD3sB0mk;~E zFXomw4+kLZp7q+WSrV??r-F8Cm39hvc~fgGWB=(vnZ&4&dgd0ey-miw=cI=Yo?R>| z%=ECS%PCzJ#H0azHd5glCA0CDw;)`fO&Xbj?RP_fd^-C0O2DR#>rnA(GhjtFXYqZu zBFsribI&mOV5L+OrO6#Wg=f98NxW{I_Nh|ViRn)o|63b5LG+qh%fh&2crV=n-)v@{ zZ|maso??lO#sg$<2{wYyBR@IYBwNTnHK@mcViX%T5HR}aJJ>4#X-2U6ww$!7=r33- zre{iBJfB-`;?#k?0n_VDKK|`WRY=-cKCfSjEWGN@Ur(L$=&Yj)?22>wha!@xpc6Ow-uqXZTIHOGEfurR;&eY@X4Vw2DobFzk4 zC+AqV&3s30(zscjx4g(c^Sl&Q*TQqw#QGnybiJb+`v*WxtYen>_a?&3%SR5+d*0jK z)4{?0O_QysHqI}XwCgS9&|{MC%d7aE|KE}GEfqA}GXXVD+eQzH#seY;=Sr=*11+Pr z@)&Kr*vcQ}L?Y{bCbH|trVmWn?3)7wO1RKNKIZRpgJ39z@jDS%G@-9hIDlF&UZU

o8Rk!d_s8MD6vRobi zL}C2-U#^46uJJ^6)RDtG>KW8TMfedYv$7c*?zX#72vq{u&YD?#B0{Q#9yuMpI zTA5u*k>EK#;^;TiChtV3u@)6j5X@uVA5dlVO>#Iere;@uPD#ve_vJ!QOsLRTZFlbL z$i&q0GT|5aT%aUMQ*64&SZff$n85~67kkEge@mjrjHV#*0!dH+#HkKHy_3=LV(}II zn@;Nm3aC6d{G=>=(UYje5Ov$Z-OASCBbjyS?I4)gqiIN~#uHU*Q7)}F95$pc%HR~L z&n@1)v94GzUt(^>dWA|--1K(4@Er-@SU)LMKUk!wKzmxfM6rfXeXtrNpD9doDMd1d zihwdO>CEs3x##0ZW8u!gTLK*3kW#94Gn^D^DB^NMK={L1NS5e($iK_}~Vrrr3Ds`cfDsY2e(^shL zg@74CjTh@7`c}?rO?c>xdcbMEvc3A*CC$ous!;@UFui7m7tw%Uyxb2&$}1GBub{i> zSOhyIh(r#6cj$|O^s}_Hp-XMY&utxC^vkb8QmO91`F&DQlb*Q^896)*l(>_P)b!^q zsvq3w9Kiz%1ojQv6?ee8M^eBMp=V$@?|Vju15@|FoBZzvk;sYJOnVaOFFrJL=vj;) zgN#pCIX>;?q28YQv-%}PQeqp+wxRp~BSws&wMfgn2z#_|2pea?#0=rf*{nTP)Gn>U zaTP;dPA-%DiR_{8J8R$p)L$m)k zr(Q2+Fg>A&-<4Gv7Vz@(gEt7W)E@_!C$gkBO%FQid2gs97V26gY+35r6X}8#QTfIg zU&8do7`lNioIEGJ{5}bF{QTzri4DdS77wP!4kjO>sa8Wd{kBkw$cZPaF5ughJzUk> zj#itTA5y;~ABta+KwGe{t3IdnZLTMHa%>T57=X`+p1!Bt1G=U`u<<)b1}2gh0#j#I zpxER$1<7lN18Mn50bxK!O@I0)gLjo8B@0JtuY${M%Hm<%W4GypPJ&l7jdEft_fC{m ze0TG@f~sN+sd^(@pP=zgiT(F(!tsEXwAZBq%x{76-vU=ZgY2$SN?(uk+kb+T=FVjs zelQyu-sR?Q#Z_o+R>_zOhNZYyee3C4W^GbIHnDmzje14_2aMB@AfuJwQaZW4{B_vI zNwsLkn^bBuyee)}>l_P0W=O!PZ>vK4P5G3^O={GmdCr$K-9Ih4N6vpqB6Nt}hHd}g zc+9mPtQR?{@bPaB?t1o>7ZL>|H++7eiXm}}>0o3d+525{Q_-g-qff#>h7)8%6XIkL zJ$T{b_bXo)pbd6Yo5*UBj3fXY&u`socdooEp^7rkb<#twSP;cF8Iwo@H3#1ZbmY($ zzC2c#+2ykBE{l7DrF}WlZQu8`RgMY6%BO(B+0x7!m=VcpPp5i+#ci5vX7it=woTGumiKWm%4%C~=s=oq zFei{7Y4oq9XH7S%TD;!i9yI(O3|ma!O&<>{rUv2P!{`{hw3Bh+T$}cB(oe*F&(Du? zU8PVnsqaufDW#tvQ;{@tOGurE;Vg;wUf;~&q=vEq-IabS^zNcl7o*0wi~%i^IO^0V zNDAc{b*>JD=2H3Ahb*55!~cQQcf>J@E1U(YYiBj_N9VF>2uTFEE`cMlxc!YElf1EL zfnSzec}?tT#uK1HI)3w^H&E9g!3toA3feXPH%NaO!E?1n8_=>JEpjDqidq%l$4)&) zlWq$bT-n*N95O9?O^(?C3G1C}oBgT1l5!WjCf|b-B7V49AU=>;&hfL6hZf9>%l5l0 zlOhIGzA(%4EDPM%r-tn4>Fx@zO9!K`zk3-fo(e6*Q5@T4pEmgoRe*D+Ei>w^{u0Xo zBbL+SXz7cdIG}P9nkUH8(rOa7y((PuIH%9puD{)$UB`iI z+x*5RUZdaiTQsDUc_+u|tfuMfHRL^VX{`l2zKjm&UA*UUAA33od*tL!oFMs7NL8G& z5&Q5mC@CB-#4FJj?5=v-_cDb{$EZ1qziF+PcSFSalWv!i2UCG&`+`y3^@+0D>+{cL z0}}3oq)=>tA$tII$A@hfm-%xdN)mq2dYyQ97d?8kW21kFhgZ-nn(hNL=g%IRuQYhy z-_TdqN#yek?)+G>JowliTxSPJOz|3?P@9&yvVOqrUi2O}8VBAn5Jweeyh&O^Uy zZzQwwpwp=AJBm{eqP$;q&f*3$%?J5M0tfz=GN(KFV-MWBRE=YQs1cpc`}^reEY;m# zeSc5+EdrVH{cffZzbV#D(H8~uGJ(I~9CFLG6j6t3XGPmZX3e+?q~y?v2~*v9#TD1b zQ3bo9Wl@jN3Ts+_HJz-85PH7PrLskSEYs66xlj2U1aq}`i@gR;APe-&Dcyz|nUN%A z05qc~H@{^ zN}8s=pRDi^t#V=U_G_%pLZ!xdL@!Y|Q;$wRPfDh!qdY%OH^x$VX9s3NRjGebrYN8^ zWew}(ef;VSbn~)(nT96vKaH+6o_h{BdleC1T3-{vi!%rXUv$p9BmH6vnid%1=6 z?G*;J&l|lqjz}5Qj6a^I-1`mml)jgQc$)ki)?-9JkGNwfNIlk+LT{x#Gy-AsB2IWR z!%{h*VPF-}=YKm9!j69Keo&c}j$qUIhk!eb+Kcaw#-NP&0)kQHV!BPcW+bFz8BxIi>YM6)aVUsC_#La(mT3ZAG!972@d-m@Yf zjDMEkw&U(9p-elH7>+lk+u?tDCkd%eTHl*?gTr8;jFP+khT&sO>u!dVg)~#gFC(6M zGh&mc)Hv+{u|Y&gq+8&&3ekA4*D0zl39GfR*4i4>L?XQjQB`Rk_S)bXwOT3l3lkAnh?1)|7 zHILePTFF`tQN9$+%yEQlVIe&M5{FMZCvtS=r5P>VN?kzBHydM{?Pz%Wu=!(du`+5V z?c-p3g`=?^H-wAc-FnPdn@Hr5*DyXJu9ksgx^r;IrG``OZR zn;FGe6P?qLV|ccys95#;yfOh(2-Cze(#7haLhZ30>t}tJF2i1OO1Wi=gOy53fsOmJ z@HJW0fdk41<4QZnuheVq8lDmd12Miq0lrp0e1grp+470yGQl9b1E6&lGFq3Rmi2AzSbjcc+vW(eO$(Ph1@%_f{ zI!q3Q(=H(+w9g)S6y$^_7bYZWOvU7ficw+}g^L|cTCxZb0O$6c+DlfjXn909UdCTalGfXl+iURj{9bR=0kMq3)KcLcyJn-Q<+NxGb)iwJg%YGY4~1)KuC}Y;;#+p zY`JPN8&mnn;rAD7tgfoR`JAW9DhVc*0>jwgAGwvav(z%Ca$DATJC6<}eX=1qoti_h>p# zln}nHOlSP+M7NB;#5LezyyVj{K0@IqJYubYVPG0R2B|(MMA=R=yI8)@%uQU)1@zvH zNj-pC(1gxTx*i5zRhCuH9@z49;9eZ_J;v)96uk6$`icSfcJriZ-j^Cpd%+(_4&g^S zrTH1F8|KVZUeDz7WSWwD$ofi)uBhf12|pkYe}n1o4+oTLka|y-VzNeZ%9p_JNRnC3Z9E?==7vSG7V}+gY7lk&Mt0w zujxzH4#`j;E_(_S_9n09hykLv&6LZ6fHKTbi_*uLjdG#JhK?Di%Mvs~cw0Npw7!3k zRs8mE&l&Lv5jQh3wFo<#6PA|Ub@t*Fk4V^<8jTr=7NK0&WPtPUlF{k6(R+a^DS@2G z=f8V;+|6xv`sIyr2{0m1QaGpw=NEgBS@D4B?Gy_@g6QD3wgIrgv9FGUV)pEhkOl`ye-_|!SfU!{z{l?^S`Ay;`~5_Zb_ zkrW5R$5!x-U{pI4i0t3U26e3e6D4m$8kGOrEa&3Xqu~8JbHKA1Ecbiw@2)6#=g(bt9e$UzE_^i0T z?(urzV|0^q7*wow{aK|4DOlUo;WQf28=E98j#71(OFv~!BeBqkNz_5|A_>u89U!2QX4g$bL;~fXdXFs#=jj2ey z9gH0Qkbjqwe)?7L2e+p!9m0vp{|W#d$Mlok<;uo;SNsCXKUl;VSW+y_%~^c$POewE zE77Oo7Kc^@BJIjl%3B^`_kj5f%xD?i;(4xe`a8o9#ow&Yu|srGhK;FT_4!5EIQSl+ zN1Q#RAF!h&wLJ{6sBv#Ps*pd2*F4qDN_vX}X0MO`>8gZceKjTon_pBakdvWK?j5?z zeA~o>9DorCG>4P?lBoUOS*mLmmw0~~PWbwI8bp$g3_6O?LioAXt8n#5KfG>RV}AJFP$r5k)=X zrN)yI3l|-frg3~VT6M?yJipTC8(T1}zl+jpS!_TBVh}y-q2fgxFJc-sYRyR}vvh(p zbu=sm1gEyUoiK8LDxh)jGUfDYeb^?rPu*spa%{yI3J8BUc=nWtHMxP@jOr7< zNLBeNJQF88B~Z434x{>t76@0mtM!K3`{%=w4uu}UL!gp&V0K2ucSnh!K{Fxbm%Jvy zIwVH-{*NrITMhyFVZg-MUncn3s5O=lzBi-$(9%9BUFHKYE3-Ju5vw_{dz9Pmy&6(e z5^aMGOf2Rx9FOqyFQ*AqM9+VP#%q>!Z15!9$=ct&^JfpzC7Y;r-RA?J%p9pedj79J z=!0God1lwOT8s=bC`%t?m0AhenD<@cv8e`dUYrm0Rx$K#tnKM&bv%*YB^%*~Wq5Q8 zH{bY5zZ3ZiymR-l9;eFI&r~WO=y}NPhrT}XP?lZwt4F7&h`gm7GM(awEc3eGUK)3TCF|sQGKG-LL_NKbD?!Fp*1-5@s zo>=~iS6{I&YFnf-u4+cy;|eTVrk#5*Pv_Tl(rW}j)(*L;z%{(DV6>89>GV*&)unPWij_Y+uo zZMro00e>;01aO?nE5B?-(pYX&e}0JWWI5hIzxoZ3(6@k?%Fh@ze@&A>K;lF0c5y7MI{UPE7>PO}6uFcy?mz9M?-r>PKd^VBbb{v|Kx4do zcW2U`TyEKJMvtPYH#1z%cBTI`16DF&9owwFSmGxPPj4Td-*qv$>F7nKAzc26@VrLt z;wL*($$%SLK$Jy0Yb3pNqfXOBxp-)TqllJ%EZu=_;_a8llhXAYuga)jjkxDc+Ar*v zc$#6Mo`wPon>PBLp?f6IW?gS%8K7&NS?fE7Kj`s?e14D*PWgRhKj=hjFX2m}cMQ3P zdW#uqJzIv5V#T4T_Tf86c8V(3Zc)vL6qL&13K9~^O8CFt7Ub1Jlfv4Kdda}gU6N47 zPx_x8SB()@ESw}IE5arA*CoS^Yo+_;W+zcv66k=d@~9p7G-JIkO_D1%15^{rsg>hM zc;~m!t41Q5^}*3jm`1vX!<|(E9HF~|g$KhxMB*w3_@5z=y{sOIsib6(mnjYw${3qg zE6+<2Ai_3f>!2J}g1xWf2(rPD0k(rqp2X14$R3MO`*bd~>T(v?5@CGEm2MO=A~zJ* zohje_ZNT{n1!YB>1ipyCf2XpYNb?Lo_=_LoV@6`VA#;}BZ>wJPUjpsU{)kUjACT&? zQfF4D5z^j+A{KN2;JXX#sHKd~UpoAl=Uv>zE+Z-cA7`Dlc{x8-e)1g)VCV*`wT`wq zcV5O|pvvI;?hK8^03E1On22p`1K0$R+JUj438MAz;FkCA=0ZCRpnEN}N5^M}Z7mWK zL9<)MWQxXYn$-$iPV3%rx#OM0|+P}y0ZXt912+5sH$G!Jw$HXl%}@5HHf z9Ji}u-jt{o`;yaGJX587cf5hZ{f_Dm5nkTAcOR!E)D7M{gpq}$w>#f-ToV3@7eztkzCzE1J z7kYUrJ|!_X9Wz&m38m&IKm{0GupZ_W!E*)($)Zm(OHgj0B2h6Q49|5sfPQD0I;wa@ ziYT~LPS|Up2i*p`3eAG2uS}YRr'$SNk?Wl$Uzrsy?pM3I3Ad@W+RE3PvzjD!%O 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 vJ;ZUqXFR4~ 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 diff --git a/boringtun-cli/Cargo.toml b/neptun-cli/Cargo.toml similarity index 72% rename from boringtun-cli/Cargo.toml rename to neptun-cli/Cargo.toml index 931a66e..efeb765 100644 --- a/boringtun-cli/Cargo.toml +++ b/neptun-cli/Cargo.toml @@ -1,11 +1,10 @@ [package] -name = "boringtun-cli" +name = "neptun-cli" description = "an implementation of the WireGuard® protocol designed for portability and speed" version = "0.6.0" authors = ["Noah Kennedy ", "Andy Grover ", "Jeff Hiner "] license = "BSD-3-Clause" -repository = "https://github.com/cloudflare/boringtun" -documentation = "https://docs.rs/boringtun/0.5.2/boringtun/" +repository = "https://github.com/nordsecurity/neptun" edition = "2021" [dependencies] @@ -15,7 +14,7 @@ tracing = "0.1.31" tracing-subscriber = "0.3.18" tracing-appender = "0.2.1" -[dependencies.boringtun] +[dependencies.neptun] version = "0.6.0" -path = "../boringtun" +path = "../neptun" features = ["device"] diff --git a/boringtun-cli/src/main.rs b/neptun-cli/src/main.rs similarity index 90% rename from boringtun-cli/src/main.rs rename to neptun-cli/src/main.rs index ecf7083..fac128e 100644 --- a/boringtun-cli/src/main.rs +++ b/neptun-cli/src/main.rs @@ -1,10 +1,11 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause -use boringtun::device::drop_privileges::drop_privileges; -use boringtun::device::{DeviceConfig, DeviceHandle}; use clap::{value_parser, Arg, Command}; use daemonize::{Daemonize, Outcome, Parent}; +use neptun::device::drop_privileges::drop_privileges; +use neptun::device::{DeviceConfig, DeviceHandle}; use std::fs::File; use std::os::unix::net::UnixDatagram; use std::path::PathBuf; @@ -15,7 +16,7 @@ use tracing::Level; fn check_tun_name(name: &str) -> Result { #[cfg(any(target_os = "macos", target_os = "ios"))] { - if boringtun::device::tun::parse_utun_name(name).is_ok() { + if neptun::device::tun::parse_utun_name(name).is_ok() { Ok(name.to_owned()) } else { Err("Tunnel name must have the format 'utun[0-9]+', use 'utun' for automatic assignment".to_owned()) @@ -28,7 +29,7 @@ fn check_tun_name(name: &str) -> Result { } fn main() { - let matches = Command::new("boringtun") + let matches = Command::new("neptun") .version(env!("CARGO_PKG_VERSION")) .author("Vlad Krasnov ") .args(&[ @@ -77,7 +78,7 @@ fn main() { .env("WG_LOG_FILE") .value_parser(value_parser!(PathBuf)) .help("Log file") - .default_value("/tmp/boringtun.out"), + .default_value("/tmp/neptun.out"), Arg::new("disable-drop-privileges") .long("disable-drop-privileges") .env("WG_SUDO") @@ -136,10 +137,10 @@ fn main() { })) => { let mut b = [0u8; 1]; if sock2.recv(&mut b).is_ok() && b[0] == 1 { - println!("BoringTun started successfully"); + println!("NepTUN started successfully"); exit(first_child_exit_code) } else { - eprintln!("BoringTun failed to start"); + eprintln!("NepTUN failed to start"); exit(1); }; } @@ -147,7 +148,7 @@ fn main() { eprintln!("Failed to fork process: {err}"); exit(1); } - Outcome::Child(Ok(_)) => tracing::info!("BoringTun started successfully"), + Outcome::Child(Ok(_)) => tracing::info!("NepTUN started successfully"), Outcome::Child(Err(err)) => { tracing::error!(error = ?err); exit(1); @@ -168,7 +169,7 @@ fn main() { #[cfg(target_os = "linux")] use_multi_queue: !matches.get_flag("disable-multi-queue"), open_uapi_socket: false, - protect: Arc::new(boringtun::device::MakeExternalBoringtunNoop), + protect: Arc::new(neptun::device::MakeExternalNeptunNoop), firewall_process_inbound_callback: None, firewall_process_outbound_callback: None, }; @@ -195,7 +196,7 @@ fn main() { sock1.send(&[1]).unwrap(); drop(sock1); - tracing::info!("BoringTun started successfully"); + tracing::info!("NepTUN started successfully"); device_handle.wait(); } diff --git a/boringtun/Cargo.toml b/neptun/Cargo.toml similarity index 96% rename from boringtun/Cargo.toml rename to neptun/Cargo.toml index 35ff2f0..6981736 100644 --- a/boringtun/Cargo.toml +++ b/neptun/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "boringtun" +name = "neptun" description = "an implementation of the WireGuard® protocol designed for portability and speed" version = "0.6.0" authors = [ @@ -8,7 +8,6 @@ authors = [ "Jeff Hiner ", ] license = "BSD-3-Clause" -documentation = "https://docs.rs/boringtun/0.5.2/boringtun/" edition = "2018" [features] diff --git a/boringtun/benches/crypto_benches/blake2s_benching.rs b/neptun/benches/crypto_benches/blake2s_benching.rs similarity index 100% rename from boringtun/benches/crypto_benches/blake2s_benching.rs rename to neptun/benches/crypto_benches/blake2s_benching.rs diff --git a/boringtun/benches/crypto_benches/chacha20poly1305_benching.rs b/neptun/benches/crypto_benches/chacha20poly1305_benching.rs similarity index 100% rename from boringtun/benches/crypto_benches/chacha20poly1305_benching.rs rename to neptun/benches/crypto_benches/chacha20poly1305_benching.rs diff --git a/boringtun/benches/crypto_benches/main.rs b/neptun/benches/crypto_benches/main.rs similarity index 100% rename from boringtun/benches/crypto_benches/main.rs rename to neptun/benches/crypto_benches/main.rs diff --git a/boringtun/benches/crypto_benches/x25519_public_key_benching.rs b/neptun/benches/crypto_benches/x25519_public_key_benching.rs similarity index 100% rename from boringtun/benches/crypto_benches/x25519_public_key_benching.rs rename to neptun/benches/crypto_benches/x25519_public_key_benching.rs diff --git a/boringtun/benches/crypto_benches/x25519_shared_key_benching.rs b/neptun/benches/crypto_benches/x25519_shared_key_benching.rs similarity index 100% rename from boringtun/benches/crypto_benches/x25519_shared_key_benching.rs rename to neptun/benches/crypto_benches/x25519_shared_key_benching.rs diff --git a/boringtun/src/device/allowed_ips.rs b/neptun/src/device/allowed_ips.rs similarity index 100% rename from boringtun/src/device/allowed_ips.rs rename to neptun/src/device/allowed_ips.rs diff --git a/boringtun/src/device/api.rs b/neptun/src/device/api.rs similarity index 99% rename from boringtun/src/device/api.rs rename to neptun/src/device/api.rs index 098b04f..eccba44 100644 --- a/boringtun/src/device/api.rs +++ b/neptun/src/device/api.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause use super::dev_lock::LockReadGuard; diff --git a/boringtun/src/device/dev_lock.rs b/neptun/src/device/dev_lock.rs similarity index 100% rename from boringtun/src/device/dev_lock.rs rename to neptun/src/device/dev_lock.rs diff --git a/boringtun/src/device/drop_privileges.rs b/neptun/src/device/drop_privileges.rs similarity index 100% rename from boringtun/src/device/drop_privileges.rs rename to neptun/src/device/drop_privileges.rs diff --git a/boringtun/src/device/epoll.rs b/neptun/src/device/epoll.rs similarity index 100% rename from boringtun/src/device/epoll.rs rename to neptun/src/device/epoll.rs diff --git a/boringtun/src/device/integration_tests/mod.rs b/neptun/src/device/integration_tests/mod.rs similarity index 98% rename from boringtun/src/device/integration_tests/mod.rs rename to neptun/src/device/integration_tests/mod.rs index a4f4799..9f76ed0 100644 --- a/boringtun/src/device/integration_tests/mod.rs +++ b/neptun/src/device/integration_tests/mod.rs @@ -1,7 +1,8 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause -// This module contains some integration tests for boringtun +// This module contains some integration tests for neptun // Those tests require docker and sudo privileges to run #[cfg(all(test, not(target_os = "macos")))] mod tests { @@ -268,7 +269,7 @@ mod tests { open_uapi_socket: true, #[cfg(target_os = "linux")] uapi_fd: -1, - protect: Arc::new(crate::device::MakeExternalBoringtunNoop), + protect: Arc::new(crate::device::MakeExternalNeptunNoop), firewall_process_inbound_callback: None, firewall_process_outbound_callback: None, }, @@ -563,7 +564,7 @@ mod tests { open_uapi_socket: true, #[cfg(target_os = "linux")] uapi_fd: -1, - protect: Arc::new(crate::device::MakeExternalBoringtunNoop), + protect: Arc::new(crate::device::MakeExternalNeptunNoop), firewall_process_inbound_callback: None, firewall_process_outbound_callback: None, }, @@ -767,7 +768,7 @@ mod tests { open_uapi_socket: true, #[cfg(target_os = "linux")] uapi_fd: -1, - protect: Arc::new(crate::device::MakeExternalBoringtunNoop), + protect: Arc::new(crate::device::MakeExternalNeptunNoop), firewall_process_inbound_callback: None, firewall_process_outbound_callback: None, }, diff --git a/boringtun/src/device/kqueue.rs b/neptun/src/device/kqueue.rs similarity index 100% rename from boringtun/src/device/kqueue.rs rename to neptun/src/device/kqueue.rs diff --git a/boringtun/src/device/mod.rs b/neptun/src/device/mod.rs similarity index 99% rename from boringtun/src/device/mod.rs rename to neptun/src/device/mod.rs index d73849d..1f308d4 100644 --- a/boringtun/src/device/mod.rs +++ b/neptun/src/device/mod.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause pub mod allowed_ips; @@ -104,13 +105,13 @@ enum Action { // Event handler function type Handler = Box, &mut ThreadData) -> Action + Send + Sync>; -pub trait MakeExternalBoringtun: Send + Sync { +pub trait MakeExternalNeptun: Send + Sync { fn make_external(&self, socket: RawFd); } -pub struct MakeExternalBoringtunNoop; +pub struct MakeExternalNeptunNoop; -impl MakeExternalBoringtun for MakeExternalBoringtunNoop { +impl MakeExternalNeptun for MakeExternalNeptunNoop { fn make_external(&self, _socket: std::os::fd::RawFd) {} } @@ -129,7 +130,7 @@ pub struct DeviceConfig { #[cfg(target_os = "linux")] pub use_multi_queue: bool, pub open_uapi_socket: bool, - pub protect: Arc, + pub protect: Arc, pub firewall_process_inbound_callback: Option bool + Send + Sync>>, pub firewall_process_outbound_callback: @@ -218,7 +219,7 @@ impl DeviceHandle { threads.push({ let dev = Arc::clone(&interface_lock); thread::Builder::new() - .name(format!("boringtun")) + .name(format!("neptun")) .spawn(move || DeviceHandle::event_loop(i, &dev))? }); } diff --git a/boringtun/src/device/peer.rs b/neptun/src/device/peer.rs similarity index 95% rename from boringtun/src/device/peer.rs rename to neptun/src/device/peer.rs index 8e0440e..24c58de 100644 --- a/boringtun/src/device/peer.rs +++ b/neptun/src/device/peer.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause use parking_lot::{Mutex, RwLock}; @@ -8,7 +9,7 @@ use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, Shutdown, SocketAddr, SocketAddrV4, S use std::str::FromStr; use std::sync::Arc; -use crate::device::{AllowedIps, Error, MakeExternalBoringtun}; +use crate::device::{AllowedIps, Error, MakeExternalNeptun}; use crate::noise::Tunn; use std::os::fd::AsRawFd; @@ -29,7 +30,7 @@ pub struct Peer { endpoint: RwLock, allowed_ips: RwLock>, preshared_key: RwLock>, - protect: Arc, + protect: Arc, } #[derive(Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash, Debug)] @@ -63,7 +64,7 @@ impl Peer { endpoint: Option, allowed_ips: &[AllowedIP], preshared_key: Option<[u8; 32]>, - protect: Arc, + protect: Arc, ) -> Peer { let pub_key = tunnel.peer_static_public(); let mut public_key_hex = String::with_capacity(32); @@ -211,7 +212,7 @@ mod tests { Some(SocketAddr::new(IpAddr::from([1, 2, 3, 4]), 54321)), &[], None, - Arc::new(crate::device::MakeExternalBoringtunNoop), + Arc::new(crate::device::MakeExternalNeptunNoop), ); peer.connect_endpoint(12345).unwrap(); diff --git a/boringtun/src/device/tun_darwin.rs b/neptun/src/device/tun_darwin.rs similarity index 98% rename from boringtun/src/device/tun_darwin.rs rename to neptun/src/device/tun_darwin.rs index 08eab41..7a30107 100644 --- a/boringtun/src/device/tun_darwin.rs +++ b/neptun/src/device/tun_darwin.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause use super::Error; diff --git a/boringtun/src/device/tun_linux.rs b/neptun/src/device/tun_linux.rs similarity index 98% rename from boringtun/src/device/tun_linux.rs rename to neptun/src/device/tun_linux.rs index d6e7e1a..d31e6ea 100644 --- a/boringtun/src/device/tun_linux.rs +++ b/neptun/src/device/tun_linux.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause use super::Error; diff --git a/boringtun/src/lib.rs b/neptun/src/lib.rs similarity index 89% rename from boringtun/src/lib.rs rename to neptun/src/lib.rs index 707c2ce..d4de748 100644 --- a/boringtun/src/lib.rs +++ b/neptun/src/lib.rs @@ -5,7 +5,7 @@ //! Simple implementation of the client-side of the WireGuard protocol. //! -//! git clone https://github.com/cloudflare/boringtun.git +//! git clone https://github.com/nordsecurity/neptun.git #[cfg(all(unix, feature = "device"))] pub mod device; diff --git a/boringtun/src/noise/_instant_boottime_android.rs b/neptun/src/noise/_instant_boottime_android.rs similarity index 96% rename from boringtun/src/noise/_instant_boottime_android.rs rename to neptun/src/noise/_instant_boottime_android.rs index 2c6d909..b691eef 100644 --- a/boringtun/src/noise/_instant_boottime_android.rs +++ b/neptun/src/noise/_instant_boottime_android.rs @@ -1,3 +1,6 @@ +// Copyright (c) 2024 Nord Security. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause + #![cfg(target_os = "android")] // This is a partial copy of std::time::Instant (android) diff --git a/boringtun/src/noise/_instant_boottime_ios.rs b/neptun/src/noise/_instant_boottime_ios.rs similarity index 96% rename from boringtun/src/noise/_instant_boottime_ios.rs rename to neptun/src/noise/_instant_boottime_ios.rs index 8abd0f4..c9cee7a 100644 --- a/boringtun/src/noise/_instant_boottime_ios.rs +++ b/neptun/src/noise/_instant_boottime_ios.rs @@ -1,3 +1,6 @@ +// Copyright (c) 2024 Nord Security. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause + #![cfg(target_os = "ios")] #![allow(non_camel_case_types)] diff --git a/boringtun/src/noise/_instant_boottime_tvos.rs b/neptun/src/noise/_instant_boottime_tvos.rs similarity index 96% rename from boringtun/src/noise/_instant_boottime_tvos.rs rename to neptun/src/noise/_instant_boottime_tvos.rs index 17a7a42..de948ab 100644 --- a/boringtun/src/noise/_instant_boottime_tvos.rs +++ b/neptun/src/noise/_instant_boottime_tvos.rs @@ -1,3 +1,6 @@ +// Copyright (c) 2024 Nord Security. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause + #![cfg(target_os = "tvos")] #![allow(non_camel_case_types)] diff --git a/boringtun/src/noise/errors.rs b/neptun/src/noise/errors.rs similarity index 100% rename from boringtun/src/noise/errors.rs rename to neptun/src/noise/errors.rs diff --git a/boringtun/src/noise/handshake.rs b/neptun/src/noise/handshake.rs similarity index 99% rename from boringtun/src/noise/handshake.rs rename to neptun/src/noise/handshake.rs index db10582..da92a07 100644 --- a/boringtun/src/noise/handshake.rs +++ b/neptun/src/noise/handshake.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause use super::{HandshakeInit, HandshakeResponse, PacketCookieReply}; diff --git a/boringtun/src/noise/integration_tests/mod.rs b/neptun/src/noise/integration_tests/mod.rs similarity index 98% rename from boringtun/src/noise/integration_tests/mod.rs rename to neptun/src/noise/integration_tests/mod.rs index 41f1e9c..f3558cc 100644 --- a/boringtun/src/noise/integration_tests/mod.rs +++ b/neptun/src/noise/integration_tests/mod.rs @@ -1,3 +1,6 @@ +// Copyright (c) 2024 Nord Security. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause + mod tests { use parking_lot::Mutex; use rand::prelude::*; diff --git a/boringtun/src/noise/mod.rs b/neptun/src/noise/mod.rs similarity index 99% rename from boringtun/src/noise/mod.rs rename to neptun/src/noise/mod.rs index 51b1ccd..5b91302 100644 --- a/boringtun/src/noise/mod.rs +++ b/neptun/src/noise/mod.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause pub mod errors; diff --git a/boringtun/src/noise/rate_limiter.rs b/neptun/src/noise/rate_limiter.rs similarity index 98% rename from boringtun/src/noise/rate_limiter.rs rename to neptun/src/noise/rate_limiter.rs index 052cbb3..db3db81 100644 --- a/boringtun/src/noise/rate_limiter.rs +++ b/neptun/src/noise/rate_limiter.rs @@ -1,3 +1,6 @@ +// Copyright (c) 2019-2024 Nord Security. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause + use super::handshake::{b2s_hash, b2s_keyed_mac_16, b2s_keyed_mac_16_2, b2s_mac_24}; use crate::noise::handshake::{LABEL_COOKIE, LABEL_MAC1}; use crate::noise::{HandshakeInit, HandshakeResponse, Packet, Tunn, TunnResult, WireGuardError}; diff --git a/boringtun/src/noise/safe_duration.rs b/neptun/src/noise/safe_duration.rs similarity index 94% rename from boringtun/src/noise/safe_duration.rs rename to neptun/src/noise/safe_duration.rs index 607839c..b0a9377 100644 --- a/boringtun/src/noise/safe_duration.rs +++ b/neptun/src/noise/safe_duration.rs @@ -1,3 +1,6 @@ +// Copyright (c) 2024 Nord Security. All rights reserved. +// SPDX-License-Identifier: BSD-3-Clause + use std::{ ops::{Add, Mul, Sub}, time::Duration, diff --git a/boringtun/src/noise/session.rs b/neptun/src/noise/session.rs similarity index 98% rename from boringtun/src/noise/session.rs rename to neptun/src/noise/session.rs index 2e95b54..3aa6408 100644 --- a/boringtun/src/noise/session.rs +++ b/neptun/src/noise/session.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause use super::PacketData; diff --git a/boringtun/src/noise/timers.rs b/neptun/src/noise/timers.rs similarity index 99% rename from boringtun/src/noise/timers.rs rename to neptun/src/noise/timers.rs index 1705e7a..07b4bfd 100644 --- a/boringtun/src/noise/timers.rs +++ b/neptun/src/noise/timers.rs @@ -1,4 +1,5 @@ -// Copyright (c) 2019 Cloudflare, Inc. All rights reserved. +// Copyright (c) 2024 Nord Security. All rights reserved. +// Copyright (c) 2019-2024 Cloudflare, Inc. All rights reserved. // SPDX-License-Identifier: BSD-3-Clause use super::errors::WireGuardError; diff --git a/boringtun/src/serialization.rs b/neptun/src/serialization.rs similarity index 100% rename from boringtun/src/serialization.rs rename to neptun/src/serialization.rs diff --git a/boringtun/src/sleepyinstant/mod.rs b/neptun/src/sleepyinstant/mod.rs similarity index 100% rename from boringtun/src/sleepyinstant/mod.rs rename to neptun/src/sleepyinstant/mod.rs diff --git a/boringtun/src/sleepyinstant/unix.rs b/neptun/src/sleepyinstant/unix.rs similarity index 100% rename from boringtun/src/sleepyinstant/unix.rs rename to neptun/src/sleepyinstant/unix.rs diff --git a/boringtun/src/sleepyinstant/windows.rs b/neptun/src/sleepyinstant/windows.rs similarity index 100% rename from boringtun/src/sleepyinstant/windows.rs rename to neptun/src/sleepyinstant/windows.rs