git: 811c1b91629f - main - net/ntpd-rs: Add new port

From: Mikael Urankar <mikael_at_FreeBSD.org>
Date: Thu, 24 Aug 2023 09:02:23 UTC
The branch main has been updated by mikael:

URL: https://cgit.FreeBSD.org/ports/commit/?id=811c1b91629f709da915ab6c9b799e2a7f889923

commit 811c1b91629f709da915ab6c9b799e2a7f889923
Author:     Mikael Urankar <mikael@FreeBSD.org>
AuthorDate: 2023-07-28 12:21:24 +0000
Commit:     Mikael Urankar <mikael@FreeBSD.org>
CommitDate: 2023-08-24 09:02:18 +0000

    net/ntpd-rs: Add new port
    
    ntpd-rs is an NTP implementation written in Rust, with a focus on security and
    stability. It includes client and server functionality and supports NTS.
    
    WWW: https://tweedegolf.nl/en/pendulum
    
    PR:             272774
---
 net/Makefile                                       |   1 +
 net/ntpd-rs/Makefile                               |  40 ++
 net/ntpd-rs/Makefile.crates                        | 222 ++++++++++
 net/ntpd-rs/distinfo                               | 447 +++++++++++++++++++++
 net/ntpd-rs/files/ntp_daemon.in                    |  56 +++
 net/ntpd-rs/files/patch-config_nts.client.toml     |   8 +
 net/ntpd-rs/files/patch-ntp-ctl_src_lib.rs         |  17 +
 .../files/patch-ntp-daemon_src_config_mod.rs       |  11 +
 .../files/patch-ntp-metrics-exporter_src_lib.rs    |  11 +
 net/ntpd-rs/files/patch-ntp.server.toml            |  11 +
 net/ntpd-rs/files/patch-ntp.toml                   |  11 +
 .../files/patch-pkg_common_ntp.toml.default        |  11 +
 .../patch-test-binaries_src_bin_peer-state.rs      |  11 +
 .../files/patch-test-keys_unsafe.nts.server.toml   |  11 +
 net/ntpd-rs/pkg-descr                              |   2 +
 net/ntpd-rs/pkg-plist                              |  11 +
 16 files changed, 881 insertions(+)

diff --git a/net/Makefile b/net/Makefile
index 47d3553763cc..8bc07546576e 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -550,6 +550,7 @@
     SUBDIR += ntopng
     SUBDIR += ntp
     SUBDIR += ntpa
+    SUBDIR += ntpd-rs
     SUBDIR += ntpsec
     SUBDIR += ntraceroute
     SUBDIR += nusoap
diff --git a/net/ntpd-rs/Makefile b/net/ntpd-rs/Makefile
new file mode 100644
index 000000000000..d06786bbaa41
--- /dev/null
+++ b/net/ntpd-rs/Makefile
@@ -0,0 +1,40 @@
+PORTNAME=	ntpd-rs
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.3.7
+CATEGORIES=	net
+
+MAINTAINER=	mikael@FreeBSD.org
+COMMENT=	Full-featured implementation of the Network Time Protocol
+WWW=		https://tweedegolf.nl/en/pendulum
+
+LICENSE=	APACHE20 MIT
+LICENSE_COMB=	dual
+LICENSE_FILE_APACHE20=	${WRKSRC}/LICENSE-APACHE
+LICENSE_FILE_MIT=	${WRKSRC}/LICENSE-MIT
+
+USES=		cargo
+
+USE_RC_SUBR=	ntp_daemon
+USERS=		_ntp
+GROUPS=		_ntp
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	pendulum-project
+
+BINFILES=	demobilize-server ntp-ctl ntp-daemon ntp-metrics-exporter nts-ke nts-ke-server peer-state rate-limit-server simple-daemon
+SAMPLEFILES=	ntp.server.toml ntp.toml
+
+post-patch:
+	@${REINPLACE_CMD} 's|%%ETCDIR%%|${ETCDIR}|' ${WRKSRC}/ntp-daemon/src/config/mod.rs
+
+do-install:
+.for f in ${BINFILES}
+	${INSTALL_PROGRAM} ${CARGO_TARGET_DIR}/${CARGO_BUILD_TARGET}/*/${f} ${STAGEDIR}${LOCALBASE}/bin
+.endfor
+
+	${MKDIR} ${STAGEDIR}${ETCDIR}
+.for f in ${SAMPLEFILES}
+	${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${ETCDIR}/${f}.sample
+.endfor
+
+.include <bsd.port.mk>
diff --git a/net/ntpd-rs/Makefile.crates b/net/ntpd-rs/Makefile.crates
new file mode 100644
index 000000000000..0715716c1aa8
--- /dev/null
+++ b/net/ntpd-rs/Makefile.crates
@@ -0,0 +1,222 @@
+CARGO_CRATES=	addr2line-0.19.0 \
+		adler-1.0.2 \
+		aead-0.5.2 \
+		aes-0.8.3 \
+		aes-siv-0.7.0 \
+		aho-corasick-1.0.2 \
+		anstream-0.3.2 \
+		anstyle-1.0.1 \
+		anstyle-parse-0.2.1 \
+		anstyle-query-1.0.0 \
+		anstyle-wincon-1.0.1 \
+		arbitrary-1.3.0 \
+		async-trait-0.1.68 \
+		autocfg-1.1.0 \
+		backtrace-0.3.67 \
+		base64-0.21.2 \
+		bitflags-1.3.2 \
+		block-buffer-0.10.4 \
+		bumpalo-3.13.0 \
+		bytes-1.4.0 \
+		cc-1.0.79 \
+		cfg-if-1.0.0 \
+		cipher-0.4.4 \
+		clap-4.3.9 \
+		clap_builder-4.3.9 \
+		clap_derive-4.3.2 \
+		clap_lex-0.5.0 \
+		cmac-0.7.2 \
+		colorchoice-1.0.0 \
+		core-foundation-0.9.3 \
+		core-foundation-sys-0.8.4 \
+		cpufeatures-0.2.8 \
+		crypto-common-0.1.6 \
+		ctr-0.9.2 \
+		dbl-0.3.2 \
+		debugid-0.8.0 \
+		digest-0.10.7 \
+		dtoa-1.0.6 \
+		encoding_rs-0.8.32 \
+		equivalent-1.0.0 \
+		errno-0.3.1 \
+		errno-dragonfly-0.1.2 \
+		fnv-1.0.7 \
+		form_urlencoded-1.2.0 \
+		futures-channel-0.3.28 \
+		futures-core-0.3.28 \
+		futures-io-0.3.28 \
+		futures-sink-0.3.28 \
+		futures-task-0.3.28 \
+		futures-util-0.3.28 \
+		generic-array-0.14.7 \
+		getrandom-0.2.10 \
+		gimli-0.27.3 \
+		h2-0.3.20 \
+		hashbrown-0.12.3 \
+		hashbrown-0.14.0 \
+		heck-0.4.1 \
+		hermit-abi-0.2.6 \
+		hermit-abi-0.3.1 \
+		hex-0.4.3 \
+		hostname-0.3.1 \
+		http-0.2.9 \
+		http-body-0.4.5 \
+		httparse-1.8.0 \
+		httpdate-1.0.2 \
+		hyper-0.14.27 \
+		hyper-rustls-0.24.0 \
+		idna-0.4.0 \
+		indexmap-1.9.3 \
+		indexmap-2.0.0 \
+		inout-0.1.3 \
+		io-lifetimes-1.0.11 \
+		ipnet-2.8.0 \
+		is-terminal-0.4.7 \
+		itoa-1.0.6 \
+		js-sys-0.3.64 \
+		lazy_static-1.4.0 \
+		libc-0.2.147 \
+		linux-raw-sys-0.3.8 \
+		lock_api-0.4.10 \
+		log-0.4.19 \
+		match_cfg-0.1.0 \
+		matchers-0.1.0 \
+		md-5-0.10.5 \
+		memchr-2.5.0 \
+		mime-0.3.17 \
+		miniz_oxide-0.6.2 \
+		mio-0.8.8 \
+		nu-ansi-term-0.46.0 \
+		num_cpus-1.15.0 \
+		object-0.30.4 \
+		once_cell-1.18.0 \
+		openssl-probe-0.1.5 \
+		os_info-3.7.0 \
+		overload-0.1.1 \
+		parking_lot-0.12.1 \
+		parking_lot_core-0.9.8 \
+		percent-encoding-2.3.0 \
+		pin-project-lite-0.2.9 \
+		pin-utils-0.1.0 \
+		ppv-lite86-0.2.17 \
+		proc-macro2-1.0.63 \
+		prometheus-client-0.21.1 \
+		prometheus-client-derive-encode-0.4.1 \
+		quote-1.0.29 \
+		rand-0.8.5 \
+		rand_chacha-0.3.1 \
+		rand_core-0.6.4 \
+		redox_syscall-0.3.5 \
+		regex-1.8.4 \
+		regex-automata-0.1.10 \
+		regex-syntax-0.6.29 \
+		regex-syntax-0.7.2 \
+		reqwest-0.11.18 \
+		ring-0.16.20 \
+		rustc-demangle-0.1.23 \
+		rustc_version-0.4.0 \
+		rustix-0.37.20 \
+		rustls-0.20.8 \
+		rustls-0.21.2 \
+		rustls-native-certs-0.6.3 \
+		rustls-pemfile-1.0.3 \
+		rustls-webpki-0.100.1 \
+		ryu-1.0.13 \
+		schannel-0.1.21 \
+		scopeguard-1.1.0 \
+		sct-0.7.0 \
+		security-framework-2.9.1 \
+		security-framework-sys-2.9.0 \
+		semver-1.0.17 \
+		sentry-0.29.3 \
+		sentry-backtrace-0.29.3 \
+		sentry-contexts-0.29.3 \
+		sentry-core-0.29.3 \
+		sentry-panic-0.29.3 \
+		sentry-tracing-0.29.3 \
+		sentry-types-0.29.3 \
+		serde-1.0.164 \
+		serde_derive-1.0.164 \
+		serde_json-1.0.99 \
+		serde_spanned-0.6.3 \
+		serde_urlencoded-0.7.1 \
+		sharded-slab-0.1.4 \
+		signal-hook-registry-1.4.1 \
+		slab-0.4.8 \
+		smallvec-1.10.0 \
+		socket2-0.4.9 \
+		spin-0.5.2 \
+		strsim-0.10.0 \
+		subtle-2.5.0 \
+		syn-1.0.109 \
+		syn-2.0.22 \
+		thiserror-1.0.40 \
+		thiserror-impl-1.0.40 \
+		thread_local-1.1.7 \
+		time-0.3.22 \
+		time-core-0.1.1 \
+		time-macros-0.2.9 \
+		tinyvec-1.6.0 \
+		tinyvec_macros-0.1.1 \
+		tokio-1.29.0 \
+		tokio-macros-2.1.0 \
+		tokio-rustls-0.24.1 \
+		tokio-util-0.7.8 \
+		toml-0.7.5 \
+		toml_datetime-0.6.3 \
+		toml_edit-0.19.11 \
+		tower-service-0.3.2 \
+		tracing-0.1.37 \
+		tracing-attributes-0.1.26 \
+		tracing-core-0.1.31 \
+		tracing-log-0.1.3 \
+		tracing-serde-0.1.3 \
+		tracing-subscriber-0.3.17 \
+		try-lock-0.2.4 \
+		typenum-1.16.0 \
+		uname-0.1.1 \
+		unicode-bidi-0.3.13 \
+		unicode-ident-1.0.9 \
+		unicode-normalization-0.1.22 \
+		untrusted-0.7.1 \
+		ureq-2.7.1 \
+		url-2.4.0 \
+		utf8parse-0.2.1 \
+		uuid-1.4.0 \
+		valuable-0.1.0 \
+		version_check-0.9.4 \
+		want-0.3.1 \
+		wasi-0.11.0+wasi-snapshot-preview1 \
+		wasm-bindgen-0.2.87 \
+		wasm-bindgen-backend-0.2.87 \
+		wasm-bindgen-futures-0.4.37 \
+		wasm-bindgen-macro-0.2.87 \
+		wasm-bindgen-macro-support-0.2.87 \
+		wasm-bindgen-shared-0.2.87 \
+		web-sys-0.3.64 \
+		webpki-0.22.0 \
+		webpki-roots-0.22.6 \
+		webpki-roots-0.23.1 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-sys-0.42.0 \
+		windows-sys-0.48.0 \
+		windows-targets-0.48.1 \
+		windows_aarch64_gnullvm-0.42.2 \
+		windows_aarch64_gnullvm-0.48.0 \
+		windows_aarch64_msvc-0.42.2 \
+		windows_aarch64_msvc-0.48.0 \
+		windows_i686_gnu-0.42.2 \
+		windows_i686_gnu-0.48.0 \
+		windows_i686_msvc-0.42.2 \
+		windows_i686_msvc-0.48.0 \
+		windows_x86_64_gnu-0.42.2 \
+		windows_x86_64_gnu-0.48.0 \
+		windows_x86_64_gnullvm-0.42.2 \
+		windows_x86_64_gnullvm-0.48.0 \
+		windows_x86_64_msvc-0.42.2 \
+		windows_x86_64_msvc-0.48.0 \
+		winnow-0.4.7 \
+		winreg-0.10.1 \
+		zeroize-1.6.0
diff --git a/net/ntpd-rs/distinfo b/net/ntpd-rs/distinfo
new file mode 100644
index 000000000000..4f1d997871e8
--- /dev/null
+++ b/net/ntpd-rs/distinfo
@@ -0,0 +1,447 @@
+TIMESTAMP = 1692867149
+SHA256 (rust/crates/addr2line-0.19.0.crate) = a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97
+SIZE (rust/crates/addr2line-0.19.0.crate) = 33210
+SHA256 (rust/crates/adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe
+SIZE (rust/crates/adler-1.0.2.crate) = 12778
+SHA256 (rust/crates/aead-0.5.2.crate) = d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0
+SIZE (rust/crates/aead-0.5.2.crate) = 15509
+SHA256 (rust/crates/aes-0.8.3.crate) = ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2
+SIZE (rust/crates/aes-0.8.3.crate) = 124679
+SHA256 (rust/crates/aes-siv-0.7.0.crate) = 7e08d0cdb774acd1e4dac11478b1a0c0d203134b2aab0ba25eb430de9b18f8b9
+SIZE (rust/crates/aes-siv-0.7.0.crate) = 25783
+SHA256 (rust/crates/aho-corasick-1.0.2.crate) = 43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41
+SIZE (rust/crates/aho-corasick-1.0.2.crate) = 167694
+SHA256 (rust/crates/anstream-0.3.2.crate) = 0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163
+SIZE (rust/crates/anstream-0.3.2.crate) = 19504
+SHA256 (rust/crates/anstyle-1.0.1.crate) = 3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd
+SIZE (rust/crates/anstyle-1.0.1.crate) = 13977
+SHA256 (rust/crates/anstyle-parse-0.2.1.crate) = 938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333
+SIZE (rust/crates/anstyle-parse-0.2.1.crate) = 24802
+SHA256 (rust/crates/anstyle-query-1.0.0.crate) = 5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b
+SIZE (rust/crates/anstyle-query-1.0.0.crate) = 8620
+SHA256 (rust/crates/anstyle-wincon-1.0.1.crate) = 180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188
+SIZE (rust/crates/anstyle-wincon-1.0.1.crate) = 11718
+SHA256 (rust/crates/arbitrary-1.3.0.crate) = e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e
+SIZE (rust/crates/arbitrary-1.3.0.crate) = 30930
+SHA256 (rust/crates/async-trait-0.1.68.crate) = b9ccdd8f2a161be9bd5c023df56f1b2a0bd1d83872ae53b71a84a12c9bf6e842
+SIZE (rust/crates/async-trait-0.1.68.crate) = 28625
+SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa
+SIZE (rust/crates/autocfg-1.1.0.crate) = 13272
+SHA256 (rust/crates/backtrace-0.3.67.crate) = 233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca
+SIZE (rust/crates/backtrace-0.3.67.crate) = 78564
+SHA256 (rust/crates/base64-0.21.2.crate) = 604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d
+SIZE (rust/crates/base64-0.21.2.crate) = 76389
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71
+SIZE (rust/crates/block-buffer-0.10.4.crate) = 10538
+SHA256 (rust/crates/bumpalo-3.13.0.crate) = a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1
+SIZE (rust/crates/bumpalo-3.13.0.crate) = 82114
+SHA256 (rust/crates/bytes-1.4.0.crate) = 89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be
+SIZE (rust/crates/bytes-1.4.0.crate) = 58080
+SHA256 (rust/crates/cc-1.0.79.crate) = 50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f
+SIZE (rust/crates/cc-1.0.79.crate) = 62624
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/cipher-0.4.4.crate) = 773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad
+SIZE (rust/crates/cipher-0.4.4.crate) = 19073
+SHA256 (rust/crates/clap-4.3.9.crate) = bba77a07e4489fb41bd90e8d4201c3eb246b3c2c9ea2ba0bddd6c1d1df87db7d
+SIZE (rust/crates/clap-4.3.9.crate) = 54811
+SHA256 (rust/crates/clap_builder-4.3.9.crate) = 2c9b4a88bb4bc35d3d6f65a21b0f0bafe9c894fa00978de242c555ec28bea1c0
+SIZE (rust/crates/clap_builder-4.3.9.crate) = 162255
+SHA256 (rust/crates/clap_derive-4.3.2.crate) = b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f
+SIZE (rust/crates/clap_derive-4.3.2.crate) = 29053
+SHA256 (rust/crates/clap_lex-0.5.0.crate) = 2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b
+SIZE (rust/crates/clap_lex-0.5.0.crate) = 11792
+SHA256 (rust/crates/cmac-0.7.2.crate) = 8543454e3c3f5126effff9cd44d562af4e31fb8ce1cc0d3dcd8f084515dbc1aa
+SIZE (rust/crates/cmac-0.7.2.crate) = 44847
+SHA256 (rust/crates/colorchoice-1.0.0.crate) = acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7
+SIZE (rust/crates/colorchoice-1.0.0.crate) = 6857
+SHA256 (rust/crates/core-foundation-0.9.3.crate) = 194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146
+SIZE (rust/crates/core-foundation-0.9.3.crate) = 27059
+SHA256 (rust/crates/core-foundation-sys-0.8.4.crate) = e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa
+SIZE (rust/crates/core-foundation-sys-0.8.4.crate) = 17725
+SHA256 (rust/crates/cpufeatures-0.2.8.crate) = 03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c
+SIZE (rust/crates/cpufeatures-0.2.8.crate) = 11840
+SHA256 (rust/crates/crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3
+SIZE (rust/crates/crypto-common-0.1.6.crate) = 8760
+SHA256 (rust/crates/ctr-0.9.2.crate) = 0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835
+SIZE (rust/crates/ctr-0.9.2.crate) = 18344
+SHA256 (rust/crates/dbl-0.3.2.crate) = bd2735a791158376708f9347fe8faba9667589d82427ef3aed6794a8981de3d9
+SIZE (rust/crates/dbl-0.3.2.crate) = 6336
+SHA256 (rust/crates/debugid-0.8.0.crate) = bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d
+SIZE (rust/crates/debugid-0.8.0.crate) = 12757
+SHA256 (rust/crates/digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292
+SIZE (rust/crates/digest-0.10.7.crate) = 19557
+SHA256 (rust/crates/dtoa-1.0.6.crate) = 65d09067bfacaa79114679b279d7f5885b53295b1e2cfb4e79c8e4bd3d633169
+SIZE (rust/crates/dtoa-1.0.6.crate) = 16918
+SHA256 (rust/crates/encoding_rs-0.8.32.crate) = 071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394
+SIZE (rust/crates/encoding_rs-0.8.32.crate) = 1370046
+SHA256 (rust/crates/equivalent-1.0.0.crate) = 88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1
+SIZE (rust/crates/equivalent-1.0.0.crate) = 6621
+SHA256 (rust/crates/errno-0.3.1.crate) = 4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a
+SIZE (rust/crates/errno-0.3.1.crate) = 10348
+SHA256 (rust/crates/errno-dragonfly-0.1.2.crate) = aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf
+SIZE (rust/crates/errno-dragonfly-0.1.2.crate) = 1810
+SHA256 (rust/crates/fnv-1.0.7.crate) = 3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1
+SIZE (rust/crates/fnv-1.0.7.crate) = 11266
+SHA256 (rust/crates/form_urlencoded-1.2.0.crate) = a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652
+SIZE (rust/crates/form_urlencoded-1.2.0.crate) = 8923
+SHA256 (rust/crates/futures-channel-0.3.28.crate) = 955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2
+SIZE (rust/crates/futures-channel-0.3.28.crate) = 32281
+SHA256 (rust/crates/futures-core-0.3.28.crate) = 4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c
+SIZE (rust/crates/futures-core-0.3.28.crate) = 14780
+SHA256 (rust/crates/futures-io-0.3.28.crate) = 4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964
+SIZE (rust/crates/futures-io-0.3.28.crate) = 8910
+SHA256 (rust/crates/futures-sink-0.3.28.crate) = f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e
+SIZE (rust/crates/futures-sink-0.3.28.crate) = 7852
+SHA256 (rust/crates/futures-task-0.3.28.crate) = 76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65
+SIZE (rust/crates/futures-task-0.3.28.crate) = 11848
+SHA256 (rust/crates/futures-util-0.3.28.crate) = 26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533
+SIZE (rust/crates/futures-util-0.3.28.crate) = 158510
+SHA256 (rust/crates/generic-array-0.14.7.crate) = 85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a
+SIZE (rust/crates/generic-array-0.14.7.crate) = 15950
+SHA256 (rust/crates/getrandom-0.2.10.crate) = be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427
+SIZE (rust/crates/getrandom-0.2.10.crate) = 34955
+SHA256 (rust/crates/gimli-0.27.3.crate) = b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e
+SIZE (rust/crates/gimli-0.27.3.crate) = 287904
+SHA256 (rust/crates/h2-0.3.20.crate) = 97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049
+SIZE (rust/crates/h2-0.3.20.crate) = 165260
+SHA256 (rust/crates/hashbrown-0.12.3.crate) = 8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888
+SIZE (rust/crates/hashbrown-0.12.3.crate) = 102968
+SHA256 (rust/crates/hashbrown-0.14.0.crate) = 2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a
+SIZE (rust/crates/hashbrown-0.14.0.crate) = 116103
+SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8
+SIZE (rust/crates/heck-0.4.1.crate) = 11567
+SHA256 (rust/crates/hermit-abi-0.2.6.crate) = ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7
+SIZE (rust/crates/hermit-abi-0.2.6.crate) = 13027
+SHA256 (rust/crates/hermit-abi-0.3.1.crate) = fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286
+SIZE (rust/crates/hermit-abi-0.3.1.crate) = 13793
+SHA256 (rust/crates/hex-0.4.3.crate) = 7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70
+SIZE (rust/crates/hex-0.4.3.crate) = 13299
+SHA256 (rust/crates/hostname-0.3.1.crate) = 3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867
+SIZE (rust/crates/hostname-0.3.1.crate) = 9272
+SHA256 (rust/crates/http-0.2.9.crate) = bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482
+SIZE (rust/crates/http-0.2.9.crate) = 100146
+SHA256 (rust/crates/http-body-0.4.5.crate) = d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1
+SIZE (rust/crates/http-body-0.4.5.crate) = 9242
+SHA256 (rust/crates/httparse-1.8.0.crate) = d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904
+SIZE (rust/crates/httparse-1.8.0.crate) = 29954
+SHA256 (rust/crates/httpdate-1.0.2.crate) = c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421
+SIZE (rust/crates/httpdate-1.0.2.crate) = 10673
+SHA256 (rust/crates/hyper-0.14.27.crate) = ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468
+SIZE (rust/crates/hyper-0.14.27.crate) = 195700
+SHA256 (rust/crates/hyper-rustls-0.24.0.crate) = 0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7
+SIZE (rust/crates/hyper-rustls-0.24.0.crate) = 29917
+SHA256 (rust/crates/idna-0.4.0.crate) = 7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c
+SIZE (rust/crates/idna-0.4.0.crate) = 271429
+SHA256 (rust/crates/indexmap-1.9.3.crate) = bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99
+SIZE (rust/crates/indexmap-1.9.3.crate) = 54653
+SHA256 (rust/crates/indexmap-2.0.0.crate) = d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d
+SIZE (rust/crates/indexmap-2.0.0.crate) = 64038
+SHA256 (rust/crates/inout-0.1.3.crate) = a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5
+SIZE (rust/crates/inout-0.1.3.crate) = 10743
+SHA256 (rust/crates/io-lifetimes-1.0.11.crate) = eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2
+SIZE (rust/crates/io-lifetimes-1.0.11.crate) = 37346
+SHA256 (rust/crates/ipnet-2.8.0.crate) = 28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6
+SIZE (rust/crates/ipnet-2.8.0.crate) = 27474
+SHA256 (rust/crates/is-terminal-0.4.7.crate) = adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f
+SIZE (rust/crates/is-terminal-0.4.7.crate) = 8356
+SHA256 (rust/crates/itoa-1.0.6.crate) = 453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6
+SIZE (rust/crates/itoa-1.0.6.crate) = 10410
+SHA256 (rust/crates/js-sys-0.3.64.crate) = c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a
+SIZE (rust/crates/js-sys-0.3.64.crate) = 80313
+SHA256 (rust/crates/lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646
+SIZE (rust/crates/lazy_static-1.4.0.crate) = 10443
+SHA256 (rust/crates/libc-0.2.147.crate) = b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3
+SIZE (rust/crates/libc-0.2.147.crate) = 686772
+SHA256 (rust/crates/linux-raw-sys-0.3.8.crate) = ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519
+SIZE (rust/crates/linux-raw-sys-0.3.8.crate) = 1013776
+SHA256 (rust/crates/lock_api-0.4.10.crate) = c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16
+SIZE (rust/crates/lock_api-0.4.10.crate) = 26713
+SHA256 (rust/crates/log-0.4.19.crate) = b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4
+SIZE (rust/crates/log-0.4.19.crate) = 38073
+SHA256 (rust/crates/match_cfg-0.1.0.crate) = ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4
+SIZE (rust/crates/match_cfg-0.1.0.crate) = 7153
+SHA256 (rust/crates/matchers-0.1.0.crate) = 8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558
+SIZE (rust/crates/matchers-0.1.0.crate) = 6948
+SHA256 (rust/crates/md-5-0.10.5.crate) = 6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca
+SIZE (rust/crates/md-5-0.10.5.crate) = 14573
+SHA256 (rust/crates/memchr-2.5.0.crate) = 2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d
+SIZE (rust/crates/memchr-2.5.0.crate) = 65812
+SHA256 (rust/crates/mime-0.3.17.crate) = 6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a
+SIZE (rust/crates/mime-0.3.17.crate) = 15712
+SHA256 (rust/crates/miniz_oxide-0.6.2.crate) = b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa
+SIZE (rust/crates/miniz_oxide-0.6.2.crate) = 54536
+SHA256 (rust/crates/mio-0.8.8.crate) = 927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2
+SIZE (rust/crates/mio-0.8.8.crate) = 94264
+SHA256 (rust/crates/nu-ansi-term-0.46.0.crate) = 77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84
+SIZE (rust/crates/nu-ansi-term-0.46.0.crate) = 24311
+SHA256 (rust/crates/num_cpus-1.15.0.crate) = 0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b
+SIZE (rust/crates/num_cpus-1.15.0.crate) = 15680
+SHA256 (rust/crates/object-0.30.4.crate) = 03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385
+SIZE (rust/crates/object-0.30.4.crate) = 259203
+SHA256 (rust/crates/once_cell-1.18.0.crate) = dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d
+SIZE (rust/crates/once_cell-1.18.0.crate) = 32969
+SHA256 (rust/crates/openssl-probe-0.1.5.crate) = ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf
+SIZE (rust/crates/openssl-probe-0.1.5.crate) = 7227
+SHA256 (rust/crates/os_info-3.7.0.crate) = 006e42d5b888366f1880eda20371fedde764ed2213dc8496f49622fa0c99cd5e
+SIZE (rust/crates/os_info-3.7.0.crate) = 24133
+SHA256 (rust/crates/overload-0.1.1.crate) = b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39
+SIZE (rust/crates/overload-0.1.1.crate) = 24439
+SHA256 (rust/crates/parking_lot-0.12.1.crate) = 3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f
+SIZE (rust/crates/parking_lot-0.12.1.crate) = 40967
+SHA256 (rust/crates/parking_lot_core-0.9.8.crate) = 93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447
+SIZE (rust/crates/parking_lot_core-0.9.8.crate) = 32383
+SHA256 (rust/crates/percent-encoding-2.3.0.crate) = 9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94
+SIZE (rust/crates/percent-encoding-2.3.0.crate) = 10196
+SHA256 (rust/crates/pin-project-lite-0.2.9.crate) = e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116
+SIZE (rust/crates/pin-project-lite-0.2.9.crate) = 27713
+SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184
+SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580
+SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de
+SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242
+SHA256 (rust/crates/proc-macro2-1.0.63.crate) = 7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb
+SIZE (rust/crates/proc-macro2-1.0.63.crate) = 44867
+SHA256 (rust/crates/prometheus-client-0.21.1.crate) = 78c2f43e8969d51935d2a7284878ae053ba30034cd563f673cde37ba5205685e
+SIZE (rust/crates/prometheus-client-0.21.1.crate) = 59277
+SHA256 (rust/crates/prometheus-client-derive-encode-0.4.1.crate) = 72b6a5217beb0ad503ee7fa752d451c905113d70721b937126158f3106a48cc1
+SIZE (rust/crates/prometheus-client-derive-encode-0.4.1.crate) = 3658
+SHA256 (rust/crates/quote-1.0.29.crate) = 573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105
+SIZE (rust/crates/quote-1.0.29.crate) = 28345
+SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404
+SIZE (rust/crates/rand-0.8.5.crate) = 87113
+SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88
+SIZE (rust/crates/rand_chacha-0.3.1.crate) = 15251
+SHA256 (rust/crates/rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c
+SIZE (rust/crates/rand_core-0.6.4.crate) = 22666
+SHA256 (rust/crates/redox_syscall-0.3.5.crate) = 567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29
+SIZE (rust/crates/redox_syscall-0.3.5.crate) = 23404
+SHA256 (rust/crates/regex-1.8.4.crate) = d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f
+SIZE (rust/crates/regex-1.8.4.crate) = 249562
+SHA256 (rust/crates/regex-automata-0.1.10.crate) = 6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132
+SIZE (rust/crates/regex-automata-0.1.10.crate) = 114533
+SHA256 (rust/crates/regex-syntax-0.6.29.crate) = f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1
+SIZE (rust/crates/regex-syntax-0.6.29.crate) = 299752
+SHA256 (rust/crates/regex-syntax-0.7.2.crate) = 436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78
+SIZE (rust/crates/regex-syntax-0.7.2.crate) = 339778
+SHA256 (rust/crates/reqwest-0.11.18.crate) = cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55
+SIZE (rust/crates/reqwest-0.11.18.crate) = 154387
+SHA256 (rust/crates/ring-0.16.20.crate) = 3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc
+SIZE (rust/crates/ring-0.16.20.crate) = 5082615
+SHA256 (rust/crates/rustc-demangle-0.1.23.crate) = d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76
+SIZE (rust/crates/rustc-demangle-0.1.23.crate) = 28970
+SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366
+SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175
+SHA256 (rust/crates/rustix-0.37.20.crate) = b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0
+SIZE (rust/crates/rustix-0.37.20.crate) = 327665
+SHA256 (rust/crates/rustls-0.20.8.crate) = fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f
+SIZE (rust/crates/rustls-0.20.8.crate) = 270142
+SHA256 (rust/crates/rustls-0.21.2.crate) = e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f
+SIZE (rust/crates/rustls-0.21.2.crate) = 279135
+SHA256 (rust/crates/rustls-native-certs-0.6.3.crate) = a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00
+SIZE (rust/crates/rustls-native-certs-0.6.3.crate) = 24438
+SHA256 (rust/crates/rustls-pemfile-1.0.3.crate) = 2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2
+SIZE (rust/crates/rustls-pemfile-1.0.3.crate) = 20432
+SHA256 (rust/crates/rustls-webpki-0.100.1.crate) = d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b
+SIZE (rust/crates/rustls-webpki-0.100.1.crate) = 70719
+SHA256 (rust/crates/ryu-1.0.13.crate) = f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041
+SIZE (rust/crates/ryu-1.0.13.crate) = 46823
+SHA256 (rust/crates/schannel-0.1.21.crate) = 713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3
+SIZE (rust/crates/schannel-0.1.21.crate) = 41719
+SHA256 (rust/crates/scopeguard-1.1.0.crate) = d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
+SIZE (rust/crates/scopeguard-1.1.0.crate) = 11470
+SHA256 (rust/crates/sct-0.7.0.crate) = d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4
+SIZE (rust/crates/sct-0.7.0.crate) = 27502
+SHA256 (rust/crates/security-framework-2.9.1.crate) = 1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8
+SIZE (rust/crates/security-framework-2.9.1.crate) = 78844
+SHA256 (rust/crates/security-framework-sys-2.9.0.crate) = f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7
+SIZE (rust/crates/security-framework-sys-2.9.0.crate) = 18197
+SHA256 (rust/crates/semver-1.0.17.crate) = bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed
+SIZE (rust/crates/semver-1.0.17.crate) = 29685
+SHA256 (rust/crates/sentry-0.29.3.crate) = c6f8ce69326daef9d845c3fd17149bd3dbd7caf5dc65dbbad9f5441a40ee407f
+SIZE (rust/crates/sentry-0.29.3.crate) = 47614
+SHA256 (rust/crates/sentry-backtrace-0.29.3.crate) = 3ed6c0254d4cce319800609aa0d41b486ee57326494802045ff27434fc9a2030
+SIZE (rust/crates/sentry-backtrace-0.29.3.crate) = 10290
+SHA256 (rust/crates/sentry-contexts-0.29.3.crate) = d3277dc5d2812562026f2095c7841f3d61bbe6789159b7da54f41d540787f818
+SIZE (rust/crates/sentry-contexts-0.29.3.crate) = 8440
+SHA256 (rust/crates/sentry-core-0.29.3.crate) = b5acbd3da4255938cf0384b6b140e6c07ff65919c26e4d7a989d8d90ee88fa91
+SIZE (rust/crates/sentry-core-0.29.3.crate) = 45790
+SHA256 (rust/crates/sentry-panic-0.29.3.crate) = beebc7aedbd3aa470cd19caad208a5efe6c48902595c0d111a193d8ce4f7bd15
+SIZE (rust/crates/sentry-panic-0.29.3.crate) = 6652
+SHA256 (rust/crates/sentry-tracing-0.29.3.crate) = e5b4272dc996c37f2ade1d2b9fc8a605956ae6290f01463d30c28d1c6bf29c1b
+SIZE (rust/crates/sentry-tracing-0.29.3.crate) = 9907
+SHA256 (rust/crates/sentry-types-0.29.3.crate) = 10d8587b12c0b8211bb3066979ee57af6e8657e23cf439dc6c8581fd86de24e8
+SIZE (rust/crates/sentry-types-0.29.3.crate) = 40671
+SHA256 (rust/crates/serde-1.0.164.crate) = 9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d
+SIZE (rust/crates/serde-1.0.164.crate) = 77057
+SHA256 (rust/crates/serde_derive-1.0.164.crate) = d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68
+SIZE (rust/crates/serde_derive-1.0.164.crate) = 54789
+SHA256 (rust/crates/serde_json-1.0.99.crate) = 46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3
+SIZE (rust/crates/serde_json-1.0.99.crate) = 145102
+SHA256 (rust/crates/serde_spanned-0.6.3.crate) = 96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186
+SIZE (rust/crates/serde_spanned-0.6.3.crate) = 7737
+SHA256 (rust/crates/serde_urlencoded-0.7.1.crate) = d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd
+SIZE (rust/crates/serde_urlencoded-0.7.1.crate) = 12822
+SHA256 (rust/crates/sharded-slab-0.1.4.crate) = 900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31
+SIZE (rust/crates/sharded-slab-0.1.4.crate) = 52479
+SHA256 (rust/crates/signal-hook-registry-1.4.1.crate) = d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1
+SIZE (rust/crates/signal-hook-registry-1.4.1.crate) = 17987
+SHA256 (rust/crates/slab-0.4.8.crate) = 6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d
+SIZE (rust/crates/slab-0.4.8.crate) = 16928
+SHA256 (rust/crates/smallvec-1.10.0.crate) = a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0
+SIZE (rust/crates/smallvec-1.10.0.crate) = 31564
+SHA256 (rust/crates/socket2-0.4.9.crate) = 64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662
+SIZE (rust/crates/socket2-0.4.9.crate) = 45421
+SHA256 (rust/crates/spin-0.5.2.crate) = 6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d
+SIZE (rust/crates/spin-0.5.2.crate) = 12004
+SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623
+SIZE (rust/crates/strsim-0.10.0.crate) = 11355
+SHA256 (rust/crates/subtle-2.5.0.crate) = 81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc
+SIZE (rust/crates/subtle-2.5.0.crate) = 13909
+SHA256 (rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
+SIZE (rust/crates/syn-1.0.109.crate) = 237611
+SHA256 (rust/crates/syn-2.0.22.crate) = 2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616
+SIZE (rust/crates/syn-2.0.22.crate) = 241001
+SHA256 (rust/crates/thiserror-1.0.40.crate) = 978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac
+SIZE (rust/crates/thiserror-1.0.40.crate) = 18709
+SHA256 (rust/crates/thiserror-impl-1.0.40.crate) = f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f
+SIZE (rust/crates/thiserror-impl-1.0.40.crate) = 15138
+SHA256 (rust/crates/thread_local-1.1.7.crate) = 3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152
+SIZE (rust/crates/thread_local-1.1.7.crate) = 13585
+SHA256 (rust/crates/time-0.3.22.crate) = ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd
+SIZE (rust/crates/time-0.3.22.crate) = 113792
+SHA256 (rust/crates/time-core-0.1.1.crate) = 7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb
+SIZE (rust/crates/time-core-0.1.1.crate) = 7197
+SHA256 (rust/crates/time-macros-0.2.9.crate) = 372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b
+SIZE (rust/crates/time-macros-0.2.9.crate) = 23684
+SHA256 (rust/crates/tinyvec-1.6.0.crate) = 87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50
+SIZE (rust/crates/tinyvec-1.6.0.crate) = 45991
+SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
+SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
+SHA256 (rust/crates/tokio-1.29.0.crate) = 374442f06ee49c3a28a8fc9f01a2596fed7559c6b99b31279c3261778e77d84f
+SIZE (rust/crates/tokio-1.29.0.crate) = 693384
+SHA256 (rust/crates/tokio-macros-2.1.0.crate) = 630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e
+SIZE (rust/crates/tokio-macros-2.1.0.crate) = 11472
+SHA256 (rust/crates/tokio-rustls-0.24.1.crate) = c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081
+SIZE (rust/crates/tokio-rustls-0.24.1.crate) = 33049
+SHA256 (rust/crates/tokio-util-0.7.8.crate) = 806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d
+SIZE (rust/crates/tokio-util-0.7.8.crate) = 101644
+SHA256 (rust/crates/toml-0.7.5.crate) = 1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240
+SIZE (rust/crates/toml-0.7.5.crate) = 49069
+SHA256 (rust/crates/toml_datetime-0.6.3.crate) = 7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b
+SIZE (rust/crates/toml_datetime-0.6.3.crate) = 10770
+SHA256 (rust/crates/toml_edit-0.19.11.crate) = 266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7
+SIZE (rust/crates/toml_edit-0.19.11.crate) = 95642
+SHA256 (rust/crates/tower-service-0.3.2.crate) = b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52
+SIZE (rust/crates/tower-service-0.3.2.crate) = 6847
+SHA256 (rust/crates/tracing-0.1.37.crate) = 8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8
+SIZE (rust/crates/tracing-0.1.37.crate) = 73888
+SHA256 (rust/crates/tracing-attributes-0.1.26.crate) = 5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab
+SIZE (rust/crates/tracing-attributes-0.1.26.crate) = 32060
+SHA256 (rust/crates/tracing-core-0.1.31.crate) = 0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a
+SIZE (rust/crates/tracing-core-0.1.31.crate) = 61263
+SHA256 (rust/crates/tracing-log-0.1.3.crate) = 78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922
+SIZE (rust/crates/tracing-log-0.1.3.crate) = 20549
+SHA256 (rust/crates/tracing-serde-0.1.3.crate) = bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1
+SIZE (rust/crates/tracing-serde-0.1.3.crate) = 7329
+SHA256 (rust/crates/tracing-subscriber-0.3.17.crate) = 30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77
+SIZE (rust/crates/tracing-subscriber-0.3.17.crate) = 191711
+SHA256 (rust/crates/try-lock-0.2.4.crate) = 3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed
+SIZE (rust/crates/try-lock-0.2.4.crate) = 4467
+SHA256 (rust/crates/typenum-1.16.0.crate) = 497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba
+SIZE (rust/crates/typenum-1.16.0.crate) = 42477
+SHA256 (rust/crates/uname-0.1.1.crate) = b72f89f0ca32e4db1c04e2a72f5345d59796d4866a1ee0609084569f73683dc8
+SIZE (rust/crates/uname-0.1.1.crate) = 6852
+SHA256 (rust/crates/unicode-bidi-0.3.13.crate) = 92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460
+SIZE (rust/crates/unicode-bidi-0.3.13.crate) = 44477
+SHA256 (rust/crates/unicode-ident-1.0.9.crate) = b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0
+SIZE (rust/crates/unicode-ident-1.0.9.crate) = 41978
+SHA256 (rust/crates/unicode-normalization-0.1.22.crate) = 5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921
+SIZE (rust/crates/unicode-normalization-0.1.22.crate) = 122604
+SHA256 (rust/crates/untrusted-0.7.1.crate) = a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a
+SIZE (rust/crates/untrusted-0.7.1.crate) = 7924
+SHA256 (rust/crates/ureq-2.7.1.crate) = 0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9
+SIZE (rust/crates/ureq-2.7.1.crate) = 111068
+SHA256 (rust/crates/url-2.4.0.crate) = 50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb
+SIZE (rust/crates/url-2.4.0.crate) = 75670
+SHA256 (rust/crates/utf8parse-0.2.1.crate) = 711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a
+SIZE (rust/crates/utf8parse-0.2.1.crate) = 13435
+SHA256 (rust/crates/uuid-1.4.0.crate) = d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be
+SIZE (rust/crates/uuid-1.4.0.crate) = 55200
+SHA256 (rust/crates/valuable-0.1.0.crate) = 830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d
+SIZE (rust/crates/valuable-0.1.0.crate) = 27718
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+SHA256 (rust/crates/want-0.3.1.crate) = bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e
+SIZE (rust/crates/want-0.3.1.crate) = 6398
+SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423
+SIZE (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 28131
+SHA256 (rust/crates/wasm-bindgen-0.2.87.crate) = 7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342
+SIZE (rust/crates/wasm-bindgen-0.2.87.crate) = 175052
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.87.crate) = 5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd
+SIZE (rust/crates/wasm-bindgen-backend-0.2.87.crate) = 26821
+SHA256 (rust/crates/wasm-bindgen-futures-0.4.37.crate) = c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03
+SIZE (rust/crates/wasm-bindgen-futures-0.4.37.crate) = 15193
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.87.crate) = dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d
+SIZE (rust/crates/wasm-bindgen-macro-0.2.87.crate) = 13897
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.87.crate) = 54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.87.crate) = 20006
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.87.crate) = ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1
+SIZE (rust/crates/wasm-bindgen-shared-0.2.87.crate) = 7248
+SHA256 (rust/crates/web-sys-0.3.64.crate) = 9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b
+SIZE (rust/crates/web-sys-0.3.64.crate) = 725584
+SHA256 (rust/crates/webpki-0.22.0.crate) = f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd
+SIZE (rust/crates/webpki-0.22.0.crate) = 58663
+SHA256 (rust/crates/webpki-roots-0.22.6.crate) = b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87
+SIZE (rust/crates/webpki-roots-0.22.6.crate) = 242386
+SHA256 (rust/crates/webpki-roots-0.23.1.crate) = b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338
+SIZE (rust/crates/webpki-roots-0.23.1.crate) = 245626
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-sys-0.42.0.crate) = 5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7
+SIZE (rust/crates/windows-sys-0.42.0.crate) = 3006791
+SHA256 (rust/crates/windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9
+SIZE (rust/crates/windows-sys-0.48.0.crate) = 2628884
+SHA256 (rust/crates/windows-targets-0.48.1.crate) = 05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f
+SIZE (rust/crates/windows-targets-0.48.1.crate) = 6902
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8
+SIZE (rust/crates/windows_aarch64_gnullvm-0.42.2.crate) = 364071
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.48.0.crate) = 91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc
+SIZE (rust/crates/windows_aarch64_gnullvm-0.48.0.crate) = 366543
+SHA256 (rust/crates/windows_aarch64_msvc-0.42.2.crate) = e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43
+SIZE (rust/crates/windows_aarch64_msvc-0.42.2.crate) = 666981
+SHA256 (rust/crates/windows_aarch64_msvc-0.48.0.crate) = b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3
+SIZE (rust/crates/windows_aarch64_msvc-0.48.0.crate) = 671479
+SHA256 (rust/crates/windows_i686_gnu-0.42.2.crate) = c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f
+SIZE (rust/crates/windows_i686_gnu-0.42.2.crate) = 736236
+SHA256 (rust/crates/windows_i686_gnu-0.48.0.crate) = 622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241
+SIZE (rust/crates/windows_i686_gnu-0.48.0.crate) = 741490
+SHA256 (rust/crates/windows_i686_msvc-0.42.2.crate) = 44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060
+SIZE (rust/crates/windows_i686_msvc-0.42.2.crate) = 724951
+SHA256 (rust/crates/windows_i686_msvc-0.48.0.crate) = 4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00
+SIZE (rust/crates/windows_i686_msvc-0.48.0.crate) = 730056
+SHA256 (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36
+SIZE (rust/crates/windows_x86_64_gnu-0.42.2.crate) = 699373
+SHA256 (rust/crates/windows_x86_64_gnu-0.48.0.crate) = ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1
+SIZE (rust/crates/windows_x86_64_gnu-0.48.0.crate) = 703595
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3
+SIZE (rust/crates/windows_x86_64_gnullvm-0.42.2.crate) = 364068
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.48.0.crate) = 7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953
+SIZE (rust/crates/windows_x86_64_gnullvm-0.48.0.crate) = 366536
+SHA256 (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0
+SIZE (rust/crates/windows_x86_64_msvc-0.42.2.crate) = 666936
+SHA256 (rust/crates/windows_x86_64_msvc-0.48.0.crate) = 1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a
+SIZE (rust/crates/windows_x86_64_msvc-0.48.0.crate) = 671422
+SHA256 (rust/crates/winnow-0.4.7.crate) = ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448
+SIZE (rust/crates/winnow-0.4.7.crate) = 142640
+SHA256 (rust/crates/winreg-0.10.1.crate) = 80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d
+SIZE (rust/crates/winreg-0.10.1.crate) = 25725
+SHA256 (rust/crates/zeroize-1.6.0.crate) = 2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9
+SIZE (rust/crates/zeroize-1.6.0.crate) = 19049
+SHA256 (pendulum-project-ntpd-rs-v0.3.7_GH0.tar.gz) = e705447e61a4857875b136d5910b48f2db5dba91b77e59e430c0d651867429ad
+SIZE (pendulum-project-ntpd-rs-v0.3.7_GH0.tar.gz) = 683117
diff --git a/net/ntpd-rs/files/ntp_daemon.in b/net/ntpd-rs/files/ntp_daemon.in
new file mode 100644
index 000000000000..c07a7d9d4b66
--- /dev/null
+++ b/net/ntpd-rs/files/ntp_daemon.in
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# PROVIDE: ntp_daemon
+# REQUIRE: DAEMON FILESYSTEMS devfs
+# BEFORE:  LOGIN
+# KEYWORD: nojail resume shutdown
+#
+. /etc/rc.subr
+
+name=ntp_daemon
+rcvar=ntp_daemon_enable
+
+load_rc_config $name
+
+ntp_daemon_enable=${ntp_daemon_enable-"NO"}
+ntp_daemon_config=${ntp_daemon_config-"%%ETCDIR%%/ntp.toml"}
+ntp_daemon_socket=${ntp_daemon_socket-"/var/run/ntpd-rs"}
+
+command="/usr/bin/true"
+procname="/usr/sbin/daemon"
+pidfile="/var/run/${name}.pid"
+
+start_cmd="ntp_daemon_start"
+stop_cmd="ntp_daemon_stop"
+
+is_process_running()
+{
+	[ -f ${pidfile} ] && procstat $(cat ${pidfile}) >/dev/null 2>&1
+}
+
+ntp_daemon_start()
+{
+	[ -d "${ntp_daemon_socket}" ] || /bin/mkdir "${ntp_daemon_socket}"
+	/usr/sbin/chown _ntp:_ntp "${ntp_daemon_socket}"
+	/usr/sbin/daemon -P ${pidfile} -r -f -o /var/log/ntp_daemon.log -H %%PREFIX%%/bin/ntp-daemon --config "${ntp_daemon_config}"
+
+	if is_process_running; then
+		echo "Started ntp-daemon (pid=$(cat ${pidfile}))"
+	else
+		echo "Failed to start ntp-daemon"
+	fi
+}
+
+ntp_daemon_stop()
+{
+	if is_process_running; then
+		/bin/rm -rf "${ntp_daemon_socket}"
+		local pid=$(cat ${pidfile})
+		echo "Stopping ntp-daemon (pid=${pid})"
+		kill -- -${pid}
+	else
+		echo "ntp-daemon isn't running"
+	fi
+}
+
+run_rc_command "$1"
diff --git a/net/ntpd-rs/files/patch-config_nts.client.toml b/net/ntpd-rs/files/patch-config_nts.client.toml
new file mode 100644
index 000000000000..8f4a67bcd878
--- /dev/null
+++ b/net/ntpd-rs/files/patch-config_nts.client.toml
@@ -0,0 +1,8 @@
+--- config/nts.client.toml.orig	2023-07-28 10:29:25 UTC
++++ config/nts.client.toml
+@@ -18,4 +18,4 @@ startup-panic-threshold = { forward = "inf", backward 
+ startup-panic-threshold = { forward = "inf", backward = 1800 }
+ 
+ [observe]
+-path = "/run/ntpd-rs/observe"
++path = "/var/run/ntpd-rs/observe"
diff --git a/net/ntpd-rs/files/patch-ntp-ctl_src_lib.rs b/net/ntpd-rs/files/patch-ntp-ctl_src_lib.rs
new file mode 100644
index 000000000000..590474ec5187
--- /dev/null
+++ b/net/ntpd-rs/files/patch-ntp-ctl_src_lib.rs
@@ -0,0 +1,17 @@
+--- ntp-ctl/src/lib.rs.orig	2023-07-28 10:29:56 UTC
++++ ntp-ctl/src/lib.rs
+@@ -95,12 +95,12 @@ pub async fn main() -> std::io::Result<ExitCode> {
+     let observation = cli
+         .observation_socket
+         .or(config.observe.path)
+-        .unwrap_or_else(|| PathBuf::from("/run/ntpd-rs/observe"));
++        .unwrap_or_else(|| PathBuf::from("/var/run/ntpd-rs/observe"));
+ 
+     let configuration = cli
+         .configuration_socket
+         .or(config.configure.path)
+-        .unwrap_or_else(|| PathBuf::from("/run/ntpd-rs/configure"));
++        .unwrap_or_else(|| PathBuf::from("/var/run/ntpd-rs/configure"));
+ 
+     match cli.command {
+         Command::Peers => print_state(PrintState::Peers, observation).await,
diff --git a/net/ntpd-rs/files/patch-ntp-daemon_src_config_mod.rs b/net/ntpd-rs/files/patch-ntp-daemon_src_config_mod.rs
new file mode 100644
index 000000000000..fbcda8d3bedf
--- /dev/null
+++ b/net/ntpd-rs/files/patch-ntp-daemon_src_config_mod.rs
@@ -0,0 +1,11 @@
+--- ntp-daemon/src/config/mod.rs.orig	2023-07-28 13:42:06 UTC
++++ ntp-daemon/src/config/mod.rs
+@@ -272,7 +272,7 @@ impl Config {
+         }
+ 
+         // for the global file we also ignore it when there are permission errors
+-        let global_path = Path::new("/etc/ntpd-rs/ntp.toml");
++        let global_path = Path::new("%%ETCDIR%%/ntp.toml");
+         if global_path.exists() {
+             info!("using config file at default location `{:?}`", global_path);
+             match Config::from_file(global_path).await {
diff --git a/net/ntpd-rs/files/patch-ntp-metrics-exporter_src_lib.rs b/net/ntpd-rs/files/patch-ntp-metrics-exporter_src_lib.rs
new file mode 100644
index 000000000000..b419ff9db016
--- /dev/null
+++ b/net/ntpd-rs/files/patch-ntp-metrics-exporter_src_lib.rs
@@ -0,0 +1,11 @@
+--- ntp-metrics-exporter/src/lib.rs.orig	2023-07-28 10:29:42 UTC
++++ ntp-metrics-exporter/src/lib.rs
+@@ -48,7 +48,7 @@ pub async fn main() -> Result<(), Box<dyn std::error::
+         Some(path) => path,
+         None => match config.observe.path {
+             Some(path) => path,
+-            None => "/run/ntpd-rs/observe".into(),
++            None => "/var/run/ntpd-rs/observe".into(),
+         },
+     };
+ 
diff --git a/net/ntpd-rs/files/patch-ntp.server.toml b/net/ntpd-rs/files/patch-ntp.server.toml
new file mode 100644
index 000000000000..3ae7c2aff1f8
--- /dev/null
+++ b/net/ntpd-rs/files/patch-ntp.server.toml
@@ -0,0 +1,11 @@
+--- ntp.server.toml.orig	2023-07-28 10:30:50 UTC
++++ ntp.server.toml
+@@ -18,7 +18,7 @@ max-peers = 4
+ #max-peers = 4
+ 
+ [observe]
+-path = "/run/ntpd-rs/observe"
++path = "/var/run/ntpd-rs/observe"
+ 
+ # Serve NTP on any interface (requires permissions to use udp port 123)
+ [[server]]
diff --git a/net/ntpd-rs/files/patch-ntp.toml b/net/ntpd-rs/files/patch-ntp.toml
new file mode 100644
index 000000000000..bb9f0666e6fe
--- /dev/null
+++ b/net/ntpd-rs/files/patch-ntp.toml
@@ -0,0 +1,11 @@
+--- ntp.toml.orig	2023-07-28 10:31:31 UTC
++++ ntp.toml
+@@ -18,7 +18,7 @@ max-peers = 4
+ #max-peers = 4
+ 
+ [observe]
+-path = "/run/ntpd-rs/observe"
++path = "/var/run/ntpd-rs/observe"
+ 
+ # Below are configured various thresholds beyond which ntpd-rs will not
+ # change the system clock. CHANGE THESE TO MATCH YOUR SECURITY NEEDS!
diff --git a/net/ntpd-rs/files/patch-pkg_common_ntp.toml.default b/net/ntpd-rs/files/patch-pkg_common_ntp.toml.default
new file mode 100644
index 000000000000..5c27682556e9
--- /dev/null
+++ b/net/ntpd-rs/files/patch-pkg_common_ntp.toml.default
@@ -0,0 +1,11 @@
+--- pkg/common/ntp.toml.default.orig	2023-07-28 10:30:35 UTC
++++ pkg/common/ntp.toml.default
+@@ -34,7 +34,7 @@ max-peers = 4
+ ## `ntp-metrics-exporter` binaries for some default options to read from the
+ ## observe socket.
+ [observe]
+-path = "/run/ntpd-rs/observe"
++path = "/var/run/ntpd-rs/observe"
+ 
+ ## Below are configured various thresholds beyond which ntpd-rs will not
+ ## change the system clock. CHANGE THESE TO MATCH YOUR SECURITY NEEDS!
diff --git a/net/ntpd-rs/files/patch-test-binaries_src_bin_peer-state.rs b/net/ntpd-rs/files/patch-test-binaries_src_bin_peer-state.rs
new file mode 100644
index 000000000000..095c2787fed2
--- /dev/null
+++ b/net/ntpd-rs/files/patch-test-binaries_src_bin_peer-state.rs
@@ -0,0 +1,11 @@
+--- test-binaries/src/bin/peer-state.rs.orig	2023-07-28 10:30:19 UTC
++++ test-binaries/src/bin/peer-state.rs
+@@ -3,7 +3,7 @@ async fn main() -> Result<(), Box<dyn Error>> {
+ 
+ #[tokio::main]
+ async fn main() -> Result<(), Box<dyn Error>> {
+-    let mut stream = tokio::net::UnixStream::connect("/run/ntpd-rs/observe").await?;
++    let mut stream = tokio::net::UnixStream::connect("/var/run/ntpd-rs/observe").await?;
+ 
+     let mut msg = Vec::with_capacity(16 * 1024);
+     let output: ObservableState = ntp_daemon::sockets::read_json(&mut stream, &mut msg).await?;
diff --git a/net/ntpd-rs/files/patch-test-keys_unsafe.nts.server.toml b/net/ntpd-rs/files/patch-test-keys_unsafe.nts.server.toml
new file mode 100644
index 000000000000..6d9083006670
--- /dev/null
+++ b/net/ntpd-rs/files/patch-test-keys_unsafe.nts.server.toml
@@ -0,0 +1,11 @@
+--- test-keys/unsafe.nts.server.toml.orig	2023-07-28 10:31:19 UTC
++++ test-keys/unsafe.nts.server.toml
+@@ -20,7 +20,7 @@ startup-panic-threshold = { forward = 0, backward = 18
+ startup-panic-threshold = { forward = 0, backward = 1800 }
*** 32 LINES SKIPPED ***