From c2e6a8f215febe22254c579d436f4947287bc37d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sun, 2 Jun 2024 20:26:23 +0200 Subject: [PATCH 01/76] benchmark: fix napi/ref addon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs: https://github.com/nodejs/node/pull/53212#issuecomment-2142566866 PR-URL: https://github.com/nodejs/node/pull/53233 Reviewed-By: Yagiz Nizipli Reviewed-By: Vinícius Lourenço Claro Cardoso Reviewed-By: Luigi Pinca Reviewed-By: Chengzhong Wu --- benchmark/napi/ref/addon.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/benchmark/napi/ref/addon.c b/benchmark/napi/ref/addon.c index 3fb8de603d3ced..2a7d3c8b2df23e 100644 --- a/benchmark/napi/ref/addon.c +++ b/benchmark/napi/ref/addon.c @@ -1,6 +1,5 @@ -#include -#define NAPI_EXPERIMENTAL #include +#include #define NAPI_CALL(env, call) \ do { \ @@ -34,8 +33,7 @@ SetCount(napi_env env, napi_callback_info info) { return NULL; } -static void -IncrementCounter(napi_env env, void* data, void* hint) { +static void IncrementCounter(node_api_nogc_env env, void* data, void* hint) { size_t* count = data; (*count) = (*count) + 1; } From 0092358d00e90d501441a69e2b0562f259b0c218 Mon Sep 17 00:00:00 2001 From: Arsalan Ahmad Date: Mon, 11 Dec 2023 10:41:23 +0200 Subject: [PATCH 02/76] http: handle multi-value content-disposition header Headers in nodejs can be arrays and current workaround for content-disposition header do not take this into account. This change fixes that and makes sure array values are handled properly. PR-URL: https://github.com/nodejs/node/pull/50977 Reviewed-By: Paolo Insogna Reviewed-By: Marco Ippolito Reviewed-By: James M Snell Reviewed-By: Matteo Collina --- lib/_http_outgoing.js | 9 +++++++- .../test-http-server-non-utf8-header.js | 21 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js index bc57cd067507f7..ebb339785d0b0c 100644 --- a/lib/_http_outgoing.js +++ b/lib/_http_outgoing.js @@ -552,7 +552,14 @@ function processHeader(self, state, key, value, validate) { // https://www.rfc-editor.org/rfc/rfc6266#section-4.3 // Refs: https://github.com/nodejs/node/pull/46528 if (isContentDispositionField(key) && self._contentLength) { - value = Buffer.from(value, 'latin1'); + // The value could be an array here + if (ArrayIsArray(value)) { + for (let i = 0; i < value.length; i++) { + value[i] = Buffer.from(value[i], 'latin1'); + } + } else { + value = Buffer.from(value, 'latin1'); + } } if (ArrayIsArray(value)) { diff --git a/test/parallel/test-http-server-non-utf8-header.js b/test/parallel/test-http-server-non-utf8-header.js index 331965ae38d0f8..8ce82ac4cada04 100644 --- a/test/parallel/test-http-server-non-utf8-header.js +++ b/test/parallel/test-http-server-non-utf8-header.js @@ -26,6 +26,27 @@ const nonUtf8ToLatin1 = Buffer.from(nonUtf8Header).toString('latin1'); })); } +{ + // Test multi-value header + const server = http.createServer(common.mustCall((req, res) => { + res.writeHead(200, [ + 'content-disposition', + [Buffer.from(nonUtf8Header).toString('binary')], + ]); + res.end('hello'); + })); + + server.listen(0, common.mustCall(() => { + http.get({ port: server.address().port }, (res) => { + assert.strictEqual(res.statusCode, 200); + assert.strictEqual(res.headers['content-disposition'], nonUtf8ToLatin1); + res.resume().on('end', common.mustCall(() => { + server.close(); + })); + }); + })); +} + { const server = http.createServer(common.mustCall((req, res) => { res.writeHead(200, [ From 9f521f456e88fa40a000b19f6c5fb2ef7ea0da82 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Mon, 10 Jun 2024 18:43:36 +0100 Subject: [PATCH 03/76] test: update tests for OpenSSL 3.0.14 Starting from OpenSSL 3.0.14, 3.1.6, 3.2.2, and 3.3.1, OpenSSL was fixed to return an error reason string for bad/unknown application protocols. Update tests to handle both the old `ECONNRESET` error on older versions of OpenSSL and the new `ERR_SSL_TLSV1_ALERT_NO_APPLICATION_PROTOCOL` on newer versions of OpenSSL. Refs: https://github.com/openssl/openssl/pull/24338 PR-URL: https://github.com/nodejs/node/pull/53373 Reviewed-By: Luigi Pinca Reviewed-By: Michael Dawson --- test/parallel/test-tls-alpn-server-client.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-tls-alpn-server-client.js b/test/parallel/test-tls-alpn-server-client.js index 522dd34ad21567..3f0ee2a0f93c56 100644 --- a/test/parallel/test-tls-alpn-server-client.js +++ b/test/parallel/test-tls-alpn-server-client.js @@ -195,7 +195,8 @@ function TestALPNCallback() { // Callback picks 2nd preference => undefined => ALPN rejected: assert.strictEqual(results[1].server, undefined); - assert.strictEqual(results[1].client.error.code, 'ECONNRESET'); + const allowedErrors = ['ECONNRESET', 'ERR_SSL_TLSV1_ALERT_NO_APPLICATION_PROTOCOL']; + assert.ok(allowedErrors.includes(results[1].client.error.code), `'${results[1].client.error.code}' was not one of ${allowedErrors}.`); TestBadALPNCallback(); }); @@ -218,7 +219,8 @@ function TestBadALPNCallback() { runTest(clientsOptions, serverOptions, function(results) { // Callback returns 'http/5' => doesn't match client ALPN => error & reset assert.strictEqual(results[0].server, undefined); - assert.strictEqual(results[0].client.error.code, 'ECONNRESET'); + const allowedErrors = ['ECONNRESET', 'ERR_SSL_TLSV1_ALERT_NO_APPLICATION_PROTOCOL']; + assert.ok(allowedErrors.includes(results[0].client.error.code), `'${results[0].client.error.code}' was not one of ${allowedErrors}.`); TestALPNOptionsCallback(); }); From 627d3993f029db5d94b1789822a72635a42a47ea Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 1 Mar 2024 02:44:55 +0100 Subject: [PATCH 04/76] test: fix unreliable assumption in js-native-api/test_cannot_run_js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously the test assumes that when the queued finalizer is run, it must be run at a point where env->can_call_into_js() is false (typically, during Environment shutdown), which is not certain. If GC kicks in early and the second pass finalizer is queued before the event loop runs the check callbacks, the finalizer would then be called in check callbacks (via native immediates), where the finalizer can still call into JS. Essentially, addons can't make assumptions about where the queued finalizer would be called. This patch updates the assertions in the test to account for that. PR-URL: https://github.com/nodejs/node/pull/51898 Reviewed-By: Michaël Zasso Reviewed-By: Richard Lau Reviewed-By: Marco Ippolito Reviewed-By: Chengzhong Wu --- .../test_cannot_run_js/test_cannot_run_js.c | 32 ++++++++++++++----- test/root.status | 1 - 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/test/js-native-api/test_cannot_run_js/test_cannot_run_js.c b/test/js-native-api/test_cannot_run_js/test_cannot_run_js.c index c495f8780d0141..813e59918e7b3a 100644 --- a/test/js-native-api/test_cannot_run_js/test_cannot_run_js.c +++ b/test/js-native-api/test_cannot_run_js/test_cannot_run_js.c @@ -6,17 +6,33 @@ static void Finalize(napi_env env, void* data, void* hint) { napi_value global, set_timeout; napi_ref* ref = data; + + NODE_API_NOGC_ASSERT_RETURN_VOID( + napi_delete_reference(env, *ref) == napi_ok, + "deleting reference in finalizer should succeed"); + NODE_API_NOGC_ASSERT_RETURN_VOID( + napi_get_global(env, &global) == napi_ok, + "getting global reference in finalizer should succeed"); + napi_status result = + napi_get_named_property(env, global, "setTimeout", &set_timeout); + + // The finalizer could be invoked either from check callbacks (as native + // immediates) if the event loop is still running (where napi_ok is returned) + // or during environment shutdown (where napi_cannot_run_js or + // napi_pending_exception is returned). This is not deterministic from + // the point of view of the addon. + #ifdef NAPI_EXPERIMENTAL - napi_status expected_status = napi_cannot_run_js; + NODE_API_NOGC_ASSERT_RETURN_VOID( + result == napi_cannot_run_js || result == napi_ok, + "getting named property from global in finalizer should succeed " + "or return napi_cannot_run_js"); #else - napi_status expected_status = napi_pending_exception; + NODE_API_NOGC_ASSERT_RETURN_VOID( + result == napi_pending_exception || result == napi_ok, + "getting named property from global in finalizer should succeed " + "or return napi_pending_exception"); #endif // NAPI_EXPERIMENTAL - - if (napi_delete_reference(env, *ref) != napi_ok) abort(); - if (napi_get_global(env, &global) != napi_ok) abort(); - if (napi_get_named_property(env, global, "setTimeout", &set_timeout) != - expected_status) - abort(); free(ref); } diff --git a/test/root.status b/test/root.status index 12fef69a4b3c92..22f7260246f5e0 100644 --- a/test/root.status +++ b/test/root.status @@ -1,5 +1,4 @@ [true] -js-native-api/test_cannot_run_js/test: PASS,FLAKY [$mode==debug] async-hooks/test-callback-error: SLOW From 6615fe5db1b7b37e5ccc76c0d8790cfd48dc6b17 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Fri, 14 Jun 2024 16:51:42 +0000 Subject: [PATCH 05/76] src: fix dynamically linked OpenSSL version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Report the version of OpenSSL that Node.js is running with instead of the version of OpenSSL that Node.js was compiled against. PR-URL: https://github.com/nodejs/node/pull/53456 Reviewed-By: Luigi Pinca Reviewed-By: Tobias Nießen --- src/node_metadata.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/node_metadata.cc b/src/node_metadata.cc index 22546e9de25bdf..361b3596b4a65c 100644 --- a/src/node_metadata.cc +++ b/src/node_metadata.cc @@ -17,7 +17,7 @@ #include "zlib.h" #if HAVE_OPENSSL -#include +#include #if NODE_OPENSSL_HAS_QUIC #include #endif @@ -49,9 +49,10 @@ static constexpr size_t search(const char* s, char c, size_t n = 0) { static inline std::string GetOpenSSLVersion() { // sample openssl version string format // for reference: "OpenSSL 1.1.0i 14 Aug 2018" - constexpr size_t start = search(OPENSSL_VERSION_TEXT, ' ') + 1; - constexpr size_t len = search(&OPENSSL_VERSION_TEXT[start], ' '); - return std::string(OPENSSL_VERSION_TEXT, start, len); + const char* version = OpenSSL_version(OPENSSL_VERSION); + const size_t start = search(version, ' ') + 1; + const size_t len = search(&version[start], ' '); + return std::string(version, start, len); } #endif // HAVE_OPENSSL From fc43c6803ec6ec5d92288826b0f25c5afbe86c61 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Sun, 9 Jun 2024 17:50:08 +0100 Subject: [PATCH 06/76] test: update TLS tests for OpenSSL 3.2 Update the following TLS tests to account for error code changes in OpenSSL 3.2 and later. - `parallel/test-tls-empty-sni-context` - `parallel/test-tls-psk-circuit` PR-URL: https://github.com/nodejs/node/pull/53384 Refs: https://github.com/nodejs/node/issues/53382 Refs: https://github.com/openssl/openssl/pull/19950 Reviewed-By: Luigi Pinca Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Yagiz Nizipli --- test/common/index.js | 4 ++++ test/parallel/test-tls-empty-sni-context.js | 4 +++- test/parallel/test-tls-psk-circuit.js | 10 ++++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/test/common/index.js b/test/common/index.js index e25b861cce1cd6..131cf618b8beaa 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -61,6 +61,9 @@ const hasOpenSSL3 = hasCrypto && const hasOpenSSL31 = hasCrypto && require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30100000; +const hasOpenSSL32 = hasCrypto && + require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30200000; + const hasQuic = hasCrypto && !!process.config.variables.openssl_quic; function parseTestFlags(filename = process.argv[1]) { @@ -902,6 +905,7 @@ const common = { hasCrypto, hasOpenSSL3, hasOpenSSL31, + hasOpenSSL32, hasQuic, hasMultiLocalhost, invalidArgTypeHelper, diff --git a/test/parallel/test-tls-empty-sni-context.js b/test/parallel/test-tls-empty-sni-context.js index 87219976a1ebda..3424e057bdef46 100644 --- a/test/parallel/test-tls-empty-sni-context.js +++ b/test/parallel/test-tls-empty-sni-context.js @@ -26,6 +26,8 @@ const server = tls.createServer(options, (c) => { }, common.mustNotCall()); c.on('error', common.mustCall((err) => { - assert.strictEqual(err.code, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'); + const expectedErr = common.hasOpenSSL32 ? + 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'; + assert.strictEqual(err.code, expectedErr); })); })); diff --git a/test/parallel/test-tls-psk-circuit.js b/test/parallel/test-tls-psk-circuit.js index cef6735032ea6e..2b49161df8326c 100644 --- a/test/parallel/test-tls-psk-circuit.js +++ b/test/parallel/test-tls-psk-circuit.js @@ -62,9 +62,11 @@ test({ psk: USERS.UserA, identity: 'UserA' }, { minVersion: 'TLSv1.3' }); test({ psk: USERS.UserB, identity: 'UserB' }); test({ psk: USERS.UserB, identity: 'UserB' }, { minVersion: 'TLSv1.3' }); // Unrecognized user should fail handshake -test({ psk: USERS.UserB, identity: 'UserC' }, {}, - 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'); +const expectedHandshakeErr = common.hasOpenSSL32 ? + 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'; +test({ psk: USERS.UserB, identity: 'UserC' }, {}, expectedHandshakeErr); // Recognized user but incorrect secret should fail handshake -test({ psk: USERS.UserA, identity: 'UserB' }, {}, - 'ERR_SSL_SSLV3_ALERT_ILLEGAL_PARAMETER'); +const expectedIllegalParameterErr = common.hasOpenSSL32 ? + 'ERR_SSL_SSL/TLS_ALERT_ILLEGAL_PARAMETER' : 'ERR_SSL_SSLV3_ALERT_ILLEGAL_PARAMETER'; +test({ psk: USERS.UserA, identity: 'UserB' }, {}, expectedIllegalParameterErr); test({ psk: USERS.UserB, identity: 'UserB' }); From cc3cdf7cc035398c5f5cd151ab9c2a4cc3f251aa Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Fri, 14 Jun 2024 16:54:18 +0000 Subject: [PATCH 07/76] test: check against run-time OpenSSL version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update `common.hasOpenSSL3*` to check against the run-time version of OpenSSL instead of the version of OpenSSL that Node.js was compiled against. Add a generalized `common.hasOpenSSL()` so we do not need to keep adding new checks for each new major/minor of OpenSSL. PR-URL: https://github.com/nodejs/node/pull/53456 Reviewed-By: Luigi Pinca Reviewed-By: Tobias Nießen --- test/common/index.js | 40 ++++++++++++++++++++++++--------- test/parallel/test-crypto-dh.js | 4 ++-- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/test/common/index.js b/test/common/index.js index 131cf618b8beaa..7c1b99a9f78d63 100644 --- a/test/common/index.js +++ b/test/common/index.js @@ -55,14 +55,24 @@ const noop = () => {}; const hasCrypto = Boolean(process.versions.openssl) && !process.env.NODE_SKIP_CRYPTO; -const hasOpenSSL3 = hasCrypto && - require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30000000; - -const hasOpenSSL31 = hasCrypto && - require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30100000; +// Synthesize OPENSSL_VERSION_NUMBER format with the layout 0xMNN00PPSL +const opensslVersionNumber = (major = 0, minor = 0, patch = 0) => { + assert(major >= 0 && major <= 0xf); + assert(minor >= 0 && minor <= 0xff); + assert(patch >= 0 && patch <= 0xff); + return (major << 28) | (minor << 20) | (patch << 4); +}; -const hasOpenSSL32 = hasCrypto && - require('crypto').constants.OPENSSL_VERSION_NUMBER >= 0x30200000; +let OPENSSL_VERSION_NUMBER; +const hasOpenSSL = (major = 0, minor = 0, patch = 0) => { + if (!hasCrypto) return false; + if (OPENSSL_VERSION_NUMBER === undefined) { + const regexp = /(?\d+)\.(?\d+)\.(?

\d+)/; + const { m, n, p } = process.versions.openssl.match(regexp).groups; + OPENSSL_VERSION_NUMBER = opensslVersionNumber(m, n, p); + } + return OPENSSL_VERSION_NUMBER >= opensslVersionNumber(major, minor, patch); +}; const hasQuic = hasCrypto && !!process.config.variables.openssl_quic; @@ -903,9 +913,7 @@ const common = { getTTYfd, hasIntl, hasCrypto, - hasOpenSSL3, - hasOpenSSL31, - hasOpenSSL32, + hasOpenSSL, hasQuic, hasMultiLocalhost, invalidArgTypeHelper, @@ -966,6 +974,18 @@ const common = { }); }, + get hasOpenSSL3() { + return hasOpenSSL(3); + }, + + get hasOpenSSL31() { + return hasOpenSSL(3, 1); + }, + + get hasOpenSSL32() { + return hasOpenSSL(3, 2); + }, + get inFreeBSDJail() { if (inFreeBSDJail !== null) return inFreeBSDJail; diff --git a/test/parallel/test-crypto-dh.js b/test/parallel/test-crypto-dh.js index 3b738b7f47ec59..fb580e1b315445 100644 --- a/test/parallel/test-crypto-dh.js +++ b/test/parallel/test-crypto-dh.js @@ -86,8 +86,8 @@ const crypto = require('crypto'); } { - const v = crypto.constants.OPENSSL_VERSION_NUMBER; - const hasOpenSSL3WithNewErrorMessage = (v >= 0x300000c0 && v <= 0x30100000) || (v >= 0x30100040 && v <= 0x30200000); + const hasOpenSSL3WithNewErrorMessage = (common.hasOpenSSL(3, 0, 12) && !common.hasOpenSSL(3, 1, 1)) || + (common.hasOpenSSL(3, 1, 4) && !common.hasOpenSSL(3, 2, 1)); assert.throws(() => { dh3.computeSecret(''); }, { message: common.hasOpenSSL3 && !hasOpenSSL3WithNewErrorMessage ? From 1320fb9475b8086cf607e2fbfd110fe0fbbe3b87 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Sun, 2 Jun 2024 17:47:58 +0100 Subject: [PATCH 08/76] test: update TLS trace tests for OpenSSL >= 3.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update tests to allow for a slight change to the TLS trace messages starting from OpenSSL 3.2. Refs: https://github.com/openssl/openssl/commit/45aac10717479b5c2445e7704cd742b0d754aaa8 PR-URL: https://github.com/nodejs/node/pull/53229 Reviewed-By: Tim Perry Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca Reviewed-By: Moshe Atlow Reviewed-By: Ulises Gascón --- test/parallel/test-tls-enable-trace-cli.js | 2 +- test/parallel/test-tls-enable-trace.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-tls-enable-trace-cli.js b/test/parallel/test-tls-enable-trace-cli.js index 7b6f7e22397af6..634ce950dadef2 100644 --- a/test/parallel/test-tls-enable-trace-cli.js +++ b/test/parallel/test-tls-enable-trace-cli.js @@ -36,7 +36,7 @@ child.on('close', common.mustCall((code, signal) => { assert.strictEqual(signal, null); assert.strictEqual(stdout.trim(), ''); assert.match(stderr, /Warning: Enabling --trace-tls can expose sensitive/); - assert.match(stderr, /Sent Record/); + assert.match(stderr, /Sent (?:TLS )?Record/); })); function test() { diff --git a/test/parallel/test-tls-enable-trace.js b/test/parallel/test-tls-enable-trace.js index 9126f58ee17314..28c78e13371096 100644 --- a/test/parallel/test-tls-enable-trace.js +++ b/test/parallel/test-tls-enable-trace.js @@ -23,7 +23,7 @@ let stderr = ''; child.stderr.setEncoding('utf8'); child.stderr.on('data', (data) => stderr += data); child.on('close', common.mustCall(() => { - assert.match(stderr, /Received Record/); + assert.match(stderr, /Received (?:TLS )?Record/); assert.match(stderr, /ClientHello/); })); From e9e330642625d073c10e93a971ebc75ee94d70a6 Mon Sep 17 00:00:00 2001 From: Sonny <47546413+sonsurim@users.noreply.github.com> Date: Sun, 4 Aug 2024 16:03:24 +0900 Subject: [PATCH 09/76] test: use assert.{s,deepS}trictEqual() Use `asset.strictEqual()` and `asset.deepStrictEqual()` in `test/parallel/test-tls-set-sigalgs.js`. PR-URL: https://github.com/nodejs/node/pull/54208 Reviewed-By: Jake Yuesong Li Reviewed-By: Daeyeon Jeong Reviewed-By: Trivikram Kamat Reviewed-By: Benjamin Gruenbaum Reviewed-By: Yagiz Nizipli --- test/parallel/test-tls-set-sigalgs.js | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/test/parallel/test-tls-set-sigalgs.js b/test/parallel/test-tls-set-sigalgs.js index 59dc2ca0c786cf..ffe950a0d21f86 100644 --- a/test/parallel/test-tls-set-sigalgs.js +++ b/test/parallel/test-tls-set-sigalgs.js @@ -9,13 +9,6 @@ const { assert, connect, keys } = require(fixtures.path('tls-connect')); -function assert_arrays_equal(left, right) { - assert.strictEqual(left.length, right.length); - for (let i = 0; i < left.length; i++) { - assert.strictEqual(left[i], right[i]); - } -} - function test(csigalgs, ssigalgs, shared_sigalgs, cerr, serr) { assert(shared_sigalgs || serr || cerr, 'test missing any expectations'); connect({ @@ -43,16 +36,19 @@ function test(csigalgs, ssigalgs, shared_sigalgs, cerr, serr) { assert.ifError(pair.client.err); assert(pair.server.conn); assert(pair.client.conn); - assert_arrays_equal(pair.server.conn.getSharedSigalgs(), shared_sigalgs); + assert.deepStrictEqual( + pair.server.conn.getSharedSigalgs(), + shared_sigalgs + ); } else { if (serr) { assert(pair.server.err); - assert(pair.server.err.code, serr); + assert.strictEqual(pair.server.err.code, serr); } if (cerr) { assert(pair.client.err); - assert(pair.client.err.code, cerr); + assert.strictEqual(pair.client.err.code, cerr); } } @@ -68,7 +64,9 @@ test('RSA-PSS+SHA256:RSA-PSS+SHA512:ECDSA+SHA256', // Do not have shared sigalgs. test('RSA-PSS+SHA384', 'ECDSA+SHA256', - undefined, 'ECONNRESET', 'ERR_SSL_NO_SHARED_SIGNATURE_ALGORITMS'); + undefined, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', + 'ERR_SSL_NO_SHARED_SIGNATURE_ALGORITHMS'); test('RSA-PSS+SHA384:ECDSA+SHA256', 'ECDSA+SHA384:RSA-PSS+SHA256', - undefined, 'ECONNRESET', 'ERR_SSL_NO_SHARED_SIGNATURE_ALGORITMS'); + undefined, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', + 'ERR_SSL_NO_SHARED_SIGNATURE_ALGORITHMS'); From a1f0c8785967f1aaa10b4a4aebd06116f2ac9226 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 28 Aug 2024 14:58:09 +0000 Subject: [PATCH 10/76] test: fix test-tls-client-auth test for OpenSSL32 Refs: https://github.com/nodejs/node/issues/53382 Refs: https://github.com/nodejs/node/pull/53384 Same change as in 53384 where OpenSSL32 returns a slightly different error but for a different test. Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54610 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- test/parallel/test-tls-client-auth.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/parallel/test-tls-client-auth.js b/test/parallel/test-tls-client-auth.js index 04756924e5e0e6..de4c8f038ec073 100644 --- a/test/parallel/test-tls-client-auth.js +++ b/test/parallel/test-tls-client-auth.js @@ -79,8 +79,10 @@ connect({ }, function(err, pair, cleanup) { assert.strictEqual(pair.server.err.code, 'ERR_SSL_PEER_DID_NOT_RETURN_A_CERTIFICATE'); + const expectedErr = common.hasOpenSSL(3, 2) ? + 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'; assert.strictEqual(pair.client.err.code, - 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'); + expectedErr); return cleanup(); }); From 5316314755557acee67df371b23b4fe4d1888cea Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Fri, 30 Aug 2024 16:40:08 +0100 Subject: [PATCH 11/76] test: update TLS test for OpenSSL 3.2 Update `parallel/test-tls-set-sigalgs` to account for error code changes in OpenSSL 3.2 and later. PR-URL: https://github.com/nodejs/node/pull/54612 Refs: https://github.com/nodejs/node/pull/53384 Reviewed-By: Filip Skokan Reviewed-By: Luigi Pinca Reviewed-By: Yagiz Nizipli --- test/parallel/test-tls-set-sigalgs.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-tls-set-sigalgs.js b/test/parallel/test-tls-set-sigalgs.js index ffe950a0d21f86..3f3d152f4d877e 100644 --- a/test/parallel/test-tls-set-sigalgs.js +++ b/test/parallel/test-tls-set-sigalgs.js @@ -63,10 +63,12 @@ test('RSA-PSS+SHA256:RSA-PSS+SHA512:ECDSA+SHA256', ['RSA-PSS+SHA256', 'ECDSA+SHA256']); // Do not have shared sigalgs. +const handshakeErr = common.hasOpenSSL(3, 2) ? + 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE' : 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'; test('RSA-PSS+SHA384', 'ECDSA+SHA256', - undefined, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', + undefined, handshakeErr, 'ERR_SSL_NO_SHARED_SIGNATURE_ALGORITHMS'); test('RSA-PSS+SHA384:ECDSA+SHA256', 'ECDSA+SHA384:RSA-PSS+SHA256', - undefined, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', + undefined, handshakeErr, 'ERR_SSL_NO_SHARED_SIGNATURE_ALGORITHMS'); From d5b73e5683f9847448defb03634e87af52a34f91 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Thu, 29 Aug 2024 19:59:18 -0400 Subject: [PATCH 12/76] test: increase key size for ca2-cert.pem Refs: https://github.com/nodejs/node/pull/44498 Refs: https://github.com/nodejs/node/issues/53382 Key sizes were increased to 2048 in PR 44498 including the configuration file for the generation of ca2-cert.pem. However, it seems like updating ca2-cert.pem and related files themselves were missed as they were not updated in the PR and the ca2-cert.pem reported as being associated with a 1024 bit key. I believe that was the cause of some of the failures mentioned in https://github.com/nodejs/node/issues/53382 as OpenSSL 3.2 increased the default security level from 1 to 2 and that would mean that certificates associated with keys of 1024 bits would no longer be accepted. This PR updates the key size for ca2-cert.pem. It was not necessary to change the config, only run the generation for the ca2-cert.pem and related files. Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54599 Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau Reviewed-By: James M Snell --- test/fixtures/keys/agent10-cert.pem | 80 +++++++++++++----------- test/fixtures/keys/agent10.pfx | Bin 4317 -> 4736 bytes test/fixtures/keys/agent3-cert.pem | 35 ++++++----- test/fixtures/keys/agent4-cert.pem | 41 +++++++----- test/fixtures/keys/agent5-cert.pem | 41 +++++++----- test/fixtures/keys/ca2-cert.pem | 33 +++++----- test/fixtures/keys/ca2-crl.pem | 20 +++--- test/fixtures/keys/ca2-database.txt | 1 + test/fixtures/keys/ca2-database.txt.old | 1 + test/fixtures/keys/ca2-key.pem | 44 ++++++++----- test/fixtures/keys/ca4-cert.pem | 41 +++++++----- 11 files changed, 195 insertions(+), 142 deletions(-) diff --git a/test/fixtures/keys/agent10-cert.pem b/test/fixtures/keys/agent10-cert.pem index ce0e515e823d1b..59bb0705757d5b 100644 --- a/test/fixtures/keys/agent10-cert.pem +++ b/test/fixtures/keys/agent10-cert.pem @@ -1,41 +1,47 @@ -----BEGIN CERTIFICATE----- -MIIDjjCCAnagAwIBAgITMVaZ0eX5Kp8NI4vaKFVI592wTjANBgkqhkiG9w0BAQsF -ADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEfMB0G -A1UECgwWVGhlIE5vZGUuanMgRm91bmRhdGlvbjEQMA4GA1UECwwHTm9kZS5qczEM -MAoGA1UEAwwDY2E0MR4wHAYJKoZIhvcNAQkBFg9jYTRAZXhhbXBsZS5vcmcwIBcN -MjIwOTAzMjE0MDM3WhgPMjI5NjA2MTcyMTQwMzdaMHgxCzAJBgNVBAYTAlVTMQsw -CQYDVQQIDAJDQTELMAkGA1UEBwwCU0YxHzAdBgNVBAoMFlRoZSBOb2RlLmpzIEZv -dW5kYXRpb24xEDAOBgNVBAsMB05vZGUuanMxHDAaBgNVBAMME2FnZW50MTAuZXhh -bXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDP49yjMES5 -1sfYG4ac06jR7DnSizMDgW+0V6CFPguv6p1D08aBA60mhY8+tjsbin3DYRiTB2HN -7C9svZ2cAffKK9W/40G6+jfJuB6I8g+LtdZ9hViw2RC0k4PFLzpG3VsJRpM4Wfos -/ubZqBuNGLN+K68sAFU0jbUra4dtJQXMi7SlFlJIUx2g10OF312uJcREfFVgNAw4 -EIZ2H7bmGtpE0p3UfBir4HTy5nz4ruYCbbzNWDuX7RIGZSXtqaQc7P9QPvuLzspl -feI8S2oRTLRIgDEatXJFlIWzGu1kF7XjftOrnFHwRWICK6joqSzdLhSS02qfqIRF -JFVZ8QNq11bhAgMBAAEwDQYJKoZIhvcNAQELBQADggEBACenzaglCUisBHiI7H/v -tOF/75jxDUO8FmV3mksh33EpTmzoBiQD1DiTFQu/EEJ/iAbdTRJ1PVnJsMTFH0Bm -7SmkYOCpETleXjU1MwHZIvh/gGa/CjLZhop26FkK2oqENl7iaM9vvqxxQ8H4Niit -ay3cn+aB9o8MjTH9Ki9iH0LS6bwtqqRimXXX0sx3HTUnFxD/7tzE7s6t7ayk+rIJ -6mBeQAw3UjNzjtLTvSxHoPFto7z5imF+6/v236UlOTdQpkbRS1KlxA8wm/NisWeq -TLjPh5BkZof+CwTUoAFK+WILsIHuvVY9SZBNcsQvsBao/whRR2Z8bU1HDAh8jHnk -4wo= +MIIDijCCAnICFAa1gku/rBMKem53dr6+kaDTIvSCMA0GCSqGSIb3DQEBCwUAMIGI +MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExCzAJBgNVBAcMAlNGMR8wHQYDVQQK +DBZUaGUgTm9kZS5qcyBGb3VuZGF0aW9uMRAwDgYDVQQLDAdOb2RlLmpzMQwwCgYD +VQQDDANjYTQxHjAcBgkqhkiG9w0BCQEWD2NhNEBleGFtcGxlLm9yZzAgFw0yNDA4 +MjcyMjU4NDRaGA8yMjk4MDYxMTIyNTg0NFoweDELMAkGA1UEBhMCVVMxCzAJBgNV +BAgMAkNBMQswCQYDVQQHDAJTRjEfMB0GA1UECgwWVGhlIE5vZGUuanMgRm91bmRh +dGlvbjEQMA4GA1UECwwHTm9kZS5qczEcMBoGA1UEAwwTYWdlbnQxMC5leGFtcGxl +LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM/j3KMwRLnWx9gb +hpzTqNHsOdKLMwOBb7RXoIU+C6/qnUPTxoEDrSaFjz62OxuKfcNhGJMHYc3sL2y9 +nZwB98or1b/jQbr6N8m4HojyD4u11n2FWLDZELSTg8UvOkbdWwlGkzhZ+iz+5tmo +G40Ys34rrywAVTSNtStrh20lBcyLtKUWUkhTHaDXQ4XfXa4lxER8VWA0DDgQhnYf +tuYa2kTSndR8GKvgdPLmfPiu5gJtvM1YO5ftEgZlJe2ppBzs/1A++4vOymV94jxL +ahFMtEiAMRq1ckWUhbMa7WQXteN+06ucUfBFYgIrqOipLN0uFJLTap+ohEUkVVnx +A2rXVuECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAy0rm8E+PR+ZuaQsz8Q3s0Y7I +fNICuwEyByMcwiwCjvMM2FwNZbnmagmSQ2eo+jD0GMAcBLS61AWhC8tPqO6DfFOj +7L07NYJWTKQMqAsv3n6Nl0uXd8Aa4iGDhsMeTZXXk4E/GsZZ8T4pDmE8TtY6285Y +ONU7uKKFcnIfQwtcEUnpwqSAYmQxKa+rhQ974rW3hBCxvtrwNRXsMjCoPyfkIuOz +9P6ThZfMWlmuKg852Yi2VglaOrxakQInQGz4Q0JHyROd/e9m3J+t/QFR9VqtRnX8 +UEOlxD8iazk//VFd7WrO2jzqjXFIzBNrdvmsNsP+8uIjrGJtHdKeHL7v5V687A== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIDFzCCAoCgAwIBAgIJAJHwBmNgafKfMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNV -BAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0YxDzANBgNVBAoMBkpveWVu -dDEQMA4GA1UECwwHTm9kZS5qczEMMAoGA1UEAwwDY2EyMSAwHgYJKoZIhvcNAQkB -FhFyeUB0aW55Y2xvdWRzLm9yZzAgFw0yMjA5MDMxNDQ2NTFaGA8yMjk2MDYxNzE0 -NDY1MVowgYgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0Yx -HzAdBgNVBAoMFlRoZSBOb2RlLmpzIEZvdW5kYXRpb24xEDAOBgNVBAsMB05vZGUu -anMxDDAKBgNVBAMMA2NhNDEeMBwGCSqGSIb3DQEJARYPY2E0QGV4YW1wbGUub3Jn -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0HnUahyfA25t8kaziu0i -vVMkTWntm0pJ8oemeO7yCGaY4QHEwN+QUzrzO7y7ngl2Dt76eEvj0mrgaW8Ao7Ns -ePfp3663g8RrBsb4cR1da2Tc8kpXCqgwbcTlm8HI/7OAdHGA2YDLNv7iyVk9meHM -gYfO9dVgrZ7RxfnGwNMJdNjYJrd02xeU6euoKl9j/ZWCG5xHAM2xAXOKHGm8toIm -+Ss6iZXY8kypy7Fjwyv7jMT8V+pzIWu24xd3Y3s07r59nkFmQ29nHMTaLP7Tf3TY -MBI5mp8fet732aBoywpQ/w05LR9gdM1jpUvIlmhj4qGskv17AMEmRecwic3opq/b -yQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4GBADsFOR+N -Bcm2FyHOutoFpQn70qAFg0xlO3NTH87uubbs6rf3LDrsskhjskfs6wpUk56IJOoU -H7+F7aDDtSrnxzxxC5eZeGyaN05T5N01OdK3xvqUnr7mg/Ce0jnxrZhxHI8SHOqs -Kwrg4fRasUHGhH286Y13xOj2pLSrVoSbkXsA +MIIEaDCCA1CgAwIBAgIUDxaIwCfB2vttbQL/LlnVg4mwMUAwDQYJKoZIhvcNAQEL +BQAwejELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEPMA0G +A1UECgwGSm95ZW50MRAwDgYDVQQLDAdOb2RlLmpzMQwwCgYDVQQDDANjYTIxIDAe +BgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMCAXDTI0MDgyNzIyNTg0NFoY +DzIyOTgwNjExMjI1ODQ0WjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw +CQYDVQQHDAJTRjEfMB0GA1UECgwWVGhlIE5vZGUuanMgRm91bmRhdGlvbjEQMA4G +A1UECwwHTm9kZS5qczEMMAoGA1UEAwwDY2E0MR4wHAYJKoZIhvcNAQkBFg9jYTRA +ZXhhbXBsZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQedRq +HJ8Dbm3yRrOK7SK9UyRNae2bSknyh6Z47vIIZpjhAcTA35BTOvM7vLueCXYO3vp4 +S+PSauBpbwCjs2x49+nfrreDxGsGxvhxHV1rZNzySlcKqDBtxOWbwcj/s4B0cYDZ +gMs2/uLJWT2Z4cyBh8711WCtntHF+cbA0wl02Ngmt3TbF5Tp66gqX2P9lYIbnEcA +zbEBc4ocaby2gib5KzqJldjyTKnLsWPDK/uMxPxX6nMha7bjF3djezTuvn2eQWZD +b2ccxNos/tN/dNgwEjmanx963vfZoGjLClD/DTktH2B0zWOlS8iWaGPioayS/XsA +wSZF5zCJzeimr9vJAgMBAAGjgdQwgdEwDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQU +Tc8o3KouldTCYNQHvW09ZBv9sW0wgaEGA1UdIwSBmTCBlqF+pHwwejELMAkGA1UE +BhMCVVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJTRjEPMA0GA1UECgwGSm95ZW50 +MRAwDgYDVQQLDAdOb2RlLmpzMQwwCgYDVQQDDANjYTIxIDAeBgkqhkiG9w0BCQEW +EXJ5QHRpbnljbG91ZHMub3JnghRsoeMhBMOB34RpWIz6SD/UwaqquzANBgkqhkiG +9w0BAQsFAAOCAQEAKtd7q+5123jVDzpydg4o3FO84u/1gzlkQ9gAc0q48/ePD/0g +GTeTLz3fODq84l0Nx0g2XbcnrnH/07dzykZokAI6TFhv9qioeMmZa5UhwLSFynXJ +tqP26jA2/dpofGrVV2up/dJ9nw/jmvsRTigvIjkPyofFyxyssNmUIOXgEB6szthQ +mg0VKqgcF3yPDFiSMNh7YnxKd6Rsw1uujtRR+dbkLJs3m0sk+MNra7+LIfqVU5Iv +UyieguUmYYtW9rWTjxVCEl84teryIFJK81GlX/wiq1Nx3DZj+DCSwJMdl5DDzvH8 +EnE1L+MapqCnP0eAmNdWwF5SVxfKUwtt6uPpYw== -----END CERTIFICATE----- diff --git a/test/fixtures/keys/agent10.pfx b/test/fixtures/keys/agent10.pfx index f1df772cbbee1bcda61fe8bbf7467023219bb58b..fc6a9a20b1f7c116415971d84049f92bdefb7ee8 100644 GIT binary patch literal 4736 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 F{{d`mCA Date: Tue, 3 Sep 2024 16:27:53 +0000 Subject: [PATCH 13/76] test: fix test-tls-client-mindhsize for OpenSSL32 Refs: https://github.com/nodejs/node/issues/53382 - OpenSSL32 has a minimum dh key size by 2048 by default. - Create larter 3072 dh key needed for testing and adjust tests to use it for builds with OpenSSL32 Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54739 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca Reviewed-By: James M Snell --- test/fixtures/keys/Makefile | 4 +++ test/fixtures/keys/dh3072.pem | 11 ++++++++ test/parallel/test-tls-client-mindhsize.js | 30 +++++++++++++++------- 3 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 test/fixtures/keys/dh3072.pem diff --git a/test/fixtures/keys/Makefile b/test/fixtures/keys/Makefile index 313183f6d6e3ed..f562df27047526 100644 --- a/test/fixtures/keys/Makefile +++ b/test/fixtures/keys/Makefile @@ -24,6 +24,7 @@ all: \ dh512.pem \ dh1024.pem \ dh2048.pem \ + dh3072.pem \ dherror.pem \ dsa_params.pem \ dsa_private.pem \ @@ -594,6 +595,9 @@ dh1024.pem: dh2048.pem: openssl dhparam -out dh2048.pem 2048 +dh3072.pem: + openssl dhparam -out dh3072.pem 3072 + dherror.pem: dh1024.pem sed 's/^[^-].*/AAAAAAAAAA/g' dh1024.pem > dherror.pem diff --git a/test/fixtures/keys/dh3072.pem b/test/fixtures/keys/dh3072.pem new file mode 100644 index 00000000000000..50e0533d891b8c --- /dev/null +++ b/test/fixtures/keys/dh3072.pem @@ -0,0 +1,11 @@ +-----BEGIN DH PARAMETERS----- +MIIBiAKCAYEAmV6aZ8ADnmRQoF9aGlV1AmajCkoc2eEltua1KpGFrxM0cr99gcS9 +/zxTDo8ixwPoHBOOBD+9MN6KbSJ+61xvu9yQ2qt8HfNcUI7QZxdVQ4ZHCQM3Jw8h +BPHFgjpx8w/pteZ3+L42felUxbd8/qfDv+gKsfuxrm6Ht7zzKLfbX9oNdJwpxX7N +yGP3nNadYDM/ZmvmEY8xh2dwLHSMaAP1gxuWiitdYXX60Yg6EFgIotznqbdW075D +KccGTTseFx9gNbxYkW33qX/p5IAf3wRFmptiRWCol88NHTDqtQRs0nhVQ1R28tiL +rQhSJLHLSa4esF+whfC64oXECr2AtarcKWG+LX1dEWI4SXqurnBPiBoyqfVWHS4b +PVgR90LlBJoXqblhsVrd+CkJI7ULDJmSA/cpgCqXH6vSvhb40yr5rpU4vZz+zhHY +CTXVpH95JD35PiZOfQYhfDA4LGvfICPLIH7E8YL5v2F6Xxsf8trI5KiAs1S3TN8b +lsLV6og5VoPXAgEC +-----END DH PARAMETERS----- diff --git a/test/parallel/test-tls-client-mindhsize.js b/test/parallel/test-tls-client-mindhsize.js index 92ac995936825d..2295f1f064f3ad 100644 --- a/test/parallel/test-tls-client-mindhsize.js +++ b/test/parallel/test-tls-client-mindhsize.js @@ -35,11 +35,12 @@ function test(size, err, next) { }); server.listen(0, function() { - // Client set minimum DH parameter size to 2048 bits so that - // it fails when it make a connection to the tls server where - // dhparams is 1024 bits + // Client set minimum DH parameter size to 2048 or 3072 bits + // so that it fails when it makes a connection to the tls + // server where is too small + const minDHSize = common.hasOpenSSL(3, 2) ? 3072 : 2048; const client = tls.connect({ - minDHSize: 2048, + minDHSize: minDHSize, port: this.address().port, rejectUnauthorized: false, maxVersion: 'TLSv1.2', @@ -60,16 +61,27 @@ function test(size, err, next) { // A client connection fails with an error when a client has an // 2048 bits minDHSize option and a server has 1024 bits dhparam function testDHE1024() { - test(1024, true, testDHE2048); + test(1024, true, testDHE2048(false, null)); +} + +// Test a client connection when a client has an +// 2048 bits minDHSize option +function testDHE2048(expect_to_fail, next) { + test(2048, expect_to_fail, next); } // A client connection successes when a client has an -// 2048 bits minDHSize option and a server has 2048 bits dhparam -function testDHE2048() { - test(2048, false, null); +// 3072 bits minDHSize option and a server has 3072 bits dhparam +function testDHE3072() { + test(3072, false, null); } -testDHE1024(); +if (common.hasOpenSSL(3, 2)) { + // Minimum size for OpenSSL 3.2 is 2048 by default + testDHE2048(true, testDHE3072); +} else { + testDHE1024(); +} assert.throws(() => test(512, true, common.mustNotCall()), /DH parameter is less than 1024 bits/); From c7de027adbb9a187afa829ab298dc4f66deb7134 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Sat, 14 Sep 2024 09:25:24 -0400 Subject: [PATCH 14/76] test: fix test test-tls-dhe for OpenSSL32 Refs: https://github.com/nodejs/node/issues/53382 - OpenSSL32 has a minimum dh key size by 2048 by default. - Adjust test to use larger 3072 key instead of 1024 when OpenSSL32 is present. Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54903 Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau Reviewed-By: James M Snell --- test/parallel/test-tls-dhe.js | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/test/parallel/test-tls-dhe.js b/test/parallel/test-tls-dhe.js index 46779b09ff6b8f..21739ce42428eb 100644 --- a/test/parallel/test-tls-dhe.js +++ b/test/parallel/test-tls-dhe.js @@ -43,9 +43,12 @@ const dheCipher = 'DHE-RSA-AES128-SHA256'; const ecdheCipher = 'ECDHE-RSA-AES128-SHA256'; const ciphers = `${dheCipher}:${ecdheCipher}`; -// Test will emit a warning because the DH parameter size is < 2048 bits -common.expectWarning('SecurityWarning', - 'DH parameter is less than 2048 bits'); +if (!common.hasOpenSSL(3, 2)) { + // Test will emit a warning because the DH parameter size is < 2048 bits + // when the test is run on versions lower than OpenSSL32 + common.expectWarning('SecurityWarning', + 'DH parameter is less than 2048 bits'); +} function loadDHParam(n) { const keyname = `dh${n}.pem`; @@ -104,7 +107,11 @@ function testCustomParam(keylen, expectedCipher) { }, /DH parameter is less than 1024 bits/); // Custom DHE parameters are supported (but discouraged). - await testCustomParam(1024, dheCipher); + if (!common.hasOpenSSL(3, 2)) { + await testCustomParam(1024, dheCipher); + } else { + await testCustomParam(3072, dheCipher); + } await testCustomParam(2048, dheCipher); // Invalid DHE parameters are discarded. ECDHE remains enabled. From e9997388a60f5713764bd721292b9eec76de95ea Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Sat, 14 Sep 2024 12:55:40 -0400 Subject: [PATCH 15/76] test: adjust tls test for OpenSSL32 Refs: https://github.com/nodejs/node/issues/53382 Looks like test is forcing an error through bad data and the error code we get is different for OpenSSL32. Adjust test to cope with the variation across versions. Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54909 Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau Reviewed-By: James M Snell --- test/parallel/test-tls-alert-handling.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/test/parallel/test-tls-alert-handling.js b/test/parallel/test-tls-alert-handling.js index bd86149bc5ac22..67680099da07f4 100644 --- a/test/parallel/test-tls-alert-handling.js +++ b/test/parallel/test-tls-alert-handling.js @@ -31,10 +31,17 @@ const max_iter = 20; let iter = 0; const errorHandler = common.mustCall((err) => { - assert.strictEqual(err.code, 'ERR_SSL_WRONG_VERSION_NUMBER'); + let expectedErrorCode = 'ERR_SSL_WRONG_VERSION_NUMBER'; + let expectedErrorReason = 'wrong version number'; + if (common.hasOpenSSL(3, 2)) { + expectedErrorCode = 'ERR_SSL_PACKET_LENGTH_TOO_LONG'; + expectedErrorReason = 'packet length too long'; + } + + assert.strictEqual(err.code, expectedErrorCode); assert.strictEqual(err.library, 'SSL routines'); if (!common.hasOpenSSL3) assert.strictEqual(err.function, 'ssl3_get_record'); - assert.strictEqual(err.reason, 'wrong version number'); + assert.strictEqual(err.reason, expectedErrorReason); errorReceived = true; if (canCloseServer()) server.close(); @@ -87,10 +94,16 @@ function sendBADTLSRecord() { }); })); client.on('error', common.mustCall((err) => { - assert.strictEqual(err.code, 'ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION'); + let expectedErrorCode = 'ERR_SSL_TLSV1_ALERT_PROTOCOL_VERSION'; + let expectedErrorReason = 'tlsv1 alert protocol version'; + if (common.hasOpenSSL(3, 2)) { + expectedErrorCode = 'ERR_SSL_TLSV1_ALERT_RECORD_OVERFLOW'; + expectedErrorReason = 'tlsv1 alert record overflow'; + } + assert.strictEqual(err.code, expectedErrorCode); assert.strictEqual(err.library, 'SSL routines'); if (!common.hasOpenSSL3) assert.strictEqual(err.function, 'ssl3_read_bytes'); - assert.strictEqual(err.reason, 'tlsv1 alert protocol version'); + assert.strictEqual(err.reason, expectedErrorReason); })); } From b097d85dfe13ebb1e4e3144c47dbdaa19d205cfa Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Sun, 15 Sep 2024 12:40:05 -0400 Subject: [PATCH 16/76] test: adjust test-tls-junk-server for OpenSSL32 Refs: #53382 OpenSSL32 returns different error text. Looking through the test it seems like the expected error text has been adjusted for different OpenSSL versions in the past and what the test is testing is not related to the error being returned. Update test to allow for error returned by OpenSSL32 Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54926 Refs: https://github.com/nodejs/node/issues/53382 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- test/parallel/test-tls-junk-server.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/parallel/test-tls-junk-server.js b/test/parallel/test-tls-junk-server.js index 273fe9def4ecb4..2226ac93d283af 100644 --- a/test/parallel/test-tls-junk-server.js +++ b/test/parallel/test-tls-junk-server.js @@ -20,8 +20,12 @@ server.listen(0, function() { const req = https.request({ port: this.address().port }); req.end(); + let expectedErrorMessage = new RegExp('wrong version number'); + if (common.hasOpenSSL(3, 2)) { + expectedErrorMessage = new RegExp('packet length too long'); + } req.once('error', common.mustCall(function(err) { - assert(/wrong version number/.test(err.message)); + assert(expectedErrorMessage.test(err.message)); server.close(); })); }); From d2442044dbdb853f1e8c8b66eaea09f1c77aaeac Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Mon, 8 Apr 2024 08:18:43 +0200 Subject: [PATCH 17/76] crypto: reject Ed25519/Ed448 in Sign/Verify prototypes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes: #52097 PR-URL: https://github.com/nodejs/node/pull/52340 Fixes: https://github.com/nodejs/node/issues/52097 Reviewed-By: Tobias Nießen Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca --- src/crypto/crypto_sig.cc | 10 ++++++++++ test/parallel/test-crypto-sign-verify.js | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/crypto/crypto_sig.cc b/src/crypto/crypto_sig.cc index 64e788dcecaca1..a0ed640acaaa89 100644 --- a/src/crypto/crypto_sig.cc +++ b/src/crypto/crypto_sig.cc @@ -420,6 +420,11 @@ void Sign::SignFinal(const FunctionCallbackInfo& args) { if (!key) return; + if (IsOneShot(key)) { + THROW_ERR_CRYPTO_UNSUPPORTED_OPERATION(env); + return; + } + int padding = GetDefaultSignPadding(key); if (!args[offset]->IsUndefined()) { CHECK(args[offset]->IsInt32()); @@ -547,6 +552,11 @@ void Verify::VerifyFinal(const FunctionCallbackInfo& args) { if (!pkey) return; + if (IsOneShot(pkey)) { + THROW_ERR_CRYPTO_UNSUPPORTED_OPERATION(env); + return; + } + ArrayBufferOrViewContents hbuf(args[offset]); if (UNLIKELY(!hbuf.CheckSizeInt32())) return THROW_ERR_OUT_OF_RANGE(env, "buffer is too big"); diff --git a/test/parallel/test-crypto-sign-verify.js b/test/parallel/test-crypto-sign-verify.js index 74c0ff53eb18b7..81adde1ba771c8 100644 --- a/test/parallel/test-crypto-sign-verify.js +++ b/test/parallel/test-crypto-sign-verify.js @@ -774,3 +774,23 @@ assert.throws( }, { code: 'ERR_INVALID_ARG_TYPE', message: /The "key\.key" property must be of type object/ }); } } + +{ + // Ed25519 and Ed448 must use the one-shot methods + const keys = [{ privateKey: fixtures.readKey('ed25519_private.pem', 'ascii'), + publicKey: fixtures.readKey('ed25519_public.pem', 'ascii') }, + { privateKey: fixtures.readKey('ed448_private.pem', 'ascii'), + publicKey: fixtures.readKey('ed448_public.pem', 'ascii') }]; + + for (const { publicKey, privateKey } of keys) { + assert.throws(() => { + crypto.createSign('SHA256').update('Test123').sign(privateKey); + }, { code: 'ERR_CRYPTO_UNSUPPORTED_OPERATION', message: 'Unsupported crypto operation' }); + assert.throws(() => { + crypto.createVerify('SHA256').update('Test123').verify(privateKey, 'sig'); + }, { code: 'ERR_CRYPTO_UNSUPPORTED_OPERATION', message: 'Unsupported crypto operation' }); + assert.throws(() => { + crypto.createVerify('SHA256').update('Test123').verify(publicKey, 'sig'); + }, { code: 'ERR_CRYPTO_UNSUPPORTED_OPERATION', message: 'Unsupported crypto operation' }); + } +} From 6e7274fa53fe96b7582a8a8aabfbaf2792021355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 6 Sep 2024 18:07:16 -0400 Subject: [PATCH 18/76] crypto: reject dh,x25519,x448 in {Sign,Verify}Final MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: https://github.com/nodejs/node/issues/53742 PR-URL: https://github.com/nodejs/node/pull/53774 Reviewed-By: James M Snell Reviewed-By: Tobias Nießen --- src/crypto/crypto_sig.cc | 33 ++++++++++++++---------- test/fixtures/keys/Makefile | 8 ++++++ test/fixtures/keys/dh_private.pem | 9 +++++++ test/fixtures/keys/dh_public.pem | 14 ++++++++++ test/parallel/test-crypto-sign-verify.js | 18 +++++++++++++ 5 files changed, 69 insertions(+), 13 deletions(-) create mode 100644 test/fixtures/keys/dh_private.pem create mode 100644 test/fixtures/keys/dh_public.pem diff --git a/src/crypto/crypto_sig.cc b/src/crypto/crypto_sig.cc index a0ed640acaaa89..e6731638aa2c87 100644 --- a/src/crypto/crypto_sig.cc +++ b/src/crypto/crypto_sig.cc @@ -92,12 +92,15 @@ std::unique_ptr Node_SignFinal(Environment* env, sig = ArrayBuffer::NewBackingStore(env->isolate(), sig_len); } EVPKeyCtxPointer pkctx(EVP_PKEY_CTX_new(pkey.get(), nullptr)); - if (pkctx && - EVP_PKEY_sign_init(pkctx.get()) && + if (pkctx && EVP_PKEY_sign_init(pkctx.get()) > 0 && ApplyRSAOptions(pkey, pkctx.get(), padding, pss_salt_len) && - EVP_PKEY_CTX_set_signature_md(pkctx.get(), EVP_MD_CTX_md(mdctx.get())) && - EVP_PKEY_sign(pkctx.get(), static_cast(sig->Data()), - &sig_len, m, m_len)) { + EVP_PKEY_CTX_set_signature_md(pkctx.get(), EVP_MD_CTX_md(mdctx.get())) > + 0 && + EVP_PKEY_sign(pkctx.get(), + static_cast(sig->Data()), + &sig_len, + m, + m_len) > 0) { CHECK_LE(sig_len, sig->ByteLength()); if (sig_len == 0) sig = ArrayBuffer::NewBackingStore(env->isolate(), 0); @@ -526,14 +529,18 @@ SignBase::Error Verify::VerifyFinal(const ManagedEVPPKey& pkey, return kSignPublicKey; EVPKeyCtxPointer pkctx(EVP_PKEY_CTX_new(pkey.get(), nullptr)); - if (pkctx && - EVP_PKEY_verify_init(pkctx.get()) > 0 && - ApplyRSAOptions(pkey, pkctx.get(), padding, saltlen) && - EVP_PKEY_CTX_set_signature_md(pkctx.get(), - EVP_MD_CTX_md(mdctx.get())) > 0) { - const unsigned char* s = sig.data(); - const int r = EVP_PKEY_verify(pkctx.get(), s, sig.size(), m, m_len); - *verify_result = r == 1; + if (pkctx) { + const int init_ret = EVP_PKEY_verify_init(pkctx.get()); + if (init_ret == -2) { + return kSignPublicKey; + } + if (init_ret > 0 && ApplyRSAOptions(pkey, pkctx.get(), padding, saltlen) && + EVP_PKEY_CTX_set_signature_md(pkctx.get(), EVP_MD_CTX_md(mdctx.get())) > + 0) { + const unsigned char* s = sig.data(); + const int r = EVP_PKEY_verify(pkctx.get(), s, sig.size(), m, m_len); + *verify_result = r == 1; + } } return kSignOk; diff --git a/test/fixtures/keys/Makefile b/test/fixtures/keys/Makefile index f562df27047526..3339f4b912dc92 100644 --- a/test/fixtures/keys/Makefile +++ b/test/fixtures/keys/Makefile @@ -26,6 +26,8 @@ all: \ dh2048.pem \ dh3072.pem \ dherror.pem \ + dh_private.pem \ + dh_public.pem \ dsa_params.pem \ dsa_private.pem \ dsa_private_encrypted.pem \ @@ -601,6 +603,12 @@ dh3072.pem: dherror.pem: dh1024.pem sed 's/^[^-].*/AAAAAAAAAA/g' dh1024.pem > dherror.pem +dh_private.pem: + openssl genpkey -algorithm dh -out dh_private.pem -pkeyopt dh_param:ffdhe2048 + +dh_public.pem: dh_private.pem + openssl pkey -in dh_private.pem -pubout -out dh_public.pem + dsa_params.pem: openssl dsaparam -out dsa_params.pem 2048 diff --git a/test/fixtures/keys/dh_private.pem b/test/fixtures/keys/dh_private.pem new file mode 100644 index 00000000000000..25c4edc5ea5a3b --- /dev/null +++ b/test/fixtures/keys/dh_private.pem @@ -0,0 +1,9 @@ +-----BEGIN PRIVATE KEY----- +MIIBPgIBADCCARcGCSqGSIb3DQEDATCCAQgCggEBAP//////////rfhUWKK7Spqv +3FYgJz088di5xYPOLTaVqeE2QRRkM/vMk53OJJs++X0v42NjDHXY9oGyAq7EYXrT +3x7V1f1lYSQz9R9fBm7QhWNlVT3tGvO1VxNef1fJNZhPDHDg5ot34qaJ2vPv6HId +8VihNq3nNTCsyk9IOnl6vAqxgrMk+2HRCKlLssjj+7lq2rdg1/RoHU9Co945TfSu +Vu3nY3K7GQsHp8juCm1wngL84c334uzANATNKDQvYZFy/pzphYP/jk8SMu7ygYPD +/jsbTG+tczu1/LwuwiAFxY7xg30Wg7LG80omwbLv+ohrQjhhKFyX//////////8C +AQIEHgIcKNGyhQRxIhVXoyktdymwbN6MgXv85vPax+8eqQ== +-----END PRIVATE KEY----- diff --git a/test/fixtures/keys/dh_public.pem b/test/fixtures/keys/dh_public.pem new file mode 100644 index 00000000000000..b32815e88acc8c --- /dev/null +++ b/test/fixtures/keys/dh_public.pem @@ -0,0 +1,14 @@ +-----BEGIN PUBLIC KEY----- +MIICJTCCARcGCSqGSIb3DQEDATCCAQgCggEBAP//////////rfhUWKK7Spqv3FYg +Jz088di5xYPOLTaVqeE2QRRkM/vMk53OJJs++X0v42NjDHXY9oGyAq7EYXrT3x7V +1f1lYSQz9R9fBm7QhWNlVT3tGvO1VxNef1fJNZhPDHDg5ot34qaJ2vPv6HId8Vih +Nq3nNTCsyk9IOnl6vAqxgrMk+2HRCKlLssjj+7lq2rdg1/RoHU9Co945TfSuVu3n +Y3K7GQsHp8juCm1wngL84c334uzANATNKDQvYZFy/pzphYP/jk8SMu7ygYPD/jsb +TG+tczu1/LwuwiAFxY7xg30Wg7LG80omwbLv+ohrQjhhKFyX//////////8CAQID +ggEGAAKCAQEA2whDVdYtNbr/isSFdw7rOSdbmcWrxiX6ppqDZ6yp8XjUj3/CEf/P +60X7HndX+nXD7YaPtVZxktkIpArI7C+AH7fZxBduuv2eLnvYwK82jFHKe7zvfdMr +26akMCV0kBA3ktgcftHlqYsIj52BaJlG37FRha3SDOL2yJOij3hNQhHCXTWLg7tP +GtXmD202OoZ6Ll+LxBzBCFnxVauiKnzBGeawy4gDycUEHmq5oDRR68I2gmxmsLg5 +MQVAP5ljp+FEu4+TZm6hR4wQ5PRjCQ+teq+VqMro7EbbvZpn+X9kAgKSl2WDu0fT +FbUnBn3HPBmUa/Fv/ooXrlckTUDjLkbWZQ== +-----END PUBLIC KEY----- diff --git a/test/parallel/test-crypto-sign-verify.js b/test/parallel/test-crypto-sign-verify.js index 81adde1ba771c8..1d742c6801c233 100644 --- a/test/parallel/test-crypto-sign-verify.js +++ b/test/parallel/test-crypto-sign-verify.js @@ -794,3 +794,21 @@ assert.throws( }, { code: 'ERR_CRYPTO_UNSUPPORTED_OPERATION', message: 'Unsupported crypto operation' }); } } + +{ + // Dh, x25519 and x448 should not be used for signing/verifying + // https://github.com/nodejs/node/issues/53742 + for (const algo of ['dh', 'x25519', 'x448']) { + const privateKey = fixtures.readKey(`${algo}_private.pem`, 'ascii'); + const publicKey = fixtures.readKey(`${algo}_public.pem`, 'ascii'); + assert.throws(() => { + crypto.createSign('SHA256').update('Test123').sign(privateKey); + }, { code: 'ERR_OSSL_EVP_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE', message: /operation not supported for this keytype/ }); + assert.throws(() => { + crypto.createVerify('SHA256').update('Test123').verify(privateKey, 'sig'); + }, { code: 'ERR_OSSL_EVP_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE', message: /operation not supported for this keytype/ }); + assert.throws(() => { + crypto.createVerify('SHA256').update('Test123').verify(publicKey, 'sig'); + }, { code: 'ERR_OSSL_EVP_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE', message: /operation not supported for this keytype/ }); + } +} From 75ff0cdf6657131d314946b9931a3a80192cd943 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 18 Sep 2024 12:36:08 -0400 Subject: [PATCH 19/76] test: update test to support OpenSSL32 Refs: https://github.com/nodejs/node/issues/53382 This test fails on OpenSSL32 because it complains the key being used is too short. It seems to have been missed when the test suite was udpated to have a Makefile to generate key material as the keys are hard coded in the test as opposed to being read in from the fixtures/key directory. Update the test to use keys/certs from the fixtures directory and to remove newlines at the end of the key and cert to retain the inteded test. Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54968 Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau --- test/parallel/test-tls-cert-regression.js | 50 ++++++----------------- 1 file changed, 13 insertions(+), 37 deletions(-) diff --git a/test/parallel/test-tls-cert-regression.js b/test/parallel/test-tls-cert-regression.js index 478402772eb0df..c58998e594ba58 100644 --- a/test/parallel/test-tls-cert-regression.js +++ b/test/parallel/test-tls-cert-regression.js @@ -21,50 +21,26 @@ 'use strict'; const common = require('../common'); +const fixtures = require('../common/fixtures'); if (!common.hasCrypto) common.skip('missing crypto'); const tls = require('tls'); -const cert = -`-----BEGIN CERTIFICATE----- -MIIDNDCCAp2gAwIBAgIJAJvXLQpGPpm7MA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNV -BAYTAkdCMRAwDgYDVQQIEwdHd3luZWRkMREwDwYDVQQHEwhXYXVuZmF3cjEUMBIG -A1UEChMLQWNrbmFjayBMdGQxEjAQBgNVBAsTCVRlc3QgQ2VydDESMBAGA1UEAxMJ -bG9jYWxob3N0MB4XDTA5MTEwMjE5MzMwNVoXDTEwMTEwMjE5MzMwNVowcDELMAkG -A1UEBhMCR0IxEDAOBgNVBAgTB0d3eW5lZGQxETAPBgNVBAcTCFdhdW5mYXdyMRQw -EgYDVQQKEwtBY2tuYWNrIEx0ZDESMBAGA1UECxMJVGVzdCBDZXJ0MRIwEAYDVQQD -Ewlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANdym7nGe2yw -6LlJfJrQtC5TmKOGrSXiyolYCbGOy4xZI4KD31d3097jhlQFJyF+10gwkE62DuJe -fLvBZDUsvLe1R8bzlVhZnBVn+3QJyUIWQAL+DsRj8P3KoD7k363QN5dIaA1GOAg2 -vZcPy1HCUsvOgvDXGRUCZqNLAyt+h/cpAgMBAAGjgdUwgdIwHQYDVR0OBBYEFK4s -VBV4shKUj3UX/fvSJnFaaPBjMIGiBgNVHSMEgZowgZeAFK4sVBV4shKUj3UX/fvS -JnFaaPBjoXSkcjBwMQswCQYDVQQGEwJHQjEQMA4GA1UECBMHR3d5bmVkZDERMA8G -A1UEBxMIV2F1bmZhd3IxFDASBgNVBAoTC0Fja25hY2sgTHRkMRIwEAYDVQQLEwlU -ZXN0IENlcnQxEjAQBgNVBAMTCWxvY2FsaG9zdIIJAJvXLQpGPpm7MAwGA1UdEwQF -MAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAFxR7BA1mUlsYqPiogtxSIfLzHWh+s0bJ -SBuhNrHes4U8QxS8+x/KWjd/81gzsf9J1C2VzTlFaydAgigz3SkQYgs+TMnFkT2o -9jqoJrcdf4WpZ2DQXUALaZgwNzPumMUSx8Ac5gO+BY/RHyP6fCodYvdNwyKslnI3 -US7eCSHZsVo= ------END CERTIFICATE-----`; +let key = fixtures.readKey('rsa_private.pem'); +let cert = fixtures.readKey('rsa_cert.crt'); -const key = -`-----BEGIN RSA PRIVATE KEY----- -MIICXgIBAAKBgQDXcpu5xntssOi5SXya0LQuU5ijhq0l4sqJWAmxjsuMWSOCg99X -d9Pe44ZUBSchftdIMJBOtg7iXny7wWQ1LLy3tUfG85VYWZwVZ/t0CclCFkAC/g7E -Y/D9yqA+5N+t0DeXSGgNRjgINr2XD8tRwlLLzoLw1xkVAmajSwMrfof3KQIDAQAB -AoGBAIBHR/tT93ce2mJAJAXV0AJpWc+7x2pwX2FpXtQujnlxNZhnRlrBCRCD7h4m -t0bVS/86kyGaesBDvAbavfx/N5keYzzmmSp5Ht8IPqKPydGWdigk4x90yWvktai7 -dWuRKF94FXr0GUuBONb/dfHdp4KBtzN7oIF9WydYGGXA9ZmBAkEA8/k01bfwQZIu -AgcdNEM94Zcug1gSspXtUu8exNQX4+PNVbadghZb1+OnUO4d3gvWfqvAnaXD3KV6 -N4OtUhQQ0QJBAOIRbKMfaymQ9yE3CQQxYfKmEhHXWARXVwuYqIFqjmhSjSXx0l/P -7mSHz1I9uDvxkJev8sQgu1TKIyTOdqPH1tkCQQDPa6H1yYoj1Un0Q2Qa2Mg1kTjk -Re6vkjPQ/KcmJEOjZjtekgFbZfLzmwLXFXqjG2FjFFaQMSxR3QYJSJQEYjbhAkEA -sy7OZcjcXnjZeEkv61Pc57/7qIp/6Aj2JGnefZ1gvI1Z9Q5kCa88rA/9Iplq8pA4 -ZBKAoDW1ZbJGAsFmxc/6mQJAdPilhci0qFN86IGmf+ZBnwsDflIwHKDaVofti4wQ -sPWhSOb9VQjMXekI4Y2l8fqAVTS2Fn6+8jkVKxXBywSVCw== ------END RSA PRIVATE KEY-----`; +// This test validates that we accept certificates and keys which +// do not end with a newline. If a newline exists at the end +// of the key or cert being used remove it +let i = 0; +while (key[key.length - 1 - i] === 0x0a) i++; +if (i !== 0) key = key.slice(0, key.length - i); + +i = 0; +while (cert[cert.length - 1 - i] === 0x0a) i++; +if (i !== 0) cert = cert.slice(0, cert.length - i); function test(cert, key, cb) { const server = tls.createServer({ From 37a2f7eaa4a2151fa4333c98eefc05c408f5908e Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 18 Sep 2024 15:26:45 -0400 Subject: [PATCH 20/76] test: adjust key sizes to support OpenSSL32 Refs: https://github.com/nodejs/node/issues/53382 This test fails on OpenSSL32 because it complains the key being used is too short. Adjust the key sizes so that they will pass on OpenSSL32 in addition to other OpenSSL3 versions. Since the keys are not public key related I don't think the increase in key size will be too bad in terms of performance so I've just increased versus guarding for OpenSSL32 Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54972 Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca --- test/parallel/test-tls-getcipher.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test/parallel/test-tls-getcipher.js b/test/parallel/test-tls-getcipher.js index 2a234d59016c1c..4d5042d6e6beab 100644 --- a/test/parallel/test-tls-getcipher.js +++ b/test/parallel/test-tls-getcipher.js @@ -47,13 +47,13 @@ server.listen(0, '127.0.0.1', common.mustCall(function() { tls.connect({ host: '127.0.0.1', port: this.address().port, - ciphers: 'AES128-SHA256', + ciphers: 'AES256-SHA256', rejectUnauthorized: false, maxVersion: 'TLSv1.2', }, common.mustCall(function() { const cipher = this.getCipher(); - assert.strictEqual(cipher.name, 'AES128-SHA256'); - assert.strictEqual(cipher.standardName, 'TLS_RSA_WITH_AES_128_CBC_SHA256'); + assert.strictEqual(cipher.name, 'AES256-SHA256'); + assert.strictEqual(cipher.standardName, 'TLS_RSA_WITH_AES_256_CBC_SHA256'); assert.strictEqual(cipher.version, 'TLSv1.2'); this.end(); })); @@ -62,14 +62,14 @@ server.listen(0, '127.0.0.1', common.mustCall(function() { tls.connect({ host: '127.0.0.1', port: this.address().port, - ciphers: 'ECDHE-RSA-AES128-GCM-SHA256', + ciphers: 'ECDHE-RSA-AES256-GCM-SHA384', rejectUnauthorized: false, maxVersion: 'TLSv1.2', }, common.mustCall(function() { const cipher = this.getCipher(); - assert.strictEqual(cipher.name, 'ECDHE-RSA-AES128-GCM-SHA256'); + assert.strictEqual(cipher.name, 'ECDHE-RSA-AES256-GCM-SHA384'); assert.strictEqual(cipher.standardName, - 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'); + 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'); assert.strictEqual(cipher.version, 'TLSv1.2'); this.end(); })); @@ -78,19 +78,19 @@ server.listen(0, '127.0.0.1', common.mustCall(function() { tls.createServer({ key: fixtures.readKey('agent2-key.pem'), cert: fixtures.readKey('agent2-cert.pem'), - ciphers: 'TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_CCM_8_SHA256', + ciphers: 'TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384', maxVersion: 'TLSv1.3', }, common.mustCall(function() { this.close(); })).listen(0, common.mustCall(function() { const client = tls.connect({ port: this.address().port, - ciphers: 'TLS_AES_128_CCM_8_SHA256', + ciphers: 'TLS_AES_256_GCM_SHA384', maxVersion: 'TLSv1.3', rejectUnauthorized: false }, common.mustCall(() => { const cipher = client.getCipher(); - assert.strictEqual(cipher.name, 'TLS_AES_128_CCM_8_SHA256'); + assert.strictEqual(cipher.name, 'TLS_AES_256_GCM_SHA384'); assert.strictEqual(cipher.standardName, cipher.name); assert.strictEqual(cipher.version, 'TLSv1.3'); client.end(); From 341496a5a2bb02fe3357c40d9c9e159f643205b6 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 18 Sep 2024 20:35:20 +0000 Subject: [PATCH 21/76] test: add asserts to validate test assumptions Refs: https://github.com/nodejs/node/pull/54968 Refs: https://github.com/nodejs/node/issues/53382 Add additional asserts as suggestd by Richard in: https://github.com/nodejs/node/pull/54968 Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/54997 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- test/parallel/test-tls-cert-regression.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/parallel/test-tls-cert-regression.js b/test/parallel/test-tls-cert-regression.js index c58998e594ba58..5dab23401302ed 100644 --- a/test/parallel/test-tls-cert-regression.js +++ b/test/parallel/test-tls-cert-regression.js @@ -22,6 +22,7 @@ 'use strict'; const common = require('../common'); const fixtures = require('../common/fixtures'); +const assert = require('assert'); if (!common.hasCrypto) common.skip('missing crypto'); @@ -43,6 +44,8 @@ while (cert[cert.length - 1 - i] === 0x0a) i++; if (i !== 0) cert = cert.slice(0, cert.length - i); function test(cert, key, cb) { + assert.notStrictEqual(cert.at(-1), 0x0a); + assert.notStrictEqual(key.at(-1), 0x0a); const server = tls.createServer({ cert, key From 1a4d49793612203bb0cfcdedefeedce2f0f8c3eb Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Sat, 21 Sep 2024 15:10:51 -0400 Subject: [PATCH 22/76] test: adjust tls-set-ciphers for OpenSSL32 Refs: https://github.com/nodejs/node/issues/53382 The test failed as it was using AES128 which is not supported in OpenSSL32 due to default security level and because some error messages have changed. Adjusted to use AES256 where it made sense and not run tests on OpenSSL32 where test was specific to AES128. Adjust to use the expected error messages based on version. Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/55016 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca Reviewed-By: Benjamin Gruenbaum Reviewed-By: James M Snell --- test/parallel/test-tls-set-ciphers.js | 29 ++++++++++++++++++--------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/test/parallel/test-tls-set-ciphers.js b/test/parallel/test-tls-set-ciphers.js index b66c419cf5f4d1..268a2af6344b59 100644 --- a/test/parallel/test-tls-set-ciphers.js +++ b/test/parallel/test-tls-set-ciphers.js @@ -79,6 +79,11 @@ function test(cciphers, sciphers, cipher, cerr, serr, options) { const U = undefined; +let expectedTLSAlertError = 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE'; +if (common.hasOpenSSL(3, 2)) { + expectedTLSAlertError = 'ERR_SSL_SSL/TLS_ALERT_HANDSHAKE_FAILURE'; +} + // Have shared ciphers. test(U, 'AES256-SHA', 'AES256-SHA'); test('AES256-SHA', U, 'AES256-SHA'); @@ -88,13 +93,13 @@ test('TLS_AES_256_GCM_SHA384', U, 'TLS_AES_256_GCM_SHA384'); // Do not have shared ciphers. test('TLS_AES_256_GCM_SHA384', 'TLS_CHACHA20_POLY1305_SHA256', - U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER'); + U, expectedTLSAlertError, 'ERR_SSL_NO_SHARED_CIPHER'); -test('AES128-SHA', 'AES256-SHA', U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', +test('AES256-SHA', 'AES256-SHA256', U, expectedTLSAlertError, 'ERR_SSL_NO_SHARED_CIPHER'); -test('AES128-SHA:TLS_AES_256_GCM_SHA384', - 'TLS_CHACHA20_POLY1305_SHA256:AES256-SHA', - U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER'); +test('AES256-SHA:TLS_AES_256_GCM_SHA384', + 'TLS_CHACHA20_POLY1305_SHA256:AES256-SHA256', + U, expectedTLSAlertError, 'ERR_SSL_NO_SHARED_CIPHER'); // Cipher order ignored, TLS1.3 chosen before TLS1.2. test('AES256-SHA:TLS_AES_256_GCM_SHA384', U, 'TLS_AES_256_GCM_SHA384'); @@ -109,11 +114,15 @@ test(U, 'AES256-SHA', 'TLS_AES_256_GCM_SHA384', U, U, { maxVersion: 'TLSv1.3' }) // TLS_AES_128_CCM_8_SHA256 & TLS_AES_128_CCM_SHA256 are not enabled by // default, but work. -test('TLS_AES_128_CCM_8_SHA256', U, - U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER'); - -test('TLS_AES_128_CCM_8_SHA256', 'TLS_AES_128_CCM_8_SHA256', - 'TLS_AES_128_CCM_8_SHA256'); +// However, for OpenSSL32 AES_128 is not enabled due to the +// default security level +if (!common.hasOpenSSL(3, 2)) { + test('TLS_AES_128_CCM_8_SHA256', U, + U, 'ERR_SSL_SSLV3_ALERT_HANDSHAKE_FAILURE', 'ERR_SSL_NO_SHARED_CIPHER'); + + test('TLS_AES_128_CCM_8_SHA256', 'TLS_AES_128_CCM_8_SHA256', + 'TLS_AES_128_CCM_8_SHA256'); +} // Invalid cipher values test(9, 'AES256-SHA', U, 'ERR_INVALID_ARG_TYPE', U); From 9824827937ee6d846c3dc79616feb2235b252b6b Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Sun, 22 Sep 2024 10:01:20 -0400 Subject: [PATCH 23/76] test: update tls test to support OpenSSL32 Refs: https://github.com/nodejs/node/issues/53382 OpenSSL32 does not support AES128 and DH 1024 to update test to use newer algorithms. Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/55030 Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau Reviewed-By: James M Snell --- .../test-tls-client-getephemeralkeyinfo.js | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/test/parallel/test-tls-client-getephemeralkeyinfo.js b/test/parallel/test-tls-client-getephemeralkeyinfo.js index 82ed1e27f49e6c..0bacd8702fc650 100644 --- a/test/parallel/test-tls-client-getephemeralkeyinfo.js +++ b/test/parallel/test-tls-client-getephemeralkeyinfo.js @@ -67,11 +67,15 @@ function test(size, type, name, cipher) { })); } -test(undefined, undefined, undefined, 'AES128-SHA256'); -test('auto', 'DH', undefined, 'DHE-RSA-AES128-GCM-SHA256'); -test(1024, 'DH', undefined, 'DHE-RSA-AES128-GCM-SHA256'); -test(2048, 'DH', undefined, 'DHE-RSA-AES128-GCM-SHA256'); -test(256, 'ECDH', 'prime256v1', 'ECDHE-RSA-AES128-GCM-SHA256'); -test(521, 'ECDH', 'secp521r1', 'ECDHE-RSA-AES128-GCM-SHA256'); -test(253, 'ECDH', 'X25519', 'ECDHE-RSA-AES128-GCM-SHA256'); -test(448, 'ECDH', 'X448', 'ECDHE-RSA-AES128-GCM-SHA256'); +test(undefined, undefined, undefined, 'AES256-SHA256'); +test('auto', 'DH', undefined, 'DHE-RSA-AES256-GCM-SHA384'); +if (!common.hasOpenSSL(3, 2)) { + test(1024, 'DH', undefined, 'DHE-RSA-AES256-GCM-SHA384'); +} else { + test(3072, 'DH', undefined, 'DHE-RSA-AES256-GCM-SHA384'); +} +test(2048, 'DH', undefined, 'DHE-RSA-AES256-GCM-SHA384'); +test(256, 'ECDH', 'prime256v1', 'ECDHE-RSA-AES256-GCM-SHA384'); +test(521, 'ECDH', 'secp521r1', 'ECDHE-RSA-AES256-GCM-SHA384'); +test(253, 'ECDH', 'X25519', 'ECDHE-RSA-AES256-GCM-SHA384'); +test(448, 'ECDH', 'X448', 'ECDHE-RSA-AES256-GCM-SHA384'); From c8520ff7d2268b99d7400bc1358a56f10562f879 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Wed, 26 Jun 2024 20:45:54 +0100 Subject: [PATCH 24/76] test: fix OpenSSL version checks As per the original pull request that introduced the OpenSSL version check in `parallel/test-crypto-dh`: ``` Error message change is test-only and uses the right error message for versions >=3.0.12 in 3.0.x and >= 3.1.4 in 3.1.x series. ``` Fix the check so that: - The older message is expected for OpenSSL 3.1.0. - The newer message is expected for OpenSSL from 3.1.4 (e.g. 3.2.x). Refs: https://github.com/nodejs/node/pull/50395 PR-URL: https://github.com/nodejs/node/pull/53503 Refs: https://github.com/nodejs/node/issues/53382 Reviewed-By: Luigi Pinca --- test/parallel/test-crypto-dh.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/parallel/test-crypto-dh.js b/test/parallel/test-crypto-dh.js index fb580e1b315445..8ae0a002fec094 100644 --- a/test/parallel/test-crypto-dh.js +++ b/test/parallel/test-crypto-dh.js @@ -86,8 +86,9 @@ const crypto = require('crypto'); } { - const hasOpenSSL3WithNewErrorMessage = (common.hasOpenSSL(3, 0, 12) && !common.hasOpenSSL(3, 1, 1)) || - (common.hasOpenSSL(3, 1, 4) && !common.hasOpenSSL(3, 2, 1)); + // Error message was changed in OpenSSL 3.0.x from 3.0.12, and 3.1.x from 3.1.4. + const hasOpenSSL3WithNewErrorMessage = (common.hasOpenSSL(3, 0, 12) && !common.hasOpenSSL(3, 1, 0)) || + (common.hasOpenSSL(3, 1, 4)); assert.throws(() => { dh3.computeSecret(''); }, { message: common.hasOpenSSL3 && !hasOpenSSL3WithNewErrorMessage ? From ac3a39051c77c150ca894555387f41b3d1c60d20 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 25 Sep 2024 17:28:05 -0400 Subject: [PATCH 25/76] test: fix test-tls-junk-closes-server Refs: https://github.com/nodejs/node/issues/53382 TLS spec seems to indicate there should should be a response sent when TLS handshake fails. See https://datatracker.ietf.org/doc/html/rfc8446#page-85 When compiled with OpenSSL32 we see the the following response '15 03 03 00 02 02 16' which decodes as a fatal (0x02) TLS error alert number 22 (0x16). which corresponds to TLS1_AD_RECORD_OVERFLOW which matches the error we see if NODE_DEBUG is turned on once you get through the define aliases. If there is a response from the server the test used to hang because the end event will not be emitted until after the response is consumed. This PR fixes the test so it consumes the response. Some earlier OpenSSL versions did not seem to send a response but the error handling seems to have been re-written/improved in OpenSSL32. Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/55089 Refs: https://github.com/nodejs/node/issues/52482 Reviewed-By: Richard Lau Reviewed-By: Antoine du Hamel Reviewed-By: Jithil P Ponnan Reviewed-By: Luigi Pinca --- test/parallel/test-tls-junk-closes-server.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test/parallel/test-tls-junk-closes-server.js b/test/parallel/test-tls-junk-closes-server.js index 06fa57267a9104..08c2d39c6844f6 100644 --- a/test/parallel/test-tls-junk-closes-server.js +++ b/test/parallel/test-tls-junk-closes-server.js @@ -39,6 +39,22 @@ const server = tls.createServer(options, common.mustNotCall()); server.listen(0, common.mustCall(function() { const c = net.createConnection(this.address().port); + c.on('data', function() { + // We must consume all data sent by the server. Otherwise the + // end event will not be sent and the test will hang. + // For example, when compiled with OpenSSL32 we see the + // following response '15 03 03 00 02 02 16' which + // decodes as a fatal (0x02) TLS error alert number 22 (0x16), + // which corresponds to TLS1_AD_RECORD_OVERFLOW which matches + // the error we see if NODE_DEBUG is turned on. + // Some earlier OpenSSL versions did not seem to send a response + // but the TLS spec seems to indicate there should be one + // https://datatracker.ietf.org/doc/html/rfc8446#page-85 + // and error handling seems to have been re-written/improved + // in OpenSSL32. Consuming the data allows the test to pass + // either way. + }); + c.on('connect', common.mustCall(function() { c.write('blah\nblah\nblah\n'); })); From d814fe935c362b751439ad02e8bdb80aa913b1a9 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Wed, 31 Jul 2024 16:52:39 +0200 Subject: [PATCH 26/76] src: account for OpenSSL unexpected version PR-URL: https://github.com/nodejs/node/pull/54038 Reviewed-By: Richard Lau Reviewed-By: Joyee Cheung Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Franziska Hinkelmann Reviewed-By: Yagiz Nizipli Reviewed-By: James M Snell Reviewed-By: Luigi Pinca --- src/node_metadata.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/node_metadata.cc b/src/node_metadata.cc index 361b3596b4a65c..61bc8b204c92c7 100644 --- a/src/node_metadata.cc +++ b/src/node_metadata.cc @@ -43,14 +43,23 @@ Metadata metadata; #if HAVE_OPENSSL static constexpr size_t search(const char* s, char c, size_t n = 0) { - return *s == c ? n : search(s + 1, c, n + 1); + return *s == '\0' ? n : (*s == c ? n : search(s + 1, c, n + 1)); } static inline std::string GetOpenSSLVersion() { // sample openssl version string format // for reference: "OpenSSL 1.1.0i 14 Aug 2018" const char* version = OpenSSL_version(OPENSSL_VERSION); - const size_t start = search(version, ' ') + 1; + const size_t first_space = search(version, ' '); + + // When Node.js is linked to an alternative library implementing the + // OpenSSL API e.g. BoringSSL, the version string may not match the + // expected pattern. In this case just return “0.0.0” as placeholder. + if (version[first_space] == '\0') { + return "0.0.0"; + } + + const size_t start = first_space + 1; const size_t len = search(&version[start], ' '); return std::string(version, start, len); } From a4f6f0918fe53b284647c50e677095c394b6ad3a Mon Sep 17 00:00:00 2001 From: Aviv Keller <38299977+RedYetiDev@users.noreply.github.com> Date: Thu, 9 May 2024 12:46:50 -0400 Subject: [PATCH 27/76] doc: add names next to release key bash commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/52878 Reviewed-By: Rafael Gonzaga Reviewed-By: Ulises Gascón Reviewed-By: Marco Ippolito Reviewed-By: Luigi Pinca Reviewed-By: Michaël Zasso --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 438d970948e1eb..c160a704193cb4 100644 --- a/README.md +++ b/README.md @@ -751,7 +751,7 @@ Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys): `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` * **Myles Borins** <> `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` -* **RafaelGSS** <> +* **Rafael Gonzaga** <> `890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4` * **Richard Lau** <> `C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C` @@ -764,17 +764,17 @@ To import the full set of trusted release keys (including subkeys possibly used to sign releases): ```bash -gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C -gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 -gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 -gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 -gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F -gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 -gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 -gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 -gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C -gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A -gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 +gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C # Beth Griggs +gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 # Bryan English +gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 # Danielle Adams +gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda +gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito +gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso +gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 # Myles Borins +gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga +gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau +gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno +gpg --keyserver hkps://keys.openpgp.org --recv-keys A363A499291CBBC940DD62E41F10027AF002F8B0 # Ulises Gascón ``` See [Verifying binaries](#verifying-binaries) for how to use these keys to From 1c4decc9989e74882153a1dd82c240e56c76563d Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 10 Oct 2024 14:12:53 +0200 Subject: [PATCH 28/76] doc: add release key for aduh95 PR-URL: https://github.com/nodejs/node/pull/55349 Refs: https://github.com/nodejs/Release/issues/999 Reviewed-By: Marco Ippolito Reviewed-By: Matteo Collina Reviewed-By: Richard Lau --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index c160a704193cb4..d9d87c7c7860f4 100644 --- a/README.md +++ b/README.md @@ -737,6 +737,8 @@ responding to new issues. Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys): +* **Antoine du Hamel** <> + `C0D6248439F1D5604AAFFB4021D900FFDB233756` * **Beth Griggs** <> `4ED778F539E3634C779C87C6D7062848A1AB005C` * **Bryan English** <> @@ -764,6 +766,7 @@ To import the full set of trusted release keys (including subkeys possibly used to sign releases): ```bash +gpg --keyserver hkps://keys.openpgp.org --recv-keys C0D6248439F1D5604AAFFB4021D900FFDB233756 # Antoine du Hamel gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C # Beth Griggs gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 # Bryan English gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 # Danielle Adams From fa72b2c2deafc5575fa4cca28918b8a62b3eb8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 25 Oct 2023 09:10:02 +0200 Subject: [PATCH 29/76] tools: skip ruff on tools/gyp PR-URL: https://github.com/nodejs/node/pull/50380 Reviewed-By: Jiawen Geng Reviewed-By: James M Snell Reviewed-By: Yagiz Nizipli --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index d0c3a056f2e92c..b7ec8b42944028 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,6 +19,7 @@ select = [ ] exclude = [ "deps", + "tools/gyp", "tools/inspector_protocol", "tools/node_modules", ] From 0fb652eba9e9bb421d19e47ecca776183de33bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 25 Oct 2023 08:43:17 +0200 Subject: [PATCH 30/76] tools: update gyp-next to v0.16.1 PR-URL: https://github.com/nodejs/node/pull/50380 Reviewed-By: Jiawen Geng Reviewed-By: James M Snell Reviewed-By: Yagiz Nizipli --- tools/gyp/.flake8 | 4 - tools/gyp/.github/workflows/Python_tests.yml | 27 +- tools/gyp/.github/workflows/node-gyp.yml | 42 +- .../gyp/.github/workflows/nodejs-windows.yml | 11 +- .../gyp/.github/workflows/release-please.yml | 4 +- tools/gyp/AUTHORS | 1 + tools/gyp/CHANGELOG.md | 58 + tools/gyp/README.md | 23 + tools/gyp/pylib/gyp/MSVSNew.py | 26 +- tools/gyp/pylib/gyp/MSVSProject.py | 2 +- tools/gyp/pylib/gyp/MSVSSettings.py | 2 +- tools/gyp/pylib/gyp/__init__.py | 18 +- tools/gyp/pylib/gyp/common.py | 22 +- tools/gyp/pylib/gyp/easy_xml.py | 6 +- tools/gyp/pylib/gyp/easy_xml_test.py | 4 + tools/gyp/pylib/gyp/generator/analyzer.py | 26 +- tools/gyp/pylib/gyp/generator/android.py | 2 +- tools/gyp/pylib/gyp/generator/cmake.py | 9 +- .../gyp/generator/compile_commands_json.py | 9 +- tools/gyp/pylib/gyp/generator/eclipse.py | 7 +- tools/gyp/pylib/gyp/generator/make.py | 62 +- tools/gyp/pylib/gyp/generator/msvs.py | 77 +- tools/gyp/pylib/gyp/generator/ninja.py | 11 +- tools/gyp/pylib/gyp/generator/xcode.py | 7 +- tools/gyp/pylib/gyp/input.py | 78 +- tools/gyp/pylib/gyp/msvs_emulation.py | 25 +- tools/gyp/pylib/gyp/win_tool.py | 9 +- tools/gyp/pylib/gyp/xcode_emulation.py | 12 +- tools/gyp/pylib/gyp/xcodeproj_file.py | 45 +- tools/gyp/pylib/packaging/LICENSE | 3 + tools/gyp/pylib/packaging/LICENSE.APACHE | 177 +++ tools/gyp/pylib/packaging/LICENSE.BSD | 23 + tools/gyp/pylib/packaging/__init__.py | 15 + tools/gyp/pylib/packaging/_elffile.py | 108 ++ tools/gyp/pylib/packaging/_manylinux.py | 252 ++++ tools/gyp/pylib/packaging/_musllinux.py | 83 ++ tools/gyp/pylib/packaging/_parser.py | 359 ++++++ tools/gyp/pylib/packaging/_structures.py | 61 + tools/gyp/pylib/packaging/_tokenizer.py | 192 +++ tools/gyp/pylib/packaging/markers.py | 252 ++++ tools/gyp/pylib/packaging/metadata.py | 825 +++++++++++++ tools/gyp/pylib/packaging/py.typed | 0 tools/gyp/pylib/packaging/requirements.py | 90 ++ tools/gyp/pylib/packaging/specifiers.py | 1030 +++++++++++++++++ tools/gyp/pylib/packaging/tags.py | 553 +++++++++ tools/gyp/pylib/packaging/utils.py | 172 +++ tools/gyp/pylib/packaging/version.py | 563 +++++++++ tools/gyp/pyproject.toml | 119 ++ tools/gyp/requirements_dev.txt | 2 - tools/gyp/setup.py | 42 - tools/gyp/tools/pretty_sln.py | 4 +- tools/gyp/tools/pretty_vcproj.py | 2 +- 52 files changed, 5244 insertions(+), 312 deletions(-) delete mode 100644 tools/gyp/.flake8 create mode 100644 tools/gyp/pylib/packaging/LICENSE create mode 100644 tools/gyp/pylib/packaging/LICENSE.APACHE create mode 100644 tools/gyp/pylib/packaging/LICENSE.BSD create mode 100644 tools/gyp/pylib/packaging/__init__.py create mode 100644 tools/gyp/pylib/packaging/_elffile.py create mode 100644 tools/gyp/pylib/packaging/_manylinux.py create mode 100644 tools/gyp/pylib/packaging/_musllinux.py create mode 100644 tools/gyp/pylib/packaging/_parser.py create mode 100644 tools/gyp/pylib/packaging/_structures.py create mode 100644 tools/gyp/pylib/packaging/_tokenizer.py create mode 100644 tools/gyp/pylib/packaging/markers.py create mode 100644 tools/gyp/pylib/packaging/metadata.py create mode 100644 tools/gyp/pylib/packaging/py.typed create mode 100644 tools/gyp/pylib/packaging/requirements.py create mode 100644 tools/gyp/pylib/packaging/specifiers.py create mode 100644 tools/gyp/pylib/packaging/tags.py create mode 100644 tools/gyp/pylib/packaging/utils.py create mode 100644 tools/gyp/pylib/packaging/version.py create mode 100644 tools/gyp/pyproject.toml delete mode 100644 tools/gyp/requirements_dev.txt delete mode 100644 tools/gyp/setup.py diff --git a/tools/gyp/.flake8 b/tools/gyp/.flake8 deleted file mode 100644 index ea0c7680ef87b2..00000000000000 --- a/tools/gyp/.flake8 +++ /dev/null @@ -1,4 +0,0 @@ -[flake8] -max-complexity = 101 -max-line-length = 88 -extend-ignore = E203 # whitespace before ':' to agree with psf/black diff --git a/tools/gyp/.github/workflows/Python_tests.yml b/tools/gyp/.github/workflows/Python_tests.yml index 1cfa42f563ce5f..049d5fe50c455c 100644 --- a/tools/gyp/.github/workflows/Python_tests.yml +++ b/tools/gyp/.github/workflows/Python_tests.yml @@ -2,29 +2,36 @@ # TODO: Enable pytest --doctest-modules name: Python_tests -on: [push, pull_request] +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: jobs: Python_tests: runs-on: ${{ matrix.os }} strategy: fail-fast: false - max-parallel: 8 + max-parallel: 5 matrix: os: [macos-latest, ubuntu-latest] # , windows-latest] - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install -r requirements_dev.txt - - name: Lint with flake8 - run: flake8 . --ignore=E203,W503 --max-complexity=101 --max-line-length=88 --show-source --statistics - - name: Test with pytest + python -m pip install --upgrade pip setuptools + pip install --editable ".[dev]" + - run: ./gyp -V && ./gyp --version && gyp -V && gyp --version + - name: Lint with ruff # See pyproject.toml for settings + run: ruff --output-format=github . + - name: Test with pytest # See pyproject.toml for settings run: pytest # - name: Run doctests with pytest # run: pytest --doctest-modules diff --git a/tools/gyp/.github/workflows/node-gyp.yml b/tools/gyp/.github/workflows/node-gyp.yml index fc28a0b512e5a7..ebe749752175ba 100644 --- a/tools/gyp/.github/workflows/node-gyp.yml +++ b/tools/gyp/.github/workflows/node-gyp.yml @@ -1,33 +1,43 @@ name: node-gyp integration - -on: [push, pull_request] - +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: jobs: - test: + integration: strategy: fail-fast: false matrix: os: [macos-latest, ubuntu-latest, windows-latest] - python: ["3.7", "3.10"] + python: ["3.8", "3.10", "3.12"] runs-on: ${{ matrix.os }} steps: - name: Clone gyp-next - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: path: gyp-next - name: Clone nodejs/node-gyp - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: nodejs/node-gyp path: node-gyp - uses: actions/setup-node@v3 with: - node-version: 14.x - - uses: actions/setup-python@v3 + node-version: 18.x + - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - - name: Install dependencies + allow-prereleases: true + - name: Install Python dependencies + run: | + cd gyp-next + python -m pip install --upgrade pip setuptools + pip install --editable . + pip uninstall -y gyp-next + - name: Install Node.js dependencies run: | cd node-gyp npm install --no-progress @@ -36,7 +46,15 @@ jobs: run: | rm -rf node-gyp/gyp cp -r gyp-next node-gyp/gyp - - name: Run tests + - name: Run tests (macOS or Linux) + if: runner.os != 'Windows' + shell: bash + run: | + cd node-gyp + npm test --python="${pythonLocation}/python" + - name: Run tests (Windows) + if: runner.os == 'Windows' + shell: pwsh run: | cd node-gyp - npm test + npm run test --python="${env:pythonLocation}\\python.exe" diff --git a/tools/gyp/.github/workflows/nodejs-windows.yml b/tools/gyp/.github/workflows/nodejs-windows.yml index 53bd7367274c12..3f52ff9ce7138f 100644 --- a/tools/gyp/.github/workflows/nodejs-windows.yml +++ b/tools/gyp/.github/workflows/nodejs-windows.yml @@ -1,17 +1,22 @@ name: Node.js Windows integration -on: [push, pull_request] +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: jobs: build-windows: runs-on: windows-latest steps: - name: Clone gyp-next - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: path: gyp-next - name: Clone nodejs/node - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: nodejs/node path: node diff --git a/tools/gyp/.github/workflows/release-please.yml b/tools/gyp/.github/workflows/release-please.yml index 288afdb3b32e0c..665c4c48fed210 100644 --- a/tools/gyp/.github/workflows/release-please.yml +++ b/tools/gyp/.github/workflows/release-please.yml @@ -8,9 +8,9 @@ jobs: release-please: runs-on: ubuntu-latest steps: - - uses: GoogleCloudPlatform/release-please-action@v2 + - uses: google-github-actions/release-please-action@v3 with: token: ${{ secrets.GITHUB_TOKEN }} release-type: python package-name: gyp-next - bump-minor-pre-major: Yes + bump-minor-pre-major: true diff --git a/tools/gyp/AUTHORS b/tools/gyp/AUTHORS index f49a357b9ed104..c05d25b2cb1aa1 100644 --- a/tools/gyp/AUTHORS +++ b/tools/gyp/AUTHORS @@ -14,3 +14,4 @@ Tom Freudenberg Julien Brianceau Refael Ackermann Ujjwal Sharma +Christian Clauss diff --git a/tools/gyp/CHANGELOG.md b/tools/gyp/CHANGELOG.md index a103250cd5399c..483943e013f3ce 100644 --- a/tools/gyp/CHANGELOG.md +++ b/tools/gyp/CHANGELOG.md @@ -1,5 +1,63 @@ # Changelog +## [0.16.1](https://github.com/nodejs/gyp-next/compare/v0.16.0...v0.16.1) (2023-10-25) + + +### Bug Fixes + +* add quotes for command in msvs generator ([#217](https://github.com/nodejs/gyp-next/issues/217)) ([d3b7bcd](https://github.com/nodejs/gyp-next/commit/d3b7bcdec90d6c1b1affc15ece706e63007b7264)) + +## [0.16.0](https://github.com/nodejs/gyp-next/compare/v0.15.1...v0.16.0) (2023-10-23) + + +### Features + +* add VCToolsVersion for msvs ([#209](https://github.com/nodejs/gyp-next/issues/209)) ([0e35ab8](https://github.com/nodejs/gyp-next/commit/0e35ab812d890fb75cf89a19ea72bc93dd6ba186)) + +## [0.15.1](https://github.com/nodejs/gyp-next/compare/v0.15.0...v0.15.1) (2023-09-08) + + +### Bug Fixes + +* some Python lint issues ([#200](https://github.com/nodejs/gyp-next/issues/200)) ([d2dfe4e](https://github.com/nodejs/gyp-next/commit/d2dfe4e66b64c16b38bef984782db93d12674f05)) +* use generator_output as output_dir ([#191](https://github.com/nodejs/gyp-next/issues/191)) ([35ffeb1](https://github.com/nodejs/gyp-next/commit/35ffeb1da8ef3fc8311e2e812cff550568f7e8a2)) + +## [0.15.0](https://github.com/nodejs/gyp-next/compare/v0.14.1...v0.15.0) (2023-03-30) + + +### Features + +* **msvs:** add SpectreMitigation attribute ([#190](https://github.com/nodejs/gyp-next/issues/190)) ([853e464](https://github.com/nodejs/gyp-next/commit/853e4643b6737224a5aa0720a4108461a0230991)) + +## [0.14.1](https://github.com/nodejs/gyp-next/compare/v0.14.0...v0.14.1) (2023-02-19) + + +### Bug Fixes + +* flake8 extended-ignore ([#186](https://github.com/nodejs/gyp-next/issues/186)) ([c38493c](https://github.com/nodejs/gyp-next/commit/c38493c2556aa63b6dc40ab585c18aef5ca270d3)) +* No build_type in default_variables ([#183](https://github.com/nodejs/gyp-next/issues/183)) ([ac262fe](https://github.com/nodejs/gyp-next/commit/ac262fe82453c4e8dc47529338d157eb0b5ec0fb)) + + +### Documentation + +* README.md: Add pipx installation and run instructions ([#165](https://github.com/nodejs/gyp-next/issues/165)) ([4d28b15](https://github.com/nodejs/gyp-next/commit/4d28b155568dc35f11c7f86124d1dd42ba428bed)) + +## [0.14.0](https://github.com/nodejs/gyp-next/compare/v0.13.0...v0.14.0) (2022-10-08) + + +### Features + +* Add command line argument for `gyp --version` ([#164](https://github.com/nodejs/gyp-next/issues/164)) ([5c9f4d0](https://github.com/nodejs/gyp-next/commit/5c9f4d05678dd855e18ed2327219e5d18e5374db)) +* ninja build for iOS ([#174](https://github.com/nodejs/gyp-next/issues/174)) ([b6f2714](https://github.com/nodejs/gyp-next/commit/b6f271424e0033d7ed54d437706695af2ba7a1bf)) +* **zos:** support IBM Open XL C/C++ & PL/I compilers on z/OS ([#178](https://github.com/nodejs/gyp-next/issues/178)) ([43a7211](https://github.com/nodejs/gyp-next/commit/43a72110ae3fafb13c9625cc7a969624b27cda47)) + + +### Bug Fixes + +* lock windows env ([#163](https://github.com/nodejs/gyp-next/issues/163)) ([44bd0dd](https://github.com/nodejs/gyp-next/commit/44bd0ddc93ea0b5770a44dd326a2e4ae62c21442)) +* move configuration information into pyproject.toml ([#176](https://github.com/nodejs/gyp-next/issues/176)) ([d69d8ec](https://github.com/nodejs/gyp-next/commit/d69d8ece6dbff7af4f2ea073c9fd170baf8cb7f7)) +* node.js debugger adds stderr (but exit code is 0) -> shouldn't throw ([#179](https://github.com/nodejs/gyp-next/issues/179)) ([1a457d9](https://github.com/nodejs/gyp-next/commit/1a457d9ed08cfd30c9fa551bc5cf0d90fb583787)) + ## [0.13.0](https://www.github.com/nodejs/gyp-next/compare/v0.12.1...v0.13.0) (2022-05-11) diff --git a/tools/gyp/README.md b/tools/gyp/README.md index 9ffc2b21e81b8b..be1d7b9ebf6611 100644 --- a/tools/gyp/README.md +++ b/tools/gyp/README.md @@ -5,3 +5,26 @@ Documents are available at [gyp.gsrc.io](https://gyp.gsrc.io), or you can check __gyp-next__ is [released](https://github.com/nodejs/gyp-next/releases) to the [__Python Packaging Index__](https://pypi.org/project/gyp-next) (PyPI) and can be installed with the command: * `python3 -m pip install gyp-next` + +When used as a command line utility, __gyp-next__ can also be installed with [pipx](https://pypa.github.io/pipx): +* `pipx install gyp-next` +``` +Installing to a new venv 'gyp-next' + installed package gyp-next 0.13.0, installed using Python 3.10.6 + These apps are now globally available + - gyp +done! ✨ 🌟 ✨ +``` + +Or to run __gyp-next__ directly without installing it: +* `pipx run gyp-next --help` +``` +NOTE: running app 'gyp' from 'gyp-next' +usage: usage: gyp [options ...] [build_file ...] + +options: + -h, --help show this help message and exit + --build CONFIGS configuration for build after project generation + --check check format of gyp files + [ ... ] +``` diff --git a/tools/gyp/pylib/gyp/MSVSNew.py b/tools/gyp/pylib/gyp/MSVSNew.py index d6b189760cef99..bc0e93d07f8900 100644 --- a/tools/gyp/pylib/gyp/MSVSNew.py +++ b/tools/gyp/pylib/gyp/MSVSNew.py @@ -285,19 +285,17 @@ def Write(self, writer=gyp.common.WriteOnDiff): "\tEndProjectSection\r\n" ) - if isinstance(e, MSVSFolder): - if e.items: - f.write("\tProjectSection(SolutionItems) = preProject\r\n") - for i in e.items: - f.write(f"\t\t{i} = {i}\r\n") - f.write("\tEndProjectSection\r\n") - - if isinstance(e, MSVSProject): - if e.dependencies: - f.write("\tProjectSection(ProjectDependencies) = postProject\r\n") - for d in e.dependencies: - f.write(f"\t\t{d.get_guid()} = {d.get_guid()}\r\n") - f.write("\tEndProjectSection\r\n") + if isinstance(e, MSVSFolder) and e.items: + f.write("\tProjectSection(SolutionItems) = preProject\r\n") + for i in e.items: + f.write(f"\t\t{i} = {i}\r\n") + f.write("\tEndProjectSection\r\n") + + if isinstance(e, MSVSProject) and e.dependencies: + f.write("\tProjectSection(ProjectDependencies) = postProject\r\n") + for d in e.dependencies: + f.write(f"\t\t{d.get_guid()} = {d.get_guid()}\r\n") + f.write("\tEndProjectSection\r\n") f.write("EndProject\r\n") @@ -353,7 +351,7 @@ def Write(self, writer=gyp.common.WriteOnDiff): # Folder mappings # Omit this section if there are no folders - if any([e.entries for e in all_entries if isinstance(e, MSVSFolder)]): + if any(e.entries for e in all_entries if isinstance(e, MSVSFolder)): f.write("\tGlobalSection(NestedProjects) = preSolution\r\n") for e in all_entries: if not isinstance(e, MSVSFolder): diff --git a/tools/gyp/pylib/gyp/MSVSProject.py b/tools/gyp/pylib/gyp/MSVSProject.py index f0cfabe8349099..629f3f61b4819d 100644 --- a/tools/gyp/pylib/gyp/MSVSProject.py +++ b/tools/gyp/pylib/gyp/MSVSProject.py @@ -79,7 +79,7 @@ def __init__(self, project_path, version, name, guid=None, platforms=None): self.files_section = ["Files"] # Keep a dict keyed on filename to speed up access. - self.files_dict = dict() + self.files_dict = {} def AddToolFile(self, path): """Adds a tool file to the project. diff --git a/tools/gyp/pylib/gyp/MSVSSettings.py b/tools/gyp/pylib/gyp/MSVSSettings.py index e89a971a3bb4fd..93633dbca133c7 100644 --- a/tools/gyp/pylib/gyp/MSVSSettings.py +++ b/tools/gyp/pylib/gyp/MSVSSettings.py @@ -141,7 +141,7 @@ class _Boolean(_Type): """Boolean settings, can have the values 'false' or 'true'.""" def _Validate(self, value): - if value != "true" and value != "false": + if value not in {"true", "false"}: raise ValueError("expected bool; got %r" % value) def ValidateMSVS(self, value): diff --git a/tools/gyp/pylib/gyp/__init__.py b/tools/gyp/pylib/gyp/__init__.py index 976d5b6aa88e09..d6cc01307d997c 100755 --- a/tools/gyp/pylib/gyp/__init__.py +++ b/tools/gyp/pylib/gyp/__init__.py @@ -15,6 +15,7 @@ import traceback from gyp.common import GypError + # Default debug modes for GYP debug = {} @@ -107,7 +108,9 @@ def Load( if default_variables["GENERATOR"] == "ninja": default_variables.setdefault( "PRODUCT_DIR_ABS", - os.path.join(output_dir, "out", default_variables["build_type"]), + os.path.join( + output_dir, "out", default_variables.get("build_type", "default") + ), ) else: default_variables.setdefault( @@ -463,8 +466,19 @@ def gyp_main(args): metavar="TARGET", help="include only TARGET and its deep dependencies", ) + parser.add_argument( + "-V", + "--version", + dest="version", + action="store_true", + help="Show the version and exit.", + ) options, build_files_arg = parser.parse_args(args) + if options.version: + import pkg_resources + print(f"v{pkg_resources.get_distribution('gyp-next').version}") + return 0 build_files = build_files_arg # Set up the configuration directory (defaults to ~/.gyp) @@ -610,7 +624,7 @@ def gyp_main(args): if options.generator_flags: gen_flags += options.generator_flags generator_flags = NameValueListToDict(gen_flags) - if DEBUG_GENERAL in gyp.debug.keys(): + if DEBUG_GENERAL in gyp.debug: DebugOutput(DEBUG_GENERAL, "generator_flags: %s", generator_flags) # Generate all requested formats (use a set in case we got one format request diff --git a/tools/gyp/pylib/gyp/common.py b/tools/gyp/pylib/gyp/common.py index 0847cdabc718d8..b73a0c55b1e349 100644 --- a/tools/gyp/pylib/gyp/common.py +++ b/tools/gyp/pylib/gyp/common.py @@ -144,20 +144,16 @@ def RelativePath(path, relative_to, follow_path_symlink=True): # symlink, this option has no effect. # Convert to normalized (and therefore absolute paths). - if follow_path_symlink: - path = os.path.realpath(path) - else: - path = os.path.abspath(path) + path = os.path.realpath(path) if follow_path_symlink else os.path.abspath(path) relative_to = os.path.realpath(relative_to) # On Windows, we can't create a relative path to a different drive, so just # use the absolute path. - if sys.platform == "win32": - if ( - os.path.splitdrive(path)[0].lower() - != os.path.splitdrive(relative_to)[0].lower() - ): - return path + if sys.platform == "win32" and ( + os.path.splitdrive(path)[0].lower() + != os.path.splitdrive(relative_to)[0].lower() + ): + return path # Split the paths into components. path_split = path.split(os.path.sep) @@ -277,10 +273,7 @@ def EncodePOSIXShellArgument(argument): if not isinstance(argument, str): argument = str(argument) - if _quote.search(argument): - quote = '"' - else: - quote = "" + quote = '"' if _quote.search(argument) else "" encoded = quote + re.sub(_escape, r"\\\1", argument) + quote @@ -470,6 +463,7 @@ def CopyTool(flavor, out_path, generator_flags={}): "os400": "flock", "solaris": "flock", "mac": "mac", + "ios": "mac", "win": "win", }.get(flavor, None) if not prefix: diff --git a/tools/gyp/pylib/gyp/easy_xml.py b/tools/gyp/pylib/gyp/easy_xml.py index bda1a47468ae2b..02567b251446d7 100644 --- a/tools/gyp/pylib/gyp/easy_xml.py +++ b/tools/gyp/pylib/gyp/easy_xml.py @@ -121,7 +121,11 @@ def WriteXmlIfChanged(content, path, encoding="utf-8", pretty=False, if win32 and os.linesep != "\r\n": xml_string = xml_string.replace("\n", "\r\n") - default_encoding = locale.getdefaultlocale()[1] + try: # getdefaultlocale() was removed in Python 3.11 + default_encoding = locale.getdefaultlocale()[1] + except AttributeError: + default_encoding = locale.getencoding() + if default_encoding and default_encoding.upper() != encoding.upper(): xml_string = xml_string.encode(encoding) diff --git a/tools/gyp/pylib/gyp/easy_xml_test.py b/tools/gyp/pylib/gyp/easy_xml_test.py index 342f693a329d26..2d9b15210dc126 100755 --- a/tools/gyp/pylib/gyp/easy_xml_test.py +++ b/tools/gyp/pylib/gyp/easy_xml_test.py @@ -76,6 +76,8 @@ def test_EasyXml_complex(self): '\'Debug|Win32\'" Label="Configuration">' "Application" "Unicode" + "SpectreLoadCF" + "14.36.32532" "" "" ) @@ -99,6 +101,8 @@ def test_EasyXml_complex(self): }, ["ConfigurationType", "Application"], ["CharacterSet", "Unicode"], + ["SpectreMitigation", "SpectreLoadCF"], + ["VCToolsVersion", "14.36.32532"], ], ] ) diff --git a/tools/gyp/pylib/gyp/generator/analyzer.py b/tools/gyp/pylib/gyp/generator/analyzer.py index f15df00c36373e..1334f2fca9967c 100644 --- a/tools/gyp/pylib/gyp/generator/analyzer.py +++ b/tools/gyp/pylib/gyp/generator/analyzer.py @@ -379,7 +379,7 @@ def _GenerateTargets(data, target_list, target_dicts, toplevel_dir, files, build target.is_executable = target_type == "executable" target.is_static_library = target_type == "static_library" target.is_or_has_linked_ancestor = ( - target_type == "executable" or target_type == "shared_library" + target_type in {"executable", "shared_library"} ) build_file = gyp.common.ParseQualifiedTarget(target_name)[0] @@ -433,14 +433,14 @@ def _GetUnqualifiedToTargetMapping(all_targets, to_find): if not to_find: return {}, [] to_find = set(to_find) - for target_name in all_targets.keys(): + for target_name in all_targets: extracted = gyp.common.ParseQualifiedTarget(target_name) if len(extracted) > 1 and extracted[1] in to_find: to_find.remove(extracted[1]) result[extracted[1]] = all_targets[target_name] if not to_find: return result, [] - return result, [x for x in to_find] + return result, list(to_find) def _DoesTargetDependOnMatchingTargets(target): @@ -451,8 +451,8 @@ def _DoesTargetDependOnMatchingTargets(target): if target.match_status == MATCH_STATUS_DOESNT_MATCH: return False if ( - target.match_status == MATCH_STATUS_MATCHES - or target.match_status == MATCH_STATUS_MATCHES_BY_DEPENDENCY + target.match_status in {MATCH_STATUS_MATCHES, + MATCH_STATUS_MATCHES_BY_DEPENDENCY} ): return True for dep in target.deps: @@ -683,11 +683,9 @@ def find_matching_test_target_names(self): ) test_target_names_contains_all = "all" in self._test_target_names if test_target_names_contains_all: - test_targets = [ - x for x in (set(test_targets_no_all) | set(self._root_targets)) - ] + test_targets = list(set(test_targets_no_all) | set(self._root_targets)) else: - test_targets = [x for x in test_targets_no_all] + test_targets = list(test_targets_no_all) print("supplied test_targets") for target_name in self._test_target_names: print("\t", target_name) @@ -702,9 +700,9 @@ def find_matching_test_target_names(self): if matching_test_targets_contains_all: # Remove any of the targets for all that were not explicitly supplied, # 'all' is subsequentely added to the matching names below. - matching_test_targets = [ - x for x in (set(matching_test_targets) & set(test_targets_no_all)) - ] + matching_test_targets = list( + set(matching_test_targets) & set(test_targets_no_all) + ) print("matched test_targets") for target in matching_test_targets: print("\t", target.name) @@ -729,9 +727,7 @@ def find_matching_compile_target_names(self): self._supplied_target_names_no_all(), self._unqualified_mapping ) if "all" in self._supplied_target_names(): - supplied_targets = [ - x for x in (set(supplied_targets) | set(self._root_targets)) - ] + supplied_targets = list(set(supplied_targets) | set(self._root_targets)) print("Supplied test_targets & compile_targets") for target in supplied_targets: print("\t", target.name) diff --git a/tools/gyp/pylib/gyp/generator/android.py b/tools/gyp/pylib/gyp/generator/android.py index cdf1a4832cf1ad..d3c97c666db077 100644 --- a/tools/gyp/pylib/gyp/generator/android.py +++ b/tools/gyp/pylib/gyp/generator/android.py @@ -697,7 +697,7 @@ def ComputeOutputParts(self, spec): target, ) - if self.type != "static_library" and self.type != "shared_library": + if self.type not in {"static_library", "shared_library"}: target_prefix = spec.get("product_prefix", target_prefix) target = spec.get("product_name", target) product_ext = spec.get("product_extension") diff --git a/tools/gyp/pylib/gyp/generator/cmake.py b/tools/gyp/pylib/gyp/generator/cmake.py index c95d18415cdb37..320a891aa8adc9 100644 --- a/tools/gyp/pylib/gyp/generator/cmake.py +++ b/tools/gyp/pylib/gyp/generator/cmake.py @@ -103,7 +103,7 @@ def NormjoinPathForceCMakeSource(base_path, rel_path): """ if os.path.isabs(rel_path): return rel_path - if any([rel_path.startswith(var) for var in FULL_PATH_VARS]): + if any(rel_path.startswith(var) for var in FULL_PATH_VARS): return rel_path # TODO: do we need to check base_path for absolute variables as well? return os.path.join( @@ -328,7 +328,7 @@ def WriteActions(target_name, actions, extra_sources, extra_deps, path_to_gyp, o def NormjoinRulePathForceCMakeSource(base_path, rel_path, rule_source): if rel_path.startswith(("${RULE_INPUT_PATH}", "${RULE_INPUT_DIRNAME}")): - if any([rule_source.startswith(var) for var in FULL_PATH_VARS]): + if any(rule_source.startswith(var) for var in FULL_PATH_VARS): return rel_path return NormjoinPathForceCMakeSource(base_path, rel_path) @@ -929,10 +929,7 @@ def WriteTarget( product_prefix = spec.get("product_prefix", default_product_prefix) product_name = spec.get("product_name", default_product_name) product_ext = spec.get("product_extension") - if product_ext: - product_ext = "." + product_ext - else: - product_ext = default_product_ext + product_ext = "." + product_ext if product_ext else default_product_ext SetTargetProperty(output, cmake_target_name, "PREFIX", product_prefix) SetTargetProperty( diff --git a/tools/gyp/pylib/gyp/generator/compile_commands_json.py b/tools/gyp/pylib/gyp/generator/compile_commands_json.py index f330a04dea4c53..0ffa3bb5980fe9 100644 --- a/tools/gyp/pylib/gyp/generator/compile_commands_json.py +++ b/tools/gyp/pylib/gyp/generator/compile_commands_json.py @@ -34,7 +34,7 @@ def IsMac(params): - return "mac" == gyp.common.GetFlavor(params) + return gyp.common.GetFlavor(params) == "mac" def CalculateVariables(default_variables, params): @@ -93,7 +93,7 @@ def resolve(filename): gyp.common.EncodePOSIXShellArgument(file), ) ) - commands.append(dict(command=command, directory=output_dir, file=file)) + commands.append({"command": command, "directory": output_dir, "file": file}) def GenerateOutput(target_list, target_dicts, data, params): @@ -108,7 +108,10 @@ def GenerateOutput(target_list, target_dicts, data, params): cwd = os.path.dirname(build_file) AddCommandsForTarget(cwd, target, params, per_config_commands) - output_dir = params["generator_flags"].get("output_dir", "out") + try: + output_dir = params["options"].generator_output + except (AttributeError, KeyError): + output_dir = params["generator_flags"].get("output_dir", "out") for configuration_name, commands in per_config_commands.items(): filename = os.path.join(output_dir, configuration_name, "compile_commands.json") gyp.common.EnsureDirExists(filename) diff --git a/tools/gyp/pylib/gyp/generator/eclipse.py b/tools/gyp/pylib/gyp/generator/eclipse.py index 1ff0dc83ae200f..52aeae6050990b 100644 --- a/tools/gyp/pylib/gyp/generator/eclipse.py +++ b/tools/gyp/pylib/gyp/generator/eclipse.py @@ -24,7 +24,7 @@ import gyp.common import gyp.msvs_emulation import shlex -import xml.etree.cElementTree as ET +import xml.etree.ElementTree as ET generator_wants_static_library_dependencies_adjusted = False @@ -248,10 +248,7 @@ def GetAllDefines(target_list, target_dicts, data, config_name, params, compiler continue cpp_line_parts = cpp_line.split(" ", 2) key = cpp_line_parts[1] - if len(cpp_line_parts) >= 3: - val = cpp_line_parts[2] - else: - val = "1" + val = cpp_line_parts[2] if len(cpp_line_parts) >= 3 else "1" all_defines[key] = val return all_defines diff --git a/tools/gyp/pylib/gyp/generator/make.py b/tools/gyp/pylib/gyp/generator/make.py index e225326e1d09b6..1b9974948e4de5 100644 --- a/tools/gyp/pylib/gyp/generator/make.py +++ b/tools/gyp/pylib/gyp/generator/make.py @@ -101,6 +101,7 @@ def CalculateVariables(default_variables, params): default_variables.setdefault("SHARED_LIB_SUFFIX", ".a") elif flavor == "zos": default_variables.setdefault("SHARED_LIB_SUFFIX", ".x") + COMPILABLE_EXTENSIONS.update({".pli": "pli"}) else: default_variables.setdefault("SHARED_LIB_SUFFIX", ".so") default_variables.setdefault("SHARED_LIB_DIR", "$(builddir)/lib.$(TOOLSET)") @@ -318,7 +319,7 @@ def CalculateGeneratorInputInfo(params): cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS) quiet_cmd_solink = SOLINK($(TOOLSET)) $@ -cmd_solink = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,DLL -o $(patsubst %.x,%.so,$@) $(LD_INPUTS) $(LIBS) && if [ -f $(notdir $@) ]; then /bin/cp $(notdir $@) $@; else true; fi +cmd_solink = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS) quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ cmd_solink_module = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) @@ -378,6 +379,7 @@ def CalculateGeneratorInputInfo(params): LINK.target ?= %(LINK.target)s LDFLAGS.target ?= $(LDFLAGS) AR.target ?= $(AR) +PLI.target ?= %(PLI.target)s # C++ apps need to be linked with g++. LINK ?= $(CXX.target) @@ -391,6 +393,7 @@ def CalculateGeneratorInputInfo(params): LINK.host ?= %(LINK.host)s LDFLAGS.host ?= $(LDFLAGS_host) AR.host ?= %(AR.host)s +PLI.host ?= %(PLI.host)s # Define a dir function that can handle spaces. # http://www.gnu.org/software/make/manual/make.html#Syntax-of-Functions @@ -628,6 +631,15 @@ def WriteRootHeaderSuffixRules(writer): writer.write("\n") +SHARED_HEADER_OS390_COMMANDS = """ +PLIFLAGS.target ?= -qlp=64 -qlimits=extname=31 $(PLIFLAGS) +PLIFLAGS.host ?= -qlp=64 -qlimits=extname=31 $(PLIFLAGS) + +quiet_cmd_pli = PLI($(TOOLSET)) $@ +cmd_pli = $(PLI.$(TOOLSET)) $(GYP_PLIFLAGS) $(PLIFLAGS.$(TOOLSET)) -c $< && \ + if [ -f $(notdir $@) ]; then /bin/cp $(notdir $@) $@; else true; fi +""" + SHARED_HEADER_SUFFIX_RULES_COMMENT1 = """\ # Suffix rules, putting all outputs into $(obj). """ @@ -669,10 +681,7 @@ def WriteRootHeaderSuffixRules(writer): def Compilable(filename): """Return true if the file is compilable (should be in OBJS).""" - for res in (filename.endswith(e) for e in COMPILABLE_EXTENSIONS): - if res: - return True - return False + return any(res for res in (filename.endswith(e) for e in COMPILABLE_EXTENSIONS)) def Linkable(filename): @@ -766,7 +775,7 @@ def __init__(self, generator_flags, flavor): self.suffix_rules_objdir2 = {} # Generate suffix rules for all compilable extensions. - for ext in COMPILABLE_EXTENSIONS.keys(): + for ext in COMPILABLE_EXTENSIONS: # Suffix rules for source folder. self.suffix_rules_srcdir.update( { @@ -1054,7 +1063,7 @@ def WriteActions( # libraries, but until everything is made cross-compile safe, also use # target libraries. # TODO(piman): when everything is cross-compile safe, remove lib.target - if self.flavor == "zos" or self.flavor == "aix": + if self.flavor in {"zos", "aix"}: self.WriteLn( "cmd_%s = LIBPATH=$(builddir)/lib.host:" "$(builddir)/lib.target:$$LIBPATH; " @@ -1980,10 +1989,7 @@ def WriteTarget( and self.toolset == "target" ): # On mac, products are created in install_path immediately. - assert install_path == self.output, "{} != {}".format( - install_path, - self.output, - ) + assert install_path == self.output, f"{install_path} != {self.output}" # Point the target alias to the final binary output. self.WriteMakeRule( @@ -2022,7 +2028,7 @@ def WriteTarget( installable_deps.append( self.GetUnversionedSidedeckFromSidedeck(install_path) ) - if self.output != self.alias and self.alias != self.target: + if self.alias not in (self.output, self.target): self.WriteMakeRule( [self.alias], installable_deps, @@ -2450,10 +2456,12 @@ def CalculateMakefilePath(build_file, base_name): "AR.target": GetEnvironFallback(("AR_target", "AR"), "$(AR)"), "CXX.target": GetEnvironFallback(("CXX_target", "CXX"), "$(CXX)"), "LINK.target": GetEnvironFallback(("LINK_target", "LINK"), "$(LINK)"), + "PLI.target": GetEnvironFallback(("PLI_target", "PLI"), "pli"), "CC.host": GetEnvironFallback(("CC_host", "CC"), "gcc"), "AR.host": GetEnvironFallback(("AR_host", "AR"), "ar"), "CXX.host": GetEnvironFallback(("CXX_host", "CXX"), "g++"), "LINK.host": GetEnvironFallback(("LINK_host", "LINK"), "$(CXX.host)"), + "PLI.host": GetEnvironFallback(("PLI_host", "PLI"), "pli"), } if flavor == "mac": flock_command = "./gyp-mac-tool flock" @@ -2469,16 +2477,36 @@ def CalculateMakefilePath(build_file, base_name): header_params.update({"link_commands": LINK_COMMANDS_ANDROID}) elif flavor == "zos": copy_archive_arguments = "-fPR" - makedep_arguments = "-qmakedep=gcc" + CC_target = GetEnvironFallback(("CC_target", "CC"), "njsc") + makedep_arguments = "-MMD" + if CC_target == "clang": + CC_host = GetEnvironFallback(("CC_host", "CC"), "clang") + CXX_target = GetEnvironFallback(("CXX_target", "CXX"), "clang++") + CXX_host = GetEnvironFallback(("CXX_host", "CXX"), "clang++") + elif CC_target == "ibm-clang64": + CC_host = GetEnvironFallback(("CC_host", "CC"), "ibm-clang64") + CXX_target = GetEnvironFallback(("CXX_target", "CXX"), "ibm-clang++64") + CXX_host = GetEnvironFallback(("CXX_host", "CXX"), "ibm-clang++64") + elif CC_target == "ibm-clang": + CC_host = GetEnvironFallback(("CC_host", "CC"), "ibm-clang") + CXX_target = GetEnvironFallback(("CXX_target", "CXX"), "ibm-clang++") + CXX_host = GetEnvironFallback(("CXX_host", "CXX"), "ibm-clang++") + else: + # Node.js versions prior to v18: + makedep_arguments = "-qmakedep=gcc" + CC_host = GetEnvironFallback(("CC_host", "CC"), "njsc") + CXX_target = GetEnvironFallback(("CXX_target", "CXX"), "njsc++") + CXX_host = GetEnvironFallback(("CXX_host", "CXX"), "njsc++") header_params.update( { "copy_archive_args": copy_archive_arguments, "makedep_args": makedep_arguments, "link_commands": LINK_COMMANDS_OS390, - "CC.target": GetEnvironFallback(("CC_target", "CC"), "njsc"), - "CXX.target": GetEnvironFallback(("CXX_target", "CXX"), "njsc++"), - "CC.host": GetEnvironFallback(("CC_host", "CC"), "njsc"), - "CXX.host": GetEnvironFallback(("CXX_host", "CXX"), "njsc++"), + "extra_commands": SHARED_HEADER_OS390_COMMANDS, + "CC.target": CC_target, + "CXX.target": CXX_target, + "CC.host": CC_host, + "CXX.host": CXX_host, } ) elif flavor == "solaris": diff --git a/tools/gyp/pylib/gyp/generator/msvs.py b/tools/gyp/pylib/gyp/generator/msvs.py index fd950057847980..1f9e2497da7bd5 100644 --- a/tools/gyp/pylib/gyp/generator/msvs.py +++ b/tools/gyp/pylib/gyp/generator/msvs.py @@ -164,7 +164,7 @@ def _FixPath(path, separator="\\"): fixpath_prefix and path and not os.path.isabs(path) - and not path[0] == "$" + and path[0] != "$" and not _IsWindowsAbsPath(path) ): path = os.path.join(fixpath_prefix, path) @@ -281,9 +281,9 @@ def _ToolSetOrAppend(tools, tool_name, setting, value, only_if_unset=False): else: value = [i.replace("/", "\\") for i in value] if not tools.get(tool_name): - tools[tool_name] = dict() + tools[tool_name] = {} tool = tools[tool_name] - if "CompileAsWinRT" == setting: + if setting == "CompileAsWinRT": return if tool.get(setting): if only_if_unset: @@ -412,10 +412,7 @@ def _BuildCommandLineForRuleRaw( return input_dir_preamble + cmd else: # Convert cat --> type to mimic unix. - if cmd[0] == "cat": - command = ["type"] - else: - command = [cmd[0].replace("/", "\\")] + command = ["type"] if cmd[0] == "cat" else [cmd[0].replace("/", "\\")] # Add call before command to ensure that commands can be tied together one # after the other without aborting in Incredibuild, since IB makes a bat # file out of the raw command string, and some commands (like python) are @@ -687,7 +684,7 @@ def _GenerateExternalRules(rules, output_dir, spec, sources, options, actions_to all_outputs.update(OrderedSet(outputs)) # Only use one target from each rule as the dependency for # 'all' so we don't try to build each rule multiple times. - first_outputs.append(list(outputs)[0]) + first_outputs.append(next(iter(outputs))) # Get the unique output directories for this rule. output_dirs = [os.path.split(i)[0] for i in outputs] for od in output_dirs: @@ -756,7 +753,7 @@ def _EscapeEnvironmentVariableExpansion(s): Returns: The escaped string. - """ # noqa: E731,E123,E501 + """ s = s.replace("%", "%%") return s @@ -1189,7 +1186,7 @@ def _AddConfigurationToMSVSProject(p, spec, config_type, config_name, config): precompiled_header = config.get("msvs_precompiled_header") # Prepare the list of tools as a dictionary. - tools = dict() + tools = {} # Add in user specified msvs_settings. msvs_settings = config.get("msvs_settings", {}) MSVSSettings.ValidateMSVSSettings(msvs_settings) @@ -1384,10 +1381,7 @@ def _GetDefines(config): """ defines = [] for d in config.get("defines", []): - if type(d) == list: - fd = "=".join([str(dpart) for dpart in d]) - else: - fd = str(d) + fd = "=".join([str(dpart) for dpart in d]) if isinstance(d, list) else str(d) defines.append(fd) return defines @@ -1578,10 +1572,10 @@ def _AdjustSourcesAndConvertToFilterHierarchy( # such as ../../src/modules/module1 etc. if version.UsesVcxproj(): while ( - all([isinstance(s, MSVSProject.Filter) for s in sources]) + all(isinstance(s, MSVSProject.Filter) for s in sources) and len({s.name for s in sources}) == 1 ): - assert all([len(s.contents) == 1 for s in sources]) + assert all(len(s.contents) == 1 for s in sources) sources = [s.contents[0] for s in sources] else: while len(sources) == 1 and isinstance(sources[0], MSVSProject.Filter): @@ -1598,10 +1592,7 @@ def _IdlFilesHandledNonNatively(spec, sources): if rule["extension"] == "idl" and int(rule.get("msvs_external_rule", 0)): using_idl = True break - if using_idl: - excluded_idl = [i for i in sources if i.endswith(".idl")] - else: - excluded_idl = [] + excluded_idl = [i for i in sources if i.endswith(".idl")] if using_idl else [] return excluded_idl @@ -1819,7 +1810,7 @@ def _GetPathDict(root, path): parent, folder = os.path.split(path) parent_dict = _GetPathDict(root, parent) if folder not in parent_dict: - parent_dict[folder] = dict() + parent_dict[folder] = {} return parent_dict[folder] @@ -3013,18 +3004,26 @@ def _GetMSBuildConfigurationDetails(spec, build_file): msbuild_attributes = _GetMSBuildAttributes(spec, settings, build_file) condition = _GetConfigurationCondition(name, settings, spec) character_set = msbuild_attributes.get("CharacterSet") + vctools_version = msbuild_attributes.get("VCToolsVersion") config_type = msbuild_attributes.get("ConfigurationType") _AddConditionalProperty(properties, condition, "ConfigurationType", config_type) + spectre_mitigation = msbuild_attributes.get('SpectreMitigation') + if spectre_mitigation: + _AddConditionalProperty(properties, condition, "SpectreMitigation", + spectre_mitigation) if config_type == "Driver": _AddConditionalProperty(properties, condition, "DriverType", "WDM") _AddConditionalProperty( properties, condition, "TargetVersion", _ConfigTargetVersion(settings) ) - if character_set: - if "msvs_enable_winrt" not in spec: - _AddConditionalProperty( - properties, condition, "CharacterSet", character_set - ) + if character_set and "msvs_enable_winrt" not in spec: + _AddConditionalProperty( + properties, condition, "CharacterSet", character_set + ) + if vctools_version and "msvs_enable_winrt" not in spec: + _AddConditionalProperty( + properties, condition, "VCToolsVersion", vctools_version + ) return _GetMSBuildPropertyGroup(spec, "Configuration", properties) @@ -3104,6 +3103,10 @@ def _ConvertMSVSBuildAttributes(spec, config, build_file): msbuild_attributes[a] = _ConvertMSVSCharacterSet(msvs_attributes[a]) elif a == "ConfigurationType": msbuild_attributes[a] = _ConvertMSVSConfigurationType(msvs_attributes[a]) + elif a == "SpectreMitigation": + msbuild_attributes[a] = msvs_attributes[a] + elif a == "VCToolsVersion": + msbuild_attributes[a] = msvs_attributes[a] else: print("Warning: Do not know how to convert MSVS attribute " + a) return msbuild_attributes @@ -3326,15 +3329,14 @@ def _GetMSBuildToolSettingsSections(spec, configurations): for tool_name, tool_settings in sorted(msbuild_settings.items()): # Skip the tool named '' which is a holder of global settings handled # by _GetMSBuildConfigurationGlobalProperties. - if tool_name: - if tool_settings: - tool = [tool_name] - for name, value in sorted(tool_settings.items()): - formatted_value = _GetValueFormattedForMSBuild( - tool_name, name, value - ) - tool.append([name, formatted_value]) - group.append(tool) + if tool_name and tool_settings: + tool = [tool_name] + for name, value in sorted(tool_settings.items()): + formatted_value = _GetValueFormattedForMSBuild( + tool_name, name, value + ) + tool.append([name, formatted_value]) + group.append(tool) groups.append(group) return groups @@ -3462,10 +3464,7 @@ def _GetValueFormattedForMSBuild(tool_name, name, value): "Link": ["AdditionalOptions"], "Lib": ["AdditionalOptions"], } - if tool_name in exceptions and name in exceptions[tool_name]: - char = " " - else: - char = ";" + char = " " if name in exceptions.get(tool_name, []) else ";" formatted_value = char.join( [MSVSSettings.ConvertVCMacrosToMSBuild(i) for i in value] ) diff --git a/tools/gyp/pylib/gyp/generator/ninja.py b/tools/gyp/pylib/gyp/generator/ninja.py index 3db3771ac97855..8ba341e96d3f0d 100644 --- a/tools/gyp/pylib/gyp/generator/ninja.py +++ b/tools/gyp/pylib/gyp/generator/ninja.py @@ -1583,7 +1583,7 @@ def WriteTarget(self, spec, config_name, config, link_deps, compile_deps): elif spec["type"] == "static_library": self.target.binary = self.ComputeOutput(spec) if ( - self.flavor not in ("mac", "openbsd", "netbsd", "win") + self.flavor not in ("ios", "mac", "netbsd", "openbsd", "win") and not self.is_standalone_static_library ): self.ninja.build( @@ -1815,10 +1815,7 @@ def ComputeOutputFileName(self, spec, type=None): "executable": default_variables["EXECUTABLE_SUFFIX"], } extension = spec.get("product_extension") - if extension: - extension = "." + extension - else: - extension = DEFAULT_EXTENSION.get(type, "") + extension = "." + extension if extension else DEFAULT_EXTENSION.get(type, "") if "product_name" in spec: # If we were given an explicit name, use that. @@ -2496,7 +2493,7 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params, config_name ), ) - if flavor != "mac" and flavor != "win": + if flavor not in ("ios", "mac", "win"): master_ninja.rule( "alink", description="AR $out", @@ -2533,7 +2530,7 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params, config_name description="SOLINK $lib", restat=True, command=mtime_preserving_solink_base - % {"suffix": "@$link_file_list"}, # noqa: E501 + % {"suffix": "@$link_file_list"}, rspfile="$link_file_list", rspfile_content=( "-Wl,--whole-archive $in $solibs -Wl," "--no-whole-archive $libs" diff --git a/tools/gyp/pylib/gyp/generator/xcode.py b/tools/gyp/pylib/gyp/generator/xcode.py index 2f4d17e514e439..1ac672c3876bd9 100644 --- a/tools/gyp/pylib/gyp/generator/xcode.py +++ b/tools/gyp/pylib/gyp/generator/xcode.py @@ -439,7 +439,7 @@ def Finalize2(self, xcode_targets, xcode_target_to_target_dict): # it opens the project file, which will result in unnecessary diffs. # TODO(mark): This is evil because it relies on internal knowledge of # PBXProject._other_pbxprojects. - for other_pbxproject in self.project._other_pbxprojects.keys(): + for other_pbxproject in self.project._other_pbxprojects: self.project.AddOrGetProjectReference(other_pbxproject) self.project.SortRemoteProductReferences() @@ -1118,10 +1118,7 @@ def GenerateOutput(target_list, target_dicts, data, params): for concrete_output_index, concrete_output in enumerate( concrete_outputs ): - if concrete_output_index == 0: - bol = "" - else: - bol = " " + bol = "" if concrete_output_index == 0 else " " makefile.write(f"{bol}{concrete_output} \\\n") concrete_output_dir = posixpath.dirname(concrete_output) diff --git a/tools/gyp/pylib/gyp/input.py b/tools/gyp/pylib/gyp/input.py index 354958bfb2ab55..8f39519dee51fb 100644 --- a/tools/gyp/pylib/gyp/input.py +++ b/tools/gyp/pylib/gyp/input.py @@ -16,9 +16,9 @@ import sys import threading import traceback -from distutils.version import StrictVersion from gyp.common import GypError from gyp.common import OrderedSet +from packaging.version import Version # A list of types that are treated as linkable. linkable_types = [ @@ -225,7 +225,7 @@ def LoadOneBuildFile(build_file_path, data, aux_data, includes, is_target, check return data[build_file_path] if os.path.exists(build_file_path): - build_file_contents = open(build_file_path, encoding='utf-8').read() + build_file_contents = open(build_file_path, encoding="utf-8").read() else: raise GypError(f"{build_file_path} not found (cwd: {os.getcwd()})") @@ -870,10 +870,7 @@ def ExpandVariables(input, phase, variables, build_file): # This works around actions/rules which have more inputs than will # fit on the command line. if file_list: - if type(contents) is list: - contents_list = contents - else: - contents_list = contents.split(" ") + contents_list = contents if type(contents) is list else contents.split(" ") replacement = contents_list[0] if os.path.isabs(replacement): raise GypError('| cannot handle absolute paths, got "%s"' % replacement) @@ -961,13 +958,13 @@ def ExpandVariables(input, phase, variables, build_file): # Fix up command with platform specific workarounds. contents = FixupPlatformCommand(contents) try: - p = subprocess.Popen( + # stderr will be printed no matter what + result = subprocess.run( contents, - shell=use_shell, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - stdin=subprocess.PIPE, + shell=use_shell, cwd=build_file_dir, + check=False ) except Exception as e: raise GypError( @@ -975,19 +972,12 @@ def ExpandVariables(input, phase, variables, build_file): % (e, contents, build_file) ) - p_stdout, p_stderr = p.communicate("") - p_stdout = p_stdout.decode("utf-8") - p_stderr = p_stderr.decode("utf-8") - - if p.wait() != 0 or p_stderr: - sys.stderr.write(p_stderr) - # Simulate check_call behavior, since check_call only exists - # in python 2.5 and later. + if result.returncode > 0: raise GypError( "Call to '%s' returned exit status %d while in %s." - % (contents, p.returncode, build_file) + % (contents, result.returncode, build_file) ) - replacement = p_stdout.rstrip() + replacement = result.stdout.decode("utf-8").rstrip() cached_command_results[cache_key] = replacement else: @@ -1190,7 +1180,7 @@ def EvalSingleCondition(cond_expr, true_dict, false_dict, phase, variables, buil else: ast_code = compile(cond_expr_expanded, "", "eval") cached_conditions_asts[cond_expr_expanded] = ast_code - env = {"__builtins__": {}, "v": StrictVersion} + env = {"__builtins__": {}, "v": Version} if eval(ast_code, env, variables): return true_dict return false_dict @@ -1586,14 +1576,12 @@ def ExpandWildcardDependencies(targets, data): continue dependency_target_name = dependency_target_dict["target_name"] if ( - dependency_target != "*" - and dependency_target != dependency_target_name + dependency_target not in {"*", dependency_target_name} ): continue dependency_target_toolset = dependency_target_dict["toolset"] if ( - dependency_toolset != "*" - and dependency_toolset != dependency_target_toolset + dependency_toolset not in {"*", dependency_target_toolset} ): continue dependency = gyp.common.QualifiedTarget( @@ -1637,15 +1625,14 @@ def RemoveSelfDependencies(targets): dependencies = target_dict.get(dependency_key, []) if dependencies: for t in dependencies: - if t == target_name: - if ( - targets[t] - .get("variables", {}) - .get("prune_self_dependency", 0) - ): - target_dict[dependency_key] = Filter( - dependencies, target_name - ) + if t == target_name and ( + targets[t] + .get("variables", {}) + .get("prune_self_dependency", 0) + ): + target_dict[dependency_key] = Filter( + dependencies, target_name + ) def RemoveLinkDependenciesFromNoneTargets(targets): @@ -2245,10 +2232,7 @@ def is_in_set_or_list(x, s, items): singleton = False if type(item) in (str, int): # The cheap and easy case. - if is_paths: - to_item = MakePathRelative(to_file, fro_file, item) - else: - to_item = item + to_item = MakePathRelative(to_file, fro_file, item) if is_paths else item if not (type(item) is str and item.startswith("-")): # Any string that doesn't begin with a "-" is a singleton - it can @@ -2474,10 +2458,7 @@ def SetUpConfigurations(target, target_dict): new_configuration_dict = {} for (key, target_val) in target_dict.items(): key_ext = key[-1:] - if key_ext in key_suffixes: - key_base = key[:-1] - else: - key_base = key + key_base = key[:-1] if key_ext in key_suffixes else key if key_base not in non_configuration_keys: new_configuration_dict[key] = gyp.simple_copy.deepcopy(target_val) @@ -2489,7 +2470,7 @@ def SetUpConfigurations(target, target_dict): merged_configurations[configuration] = new_configuration_dict # Put the new configurations back into the target dict as a configuration. - for configuration in merged_configurations.keys(): + for configuration in merged_configurations: target_dict["configurations"][configuration] = merged_configurations[ configuration ] @@ -2506,19 +2487,16 @@ def SetUpConfigurations(target, target_dict): delete_keys = [] for key in target_dict: key_ext = key[-1:] - if key_ext in key_suffixes: - key_base = key[:-1] - else: - key_base = key + key_base = key[:-1] if key_ext in key_suffixes else key if key_base not in non_configuration_keys: delete_keys.append(key) for key in delete_keys: del target_dict[key] # Check the configurations to see if they contain invalid keys. - for configuration in target_dict["configurations"].keys(): + for configuration in target_dict["configurations"]: configuration_dict = target_dict["configurations"][configuration] - for key in configuration_dict.keys(): + for key in configuration_dict: if key in invalid_configuration_keys: raise GypError( "%s not allowed in the %s configuration, found in " @@ -2561,7 +2539,7 @@ def ProcessListFiltersInDict(name, the_dict): del_lists = [] for key, value in the_dict.items(): operation = key[-1] - if operation != "!" and operation != "/": + if operation not in {"!", "/"}: continue if type(value) is not list: diff --git a/tools/gyp/pylib/gyp/msvs_emulation.py b/tools/gyp/pylib/gyp/msvs_emulation.py index 5b9c2712e091b4..38fa21dd666697 100644 --- a/tools/gyp/pylib/gyp/msvs_emulation.py +++ b/tools/gyp/pylib/gyp/msvs_emulation.py @@ -93,7 +93,7 @@ def _AddPrefix(element, prefix): if element is None: return element # Note, not Iterable because we don't want to handle strings like that. - if isinstance(element, list) or isinstance(element, tuple): + if isinstance(element, (list, tuple)): return [prefix + e for e in element] else: return prefix + element @@ -105,7 +105,7 @@ def _DoRemapping(element, map): if map is not None and element is not None: if not callable(map): map = map.get # Assume it's a dict, otherwise a callable to do the remap. - if isinstance(element, list) or isinstance(element, tuple): + if isinstance(element, (list, tuple)): element = filter(None, [map(elem) for elem in element]) else: element = map(element) @@ -117,7 +117,7 @@ def _AppendOrReturn(append, element): then add |element| to it, adding each item in |element| if it's a list or tuple.""" if append is not None and element is not None: - if isinstance(element, list) or isinstance(element, tuple): + if isinstance(element, (list, tuple)): append.extend(element) else: append.append(element) @@ -183,7 +183,7 @@ def ExtractSharedMSVSSystemIncludes(configs, generator_flags): expanded_system_includes = OrderedSet( [ExpandMacros(include, env) for include in all_system_includes] ) - if any(["$" in include for include in expanded_system_includes]): + if any("$" in include for include in expanded_system_includes): # Some path relies on target-specific variables, bail. return None @@ -255,10 +255,7 @@ def GetVSMacroEnv(self, base_to_build=None, config=None): """Get a dict of variables mapping internal VS macro names to their gyp equivalents.""" target_arch = self.GetArch(config) - if target_arch == "x86": - target_platform = "Win32" - else: - target_platform = target_arch + target_platform = "Win32" if target_arch == "x86" else target_arch target_name = self.spec.get("product_prefix", "") + self.spec.get( "product_name", self.spec["target_name"] ) @@ -738,10 +735,7 @@ def GetLdflags( # TODO(scottmg): This should sort of be somewhere else (not really a flag). ld("AdditionalDependencies", prefix="") - if self.GetArch(config) == "x86": - safeseh_default = "true" - else: - safeseh_default = None + safeseh_default = "true" if self.GetArch(config) == "x86" else None ld( "ImageHasSafeExceptionHandlers", map={"false": ":NO", "true": ""}, @@ -960,15 +954,12 @@ def GetRuleShellFlags(self, rule): def _HasExplicitRuleForExtension(self, spec, extension): """Determine if there's an explicit rule for a particular extension.""" - for rule in spec.get("rules", []): - if rule["extension"] == extension: - return True - return False + return any(rule["extension"] == extension for rule in spec.get("rules", [])) def _HasExplicitIdlActions(self, spec): """Determine if an action should not run midl for .idl files.""" return any( - [action.get("explicit_idl_action", 0) for action in spec.get("actions", [])] + action.get("explicit_idl_action", 0) for action in spec.get("actions", []) ) def HasExplicitIdlRulesOrActions(self, spec): diff --git a/tools/gyp/pylib/gyp/win_tool.py b/tools/gyp/pylib/gyp/win_tool.py index 638eee40029411..171d7295747fcd 100755 --- a/tools/gyp/pylib/gyp/win_tool.py +++ b/tools/gyp/pylib/gyp/win_tool.py @@ -219,11 +219,10 @@ def ExecLinkWithManifests( our_manifest = "%(out)s.manifest" % variables # Load and normalize the manifests. mt.exe sometimes removes whitespace, # and sometimes doesn't unfortunately. - with open(our_manifest) as our_f: - with open(assert_manifest) as assert_f: - translator = str.maketrans('', '', string.whitespace) - our_data = our_f.read().translate(translator) - assert_data = assert_f.read().translate(translator) + with open(our_manifest) as our_f, open(assert_manifest) as assert_f: + translator = str.maketrans("", "", string.whitespace) + our_data = our_f.read().translate(translator) + assert_data = assert_f.read().translate(translator) if our_data != assert_data: os.unlink(out) diff --git a/tools/gyp/pylib/gyp/xcode_emulation.py b/tools/gyp/pylib/gyp/xcode_emulation.py index a75d8eeab7bda0..29caf1ce7fbb97 100644 --- a/tools/gyp/pylib/gyp/xcode_emulation.py +++ b/tools/gyp/pylib/gyp/xcode_emulation.py @@ -685,10 +685,7 @@ def GetCflags(self, configname, arch=None): if platform_root: cflags.append("-F" + platform_root + "/Developer/Library/Frameworks/") - if sdk_root: - framework_root = sdk_root - else: - framework_root = "" + framework_root = sdk_root if sdk_root else "" config = self.spec["configurations"][self.configname] framework_dirs = config.get("mac_framework_dirs", []) for directory in framework_dirs: @@ -1248,10 +1245,7 @@ def _AdjustLibrary(self, library, config_name=None): l_flag = "-framework " + os.path.splitext(os.path.basename(library))[0] else: m = self.library_re.match(library) - if m: - l_flag = "-l" + m.group(1) - else: - l_flag = library + l_flag = "-l" + m.group(1) if m else library sdk_root = self._SdkPath(config_name) if not sdk_root: @@ -1545,7 +1539,7 @@ def CLTVersion(): except GypError: continue - regex = re.compile(r'Command Line Tools for Xcode\s+(?P\S+)') + regex = re.compile(r"Command Line Tools for Xcode\s+(?P\S+)") try: output = GetStdout(["/usr/sbin/softwareupdate", "--history"]) return re.search(regex, output).groupdict()["version"] diff --git a/tools/gyp/pylib/gyp/xcodeproj_file.py b/tools/gyp/pylib/gyp/xcodeproj_file.py index 076eea37211179..33c667c266bf69 100644 --- a/tools/gyp/pylib/gyp/xcodeproj_file.py +++ b/tools/gyp/pylib/gyp/xcodeproj_file.py @@ -971,7 +971,7 @@ def __init__(self, properties=None, id=None, parent=None): if "path" in self._properties and "name" not in self._properties: path = self._properties["path"] name = posixpath.basename(path) - if name != "" and path != name: + if name not in ("", path): self.SetProperty("name", name) if "path" in self._properties and ( @@ -2355,9 +2355,8 @@ def __init__( # property was supplied, set "productName" if it is not present. Also set # the "PRODUCT_NAME" build setting in each configuration, but only if # the setting is not present in any build configuration. - if "name" in self._properties: - if "productName" not in self._properties: - self.SetProperty("productName", self._properties["name"]) + if "name" in self._properties and "productName" not in self._properties: + self.SetProperty("productName", self._properties["name"]) if "productName" in self._properties: if "buildConfigurationList" in self._properties: @@ -2547,13 +2546,12 @@ def __init__( force_extension = suffix[1:] if ( - self._properties["productType"] - == "com.apple.product-type-bundle.unit.test" - or self._properties["productType"] - == "com.apple.product-type-bundle.ui-testing" - ): - if force_extension is None: - force_extension = suffix[1:] + self._properties["productType"] in { + "com.apple.product-type-bundle.unit.test", + "com.apple.product-type-bundle.ui-testing" + } + ) and force_extension is None: + force_extension = suffix[1:] if force_extension is not None: # If it's a wrapper (bundle), set WRAPPER_EXTENSION. @@ -2636,10 +2634,13 @@ def HeadersPhase(self): # frameworks phases, if any. insert_at = len(self._properties["buildPhases"]) for index, phase in enumerate(self._properties["buildPhases"]): - if ( - isinstance(phase, PBXResourcesBuildPhase) - or isinstance(phase, PBXSourcesBuildPhase) - or isinstance(phase, PBXFrameworksBuildPhase) + if isinstance( + phase, + ( + PBXResourcesBuildPhase, + PBXSourcesBuildPhase, + PBXFrameworksBuildPhase, + ), ): insert_at = index break @@ -2658,9 +2659,7 @@ def ResourcesPhase(self): # phases, if any. insert_at = len(self._properties["buildPhases"]) for index, phase in enumerate(self._properties["buildPhases"]): - if isinstance(phase, PBXSourcesBuildPhase) or isinstance( - phase, PBXFrameworksBuildPhase - ): + if isinstance(phase, (PBXSourcesBuildPhase, PBXFrameworksBuildPhase)): insert_at = index break @@ -2701,8 +2700,10 @@ def AddDependency(self, other): other._properties["productType"] == static_library_type or ( ( - other._properties["productType"] == shared_library_type - or other._properties["productType"] == framework_type + other._properties["productType"] in { + shared_library_type, + framework_type + } ) and ( (not other.HasBuildSetting("MACH_O_TYPE")) @@ -2770,7 +2771,7 @@ def __init__(self, properties=None, id=None, parent=None, path=None): self.path = path self._other_pbxprojects = {} # super - return XCContainerPortal.__init__(self, properties, id, parent) + XCContainerPortal.__init__(self, properties, id, parent) def Name(self): name = self.path @@ -2990,7 +2991,7 @@ def AddOrGetProjectReference(self, other_pbxproject): # Xcode seems to sort this list case-insensitively self._properties["projectReferences"] = sorted( self._properties["projectReferences"], - key=lambda x: x["ProjectRef"].Name().lower + key=lambda x: x["ProjectRef"].Name().lower() ) else: # The link already exists. Pull out the relevnt data. diff --git a/tools/gyp/pylib/packaging/LICENSE b/tools/gyp/pylib/packaging/LICENSE new file mode 100644 index 00000000000000..6f62d44e4ef733 --- /dev/null +++ b/tools/gyp/pylib/packaging/LICENSE @@ -0,0 +1,3 @@ +This software is made available under the terms of *either* of the licenses +found in LICENSE.APACHE or LICENSE.BSD. Contributions to this software is made +under the terms of *both* these licenses. diff --git a/tools/gyp/pylib/packaging/LICENSE.APACHE b/tools/gyp/pylib/packaging/LICENSE.APACHE new file mode 100644 index 00000000000000..f433b1a53f5b83 --- /dev/null +++ b/tools/gyp/pylib/packaging/LICENSE.APACHE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/tools/gyp/pylib/packaging/LICENSE.BSD b/tools/gyp/pylib/packaging/LICENSE.BSD new file mode 100644 index 00000000000000..42ce7b75c92fb0 --- /dev/null +++ b/tools/gyp/pylib/packaging/LICENSE.BSD @@ -0,0 +1,23 @@ +Copyright (c) Donald Stufft and individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tools/gyp/pylib/packaging/__init__.py b/tools/gyp/pylib/packaging/__init__.py new file mode 100644 index 00000000000000..5fd91838316fbe --- /dev/null +++ b/tools/gyp/pylib/packaging/__init__.py @@ -0,0 +1,15 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +__title__ = "packaging" +__summary__ = "Core utilities for Python packages" +__uri__ = "https://github.com/pypa/packaging" + +__version__ = "23.3.dev0" + +__author__ = "Donald Stufft and individual contributors" +__email__ = "donald@stufft.io" + +__license__ = "BSD-2-Clause or Apache-2.0" +__copyright__ = "2014 %s" % __author__ diff --git a/tools/gyp/pylib/packaging/_elffile.py b/tools/gyp/pylib/packaging/_elffile.py new file mode 100644 index 00000000000000..6fb19b30bb53c1 --- /dev/null +++ b/tools/gyp/pylib/packaging/_elffile.py @@ -0,0 +1,108 @@ +""" +ELF file parser. + +This provides a class ``ELFFile`` that parses an ELF executable in a similar +interface to ``ZipFile``. Only the read interface is implemented. + +Based on: https://gist.github.com/lyssdod/f51579ae8d93c8657a5564aefc2ffbca +ELF header: https://refspecs.linuxfoundation.org/elf/gabi4+/ch4.eheader.html +""" + +import enum +import os +import struct +from typing import IO, Optional, Tuple + + +class ELFInvalid(ValueError): + pass + + +class EIClass(enum.IntEnum): + C32 = 1 + C64 = 2 + + +class EIData(enum.IntEnum): + Lsb = 1 + Msb = 2 + + +class EMachine(enum.IntEnum): + I386 = 3 + S390 = 22 + Arm = 40 + X8664 = 62 + AArc64 = 183 + + +class ELFFile: + """ + Representation of an ELF executable. + """ + + def __init__(self, f: IO[bytes]) -> None: + self._f = f + + try: + ident = self._read("16B") + except struct.error: + raise ELFInvalid("unable to parse identification") + magic = bytes(ident[:4]) + if magic != b"\x7fELF": + raise ELFInvalid(f"invalid magic: {magic!r}") + + self.capacity = ident[4] # Format for program header (bitness). + self.encoding = ident[5] # Data structure encoding (endianness). + + try: + # e_fmt: Format for program header. + # p_fmt: Format for section header. + # p_idx: Indexes to find p_type, p_offset, and p_filesz. + e_fmt, self._p_fmt, self._p_idx = { + (1, 1): ("HHIIIIIHHH", ">IIIIIIII", (0, 1, 4)), # 32-bit MSB. + (2, 1): ("HHIQQQIHHH", ">IIQQQQQQ", (0, 2, 5)), # 64-bit MSB. + }[(self.capacity, self.encoding)] + except KeyError: + raise ELFInvalid( + f"unrecognized capacity ({self.capacity}) or " + f"encoding ({self.encoding})" + ) + + try: + ( + _, + self.machine, # Architecture type. + _, + _, + self._e_phoff, # Offset of program header. + _, + self.flags, # Processor-specific flags. + _, + self._e_phentsize, # Size of section. + self._e_phnum, # Number of sections. + ) = self._read(e_fmt) + except struct.error as e: + raise ELFInvalid("unable to parse machine and section information") from e + + def _read(self, fmt: str) -> Tuple[int, ...]: + return struct.unpack(fmt, self._f.read(struct.calcsize(fmt))) + + @property + def interpreter(self) -> Optional[str]: + """ + The path recorded in the ``PT_INTERP`` section header. + """ + for index in range(self._e_phnum): + self._f.seek(self._e_phoff + self._e_phentsize * index) + try: + data = self._read(self._p_fmt) + except struct.error: + continue + if data[self._p_idx[0]] != 3: # Not PT_INTERP. + continue + self._f.seek(data[self._p_idx[1]]) + return os.fsdecode(self._f.read(data[self._p_idx[2]])).strip("\0") + return None diff --git a/tools/gyp/pylib/packaging/_manylinux.py b/tools/gyp/pylib/packaging/_manylinux.py new file mode 100644 index 00000000000000..3705d50db9193e --- /dev/null +++ b/tools/gyp/pylib/packaging/_manylinux.py @@ -0,0 +1,252 @@ +import collections +import contextlib +import functools +import os +import re +import sys +import warnings +from typing import Dict, Generator, Iterator, NamedTuple, Optional, Sequence, Tuple + +from ._elffile import EIClass, EIData, ELFFile, EMachine + +EF_ARM_ABIMASK = 0xFF000000 +EF_ARM_ABI_VER5 = 0x05000000 +EF_ARM_ABI_FLOAT_HARD = 0x00000400 + + +# `os.PathLike` not a generic type until Python 3.9, so sticking with `str` +# as the type for `path` until then. +@contextlib.contextmanager +def _parse_elf(path: str) -> Generator[Optional[ELFFile], None, None]: + try: + with open(path, "rb") as f: + yield ELFFile(f) + except (OSError, TypeError, ValueError): + yield None + + +def _is_linux_armhf(executable: str) -> bool: + # hard-float ABI can be detected from the ELF header of the running + # process + # https://static.docs.arm.com/ihi0044/g/aaelf32.pdf + with _parse_elf(executable) as f: + return ( + f is not None + and f.capacity == EIClass.C32 + and f.encoding == EIData.Lsb + and f.machine == EMachine.Arm + and f.flags & EF_ARM_ABIMASK == EF_ARM_ABI_VER5 + and f.flags & EF_ARM_ABI_FLOAT_HARD == EF_ARM_ABI_FLOAT_HARD + ) + + +def _is_linux_i686(executable: str) -> bool: + with _parse_elf(executable) as f: + return ( + f is not None + and f.capacity == EIClass.C32 + and f.encoding == EIData.Lsb + and f.machine == EMachine.I386 + ) + + +def _have_compatible_abi(executable: str, archs: Sequence[str]) -> bool: + if "armv7l" in archs: + return _is_linux_armhf(executable) + if "i686" in archs: + return _is_linux_i686(executable) + allowed_archs = {"x86_64", "aarch64", "ppc64", "ppc64le", "s390x", "loongarch64"} + return any(arch in allowed_archs for arch in archs) + + +# If glibc ever changes its major version, we need to know what the last +# minor version was, so we can build the complete list of all versions. +# For now, guess what the highest minor version might be, assume it will +# be 50 for testing. Once this actually happens, update the dictionary +# with the actual value. +_LAST_GLIBC_MINOR: Dict[int, int] = collections.defaultdict(lambda: 50) + + +class _GLibCVersion(NamedTuple): + major: int + minor: int + + +def _glibc_version_string_confstr() -> Optional[str]: + """ + Primary implementation of glibc_version_string using os.confstr. + """ + # os.confstr is quite a bit faster than ctypes.DLL. It's also less likely + # to be broken or missing. This strategy is used in the standard library + # platform module. + # https://github.com/python/cpython/blob/fcf1d003bf4f0100c/Lib/platform.py#L175-L183 + try: + # Should be a string like "glibc 2.17". + version_string: str = getattr(os, "confstr")("CS_GNU_LIBC_VERSION") + assert version_string is not None + _, version = version_string.rsplit() + except (AssertionError, AttributeError, OSError, ValueError): + # os.confstr() or CS_GNU_LIBC_VERSION not available (or a bad value)... + return None + return version + + +def _glibc_version_string_ctypes() -> Optional[str]: + """ + Fallback implementation of glibc_version_string using ctypes. + """ + try: + import ctypes + except ImportError: + return None + + # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen + # manpage says, "If filename is NULL, then the returned handle is for the + # main program". This way we can let the linker do the work to figure out + # which libc our process is actually using. + # + # We must also handle the special case where the executable is not a + # dynamically linked executable. This can occur when using musl libc, + # for example. In this situation, dlopen() will error, leading to an + # OSError. Interestingly, at least in the case of musl, there is no + # errno set on the OSError. The single string argument used to construct + # OSError comes from libc itself and is therefore not portable to + # hard code here. In any case, failure to call dlopen() means we + # can proceed, so we bail on our attempt. + try: + process_namespace = ctypes.CDLL(None) + except OSError: + return None + + try: + gnu_get_libc_version = process_namespace.gnu_get_libc_version + except AttributeError: + # Symbol doesn't exist -> therefore, we are not linked to + # glibc. + return None + + # Call gnu_get_libc_version, which returns a string like "2.5" + gnu_get_libc_version.restype = ctypes.c_char_p + version_str: str = gnu_get_libc_version() + # py2 / py3 compatibility: + if not isinstance(version_str, str): + version_str = version_str.decode("ascii") + + return version_str + + +def _glibc_version_string() -> Optional[str]: + """Returns glibc version string, or None if not using glibc.""" + return _glibc_version_string_confstr() or _glibc_version_string_ctypes() + + +def _parse_glibc_version(version_str: str) -> Tuple[int, int]: + """Parse glibc version. + + We use a regexp instead of str.split because we want to discard any + random junk that might come after the minor version -- this might happen + in patched/forked versions of glibc (e.g. Linaro's version of glibc + uses version strings like "2.20-2014.11"). See gh-3588. + """ + m = re.match(r"(?P[0-9]+)\.(?P[0-9]+)", version_str) + if not m: + warnings.warn( + f"Expected glibc version with 2 components major.minor," + f" got: {version_str}", + RuntimeWarning, + ) + return -1, -1 + return int(m.group("major")), int(m.group("minor")) + + +@functools.lru_cache() +def _get_glibc_version() -> Tuple[int, int]: + version_str = _glibc_version_string() + if version_str is None: + return (-1, -1) + return _parse_glibc_version(version_str) + + +# From PEP 513, PEP 600 +def _is_compatible(arch: str, version: _GLibCVersion) -> bool: + sys_glibc = _get_glibc_version() + if sys_glibc < version: + return False + # Check for presence of _manylinux module. + try: + import _manylinux # noqa + except ImportError: + return True + if hasattr(_manylinux, "manylinux_compatible"): + result = _manylinux.manylinux_compatible(version[0], version[1], arch) + if result is not None: + return bool(result) + return True + if version == _GLibCVersion(2, 5): + if hasattr(_manylinux, "manylinux1_compatible"): + return bool(_manylinux.manylinux1_compatible) + if version == _GLibCVersion(2, 12): + if hasattr(_manylinux, "manylinux2010_compatible"): + return bool(_manylinux.manylinux2010_compatible) + if version == _GLibCVersion(2, 17): + if hasattr(_manylinux, "manylinux2014_compatible"): + return bool(_manylinux.manylinux2014_compatible) + return True + + +_LEGACY_MANYLINUX_MAP = { + # CentOS 7 w/ glibc 2.17 (PEP 599) + (2, 17): "manylinux2014", + # CentOS 6 w/ glibc 2.12 (PEP 571) + (2, 12): "manylinux2010", + # CentOS 5 w/ glibc 2.5 (PEP 513) + (2, 5): "manylinux1", +} + + +def platform_tags(archs: Sequence[str]) -> Iterator[str]: + """Generate manylinux tags compatible to the current platform. + + :param archs: Sequence of compatible architectures. + The first one shall be the closest to the actual architecture and be the part of + platform tag after the ``linux_`` prefix, e.g. ``x86_64``. + The ``linux_`` prefix is assumed as a prerequisite for the current platform to + be manylinux-compatible. + + :returns: An iterator of compatible manylinux tags. + """ + if not _have_compatible_abi(sys.executable, archs): + return + # Oldest glibc to be supported regardless of architecture is (2, 17). + too_old_glibc2 = _GLibCVersion(2, 16) + if set(archs) & {"x86_64", "i686"}: + # On x86/i686 also oldest glibc to be supported is (2, 5). + too_old_glibc2 = _GLibCVersion(2, 4) + current_glibc = _GLibCVersion(*_get_glibc_version()) + glibc_max_list = [current_glibc] + # We can assume compatibility across glibc major versions. + # https://sourceware.org/bugzilla/show_bug.cgi?id=24636 + # + # Build a list of maximum glibc versions so that we can + # output the canonical list of all glibc from current_glibc + # down to too_old_glibc2, including all intermediary versions. + for glibc_major in range(current_glibc.major - 1, 1, -1): + glibc_minor = _LAST_GLIBC_MINOR[glibc_major] + glibc_max_list.append(_GLibCVersion(glibc_major, glibc_minor)) + for arch in archs: + for glibc_max in glibc_max_list: + if glibc_max.major == too_old_glibc2.major: + min_minor = too_old_glibc2.minor + else: + # For other glibc major versions oldest supported is (x, 0). + min_minor = -1 + for glibc_minor in range(glibc_max.minor, min_minor, -1): + glibc_version = _GLibCVersion(glibc_max.major, glibc_minor) + tag = "manylinux_{}_{}".format(*glibc_version) + if _is_compatible(arch, glibc_version): + yield f"{tag}_{arch}" + # Handle the legacy manylinux1, manylinux2010, manylinux2014 tags. + if glibc_version in _LEGACY_MANYLINUX_MAP: + legacy_tag = _LEGACY_MANYLINUX_MAP[glibc_version] + if _is_compatible(arch, glibc_version): + yield f"{legacy_tag}_{arch}" diff --git a/tools/gyp/pylib/packaging/_musllinux.py b/tools/gyp/pylib/packaging/_musllinux.py new file mode 100644 index 00000000000000..86419df9d7087f --- /dev/null +++ b/tools/gyp/pylib/packaging/_musllinux.py @@ -0,0 +1,83 @@ +"""PEP 656 support. + +This module implements logic to detect if the currently running Python is +linked against musl, and what musl version is used. +""" + +import functools +import re +import subprocess +import sys +from typing import Iterator, NamedTuple, Optional, Sequence + +from ._elffile import ELFFile + + +class _MuslVersion(NamedTuple): + major: int + minor: int + + +def _parse_musl_version(output: str) -> Optional[_MuslVersion]: + lines = [n for n in (n.strip() for n in output.splitlines()) if n] + if len(lines) < 2 or lines[0][:4] != "musl": + return None + m = re.match(r"Version (\d+)\.(\d+)", lines[1]) + if not m: + return None + return _MuslVersion(major=int(m.group(1)), minor=int(m.group(2))) + + +@functools.lru_cache() +def _get_musl_version(executable: str) -> Optional[_MuslVersion]: + """Detect currently-running musl runtime version. + + This is done by checking the specified executable's dynamic linking + information, and invoking the loader to parse its output for a version + string. If the loader is musl, the output would be something like:: + + musl libc (x86_64) + Version 1.2.2 + Dynamic Program Loader + """ + try: + with open(executable, "rb") as f: + ld = ELFFile(f).interpreter + except (OSError, TypeError, ValueError): + return None + if ld is None or "musl" not in ld: + return None + proc = subprocess.run([ld], stderr=subprocess.PIPE, text=True) + return _parse_musl_version(proc.stderr) + + +def platform_tags(archs: Sequence[str]) -> Iterator[str]: + """Generate musllinux tags compatible to the current platform. + + :param archs: Sequence of compatible architectures. + The first one shall be the closest to the actual architecture and be the part of + platform tag after the ``linux_`` prefix, e.g. ``x86_64``. + The ``linux_`` prefix is assumed as a prerequisite for the current platform to + be musllinux-compatible. + + :returns: An iterator of compatible musllinux tags. + """ + sys_musl = _get_musl_version(sys.executable) + if sys_musl is None: # Python not dynamically linked against musl. + return + for arch in archs: + for minor in range(sys_musl.minor, -1, -1): + yield f"musllinux_{sys_musl.major}_{minor}_{arch}" + + +if __name__ == "__main__": # pragma: no cover + import sysconfig + + plat = sysconfig.get_platform() + assert plat.startswith("linux-"), "not linux" + + print("plat:", plat) + print("musl:", _get_musl_version(sys.executable)) + print("tags:", end=" ") + for t in platform_tags(re.sub(r"[.-]", "_", plat.split("-", 1)[-1])): + print(t, end="\n ") diff --git a/tools/gyp/pylib/packaging/_parser.py b/tools/gyp/pylib/packaging/_parser.py new file mode 100644 index 00000000000000..4576981c2dd755 --- /dev/null +++ b/tools/gyp/pylib/packaging/_parser.py @@ -0,0 +1,359 @@ +"""Handwritten parser of dependency specifiers. + +The docstring for each __parse_* function contains ENBF-inspired grammar representing +the implementation. +""" + +import ast +from typing import Any, List, NamedTuple, Optional, Tuple, Union + +from ._tokenizer import DEFAULT_RULES, Tokenizer + + +class Node: + def __init__(self, value: str) -> None: + self.value = value + + def __str__(self) -> str: + return self.value + + def __repr__(self) -> str: + return f"<{self.__class__.__name__}('{self}')>" + + def serialize(self) -> str: + raise NotImplementedError + + +class Variable(Node): + def serialize(self) -> str: + return str(self) + + +class Value(Node): + def serialize(self) -> str: + return f'"{self}"' + + +class Op(Node): + def serialize(self) -> str: + return str(self) + + +MarkerVar = Union[Variable, Value] +MarkerItem = Tuple[MarkerVar, Op, MarkerVar] +# MarkerAtom = Union[MarkerItem, List["MarkerAtom"]] +# MarkerList = List[Union["MarkerList", MarkerAtom, str]] +# mypy does not support recursive type definition +# https://github.com/python/mypy/issues/731 +MarkerAtom = Any +MarkerList = List[Any] + + +class ParsedRequirement(NamedTuple): + name: str + url: str + extras: List[str] + specifier: str + marker: Optional[MarkerList] + + +# -------------------------------------------------------------------------------------- +# Recursive descent parser for dependency specifier +# -------------------------------------------------------------------------------------- +def parse_requirement(source: str) -> ParsedRequirement: + return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES)) + + +def _parse_requirement(tokenizer: Tokenizer) -> ParsedRequirement: + """ + requirement = WS? IDENTIFIER WS? extras WS? requirement_details + """ + tokenizer.consume("WS") + + name_token = tokenizer.expect( + "IDENTIFIER", expected="package name at the start of dependency specifier" + ) + name = name_token.text + tokenizer.consume("WS") + + extras = _parse_extras(tokenizer) + tokenizer.consume("WS") + + url, specifier, marker = _parse_requirement_details(tokenizer) + tokenizer.expect("END", expected="end of dependency specifier") + + return ParsedRequirement(name, url, extras, specifier, marker) + + +def _parse_requirement_details( + tokenizer: Tokenizer, +) -> Tuple[str, str, Optional[MarkerList]]: + """ + requirement_details = AT URL (WS requirement_marker?)? + | specifier WS? (requirement_marker)? + """ + + specifier = "" + url = "" + marker = None + + if tokenizer.check("AT"): + tokenizer.read() + tokenizer.consume("WS") + + url_start = tokenizer.position + url = tokenizer.expect("URL", expected="URL after @").text + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + tokenizer.expect("WS", expected="whitespace after URL") + + # The input might end after whitespace. + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + marker = _parse_requirement_marker( + tokenizer, span_start=url_start, after="URL and whitespace" + ) + else: + specifier_start = tokenizer.position + specifier = _parse_specifier(tokenizer) + tokenizer.consume("WS") + + if tokenizer.check("END", peek=True): + return (url, specifier, marker) + + marker = _parse_requirement_marker( + tokenizer, + span_start=specifier_start, + after=( + "version specifier" + if specifier + else "name and no valid version specifier" + ), + ) + + return (url, specifier, marker) + + +def _parse_requirement_marker( + tokenizer: Tokenizer, *, span_start: int, after: str +) -> MarkerList: + """ + requirement_marker = SEMICOLON marker WS? + """ + + if not tokenizer.check("SEMICOLON"): + tokenizer.raise_syntax_error( + f"Expected end or semicolon (after {after})", + span_start=span_start, + ) + tokenizer.read() + + marker = _parse_marker(tokenizer) + tokenizer.consume("WS") + + return marker + + +def _parse_extras(tokenizer: Tokenizer) -> List[str]: + """ + extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)? + """ + if not tokenizer.check("LEFT_BRACKET", peek=True): + return [] + + with tokenizer.enclosing_tokens( + "LEFT_BRACKET", + "RIGHT_BRACKET", + around="extras", + ): + tokenizer.consume("WS") + extras = _parse_extras_list(tokenizer) + tokenizer.consume("WS") + + return extras + + +def _parse_extras_list(tokenizer: Tokenizer) -> List[str]: + """ + extras_list = identifier (wsp* ',' wsp* identifier)* + """ + extras: List[str] = [] + + if not tokenizer.check("IDENTIFIER"): + return extras + + extras.append(tokenizer.read().text) + + while True: + tokenizer.consume("WS") + if tokenizer.check("IDENTIFIER", peek=True): + tokenizer.raise_syntax_error("Expected comma between extra names") + elif not tokenizer.check("COMMA"): + break + + tokenizer.read() + tokenizer.consume("WS") + + extra_token = tokenizer.expect("IDENTIFIER", expected="extra name after comma") + extras.append(extra_token.text) + + return extras + + +def _parse_specifier(tokenizer: Tokenizer) -> str: + """ + specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS + | WS? version_many WS? + """ + with tokenizer.enclosing_tokens( + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + around="version specifier", + ): + tokenizer.consume("WS") + parsed_specifiers = _parse_version_many(tokenizer) + tokenizer.consume("WS") + + return parsed_specifiers + + +def _parse_version_many(tokenizer: Tokenizer) -> str: + """ + version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)? + """ + parsed_specifiers = "" + while tokenizer.check("SPECIFIER"): + span_start = tokenizer.position + parsed_specifiers += tokenizer.read().text + if tokenizer.check("VERSION_PREFIX_TRAIL", peek=True): + tokenizer.raise_syntax_error( + ".* suffix can only be used with `==` or `!=` operators", + span_start=span_start, + span_end=tokenizer.position + 1, + ) + if tokenizer.check("VERSION_LOCAL_LABEL_TRAIL", peek=True): + tokenizer.raise_syntax_error( + "Local version label can only be used with `==` or `!=` operators", + span_start=span_start, + span_end=tokenizer.position, + ) + tokenizer.consume("WS") + if not tokenizer.check("COMMA"): + break + parsed_specifiers += tokenizer.read().text + tokenizer.consume("WS") + + return parsed_specifiers + + +# -------------------------------------------------------------------------------------- +# Recursive descent parser for marker expression +# -------------------------------------------------------------------------------------- +def parse_marker(source: str) -> MarkerList: + return _parse_full_marker(Tokenizer(source, rules=DEFAULT_RULES)) + + +def _parse_full_marker(tokenizer: Tokenizer) -> MarkerList: + retval = _parse_marker(tokenizer) + tokenizer.expect("END", expected="end of marker expression") + return retval + + +def _parse_marker(tokenizer: Tokenizer) -> MarkerList: + """ + marker = marker_atom (BOOLOP marker_atom)+ + """ + expression = [_parse_marker_atom(tokenizer)] + while tokenizer.check("BOOLOP"): + token = tokenizer.read() + expr_right = _parse_marker_atom(tokenizer) + expression.extend((token.text, expr_right)) + return expression + + +def _parse_marker_atom(tokenizer: Tokenizer) -> MarkerAtom: + """ + marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS? + | WS? marker_item WS? + """ + + tokenizer.consume("WS") + if tokenizer.check("LEFT_PARENTHESIS", peek=True): + with tokenizer.enclosing_tokens( + "LEFT_PARENTHESIS", + "RIGHT_PARENTHESIS", + around="marker expression", + ): + tokenizer.consume("WS") + marker: MarkerAtom = _parse_marker(tokenizer) + tokenizer.consume("WS") + else: + marker = _parse_marker_item(tokenizer) + tokenizer.consume("WS") + return marker + + +def _parse_marker_item(tokenizer: Tokenizer) -> MarkerItem: + """ + marker_item = WS? marker_var WS? marker_op WS? marker_var WS? + """ + tokenizer.consume("WS") + marker_var_left = _parse_marker_var(tokenizer) + tokenizer.consume("WS") + marker_op = _parse_marker_op(tokenizer) + tokenizer.consume("WS") + marker_var_right = _parse_marker_var(tokenizer) + tokenizer.consume("WS") + return (marker_var_left, marker_op, marker_var_right) + + +def _parse_marker_var(tokenizer: Tokenizer) -> MarkerVar: + """ + marker_var = VARIABLE | QUOTED_STRING + """ + if tokenizer.check("VARIABLE"): + return process_env_var(tokenizer.read().text.replace(".", "_")) + elif tokenizer.check("QUOTED_STRING"): + return process_python_str(tokenizer.read().text) + else: + tokenizer.raise_syntax_error( + message="Expected a marker variable or quoted string" + ) + + +def process_env_var(env_var: str) -> Variable: + if ( + env_var == "platform_python_implementation" + or env_var == "python_implementation" + ): + return Variable("platform_python_implementation") + else: + return Variable(env_var) + + +def process_python_str(python_str: str) -> Value: + value = ast.literal_eval(python_str) + return Value(str(value)) + + +def _parse_marker_op(tokenizer: Tokenizer) -> Op: + """ + marker_op = IN | NOT IN | OP + """ + if tokenizer.check("IN"): + tokenizer.read() + return Op("in") + elif tokenizer.check("NOT"): + tokenizer.read() + tokenizer.expect("WS", expected="whitespace after 'not'") + tokenizer.expect("IN", expected="'in' after 'not'") + return Op("not in") + elif tokenizer.check("OP"): + return Op(tokenizer.read().text) + else: + return tokenizer.raise_syntax_error( + "Expected marker operator, one of " + "<=, <, !=, ==, >=, >, ~=, ===, in, not in" + ) diff --git a/tools/gyp/pylib/packaging/_structures.py b/tools/gyp/pylib/packaging/_structures.py new file mode 100644 index 00000000000000..90a6465f9682c8 --- /dev/null +++ b/tools/gyp/pylib/packaging/_structures.py @@ -0,0 +1,61 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + + +class InfinityType: + def __repr__(self) -> str: + return "Infinity" + + def __hash__(self) -> int: + return hash(repr(self)) + + def __lt__(self, other: object) -> bool: + return False + + def __le__(self, other: object) -> bool: + return False + + def __eq__(self, other: object) -> bool: + return isinstance(other, self.__class__) + + def __gt__(self, other: object) -> bool: + return True + + def __ge__(self, other: object) -> bool: + return True + + def __neg__(self: object) -> "NegativeInfinityType": + return NegativeInfinity + + +Infinity = InfinityType() + + +class NegativeInfinityType: + def __repr__(self) -> str: + return "-Infinity" + + def __hash__(self) -> int: + return hash(repr(self)) + + def __lt__(self, other: object) -> bool: + return True + + def __le__(self, other: object) -> bool: + return True + + def __eq__(self, other: object) -> bool: + return isinstance(other, self.__class__) + + def __gt__(self, other: object) -> bool: + return False + + def __ge__(self, other: object) -> bool: + return False + + def __neg__(self: object) -> InfinityType: + return Infinity + + +NegativeInfinity = NegativeInfinityType() diff --git a/tools/gyp/pylib/packaging/_tokenizer.py b/tools/gyp/pylib/packaging/_tokenizer.py new file mode 100644 index 00000000000000..dd0d648d49a7c1 --- /dev/null +++ b/tools/gyp/pylib/packaging/_tokenizer.py @@ -0,0 +1,192 @@ +import contextlib +import re +from dataclasses import dataclass +from typing import Dict, Iterator, NoReturn, Optional, Tuple, Union + +from .specifiers import Specifier + + +@dataclass +class Token: + name: str + text: str + position: int + + +class ParserSyntaxError(Exception): + """The provided source text could not be parsed correctly.""" + + def __init__( + self, + message: str, + *, + source: str, + span: Tuple[int, int], + ) -> None: + self.span = span + self.message = message + self.source = source + + super().__init__() + + def __str__(self) -> str: + marker = " " * self.span[0] + "~" * (self.span[1] - self.span[0]) + "^" + return "\n ".join([self.message, self.source, marker]) + + +DEFAULT_RULES: "Dict[str, Union[str, re.Pattern[str]]]" = { + "LEFT_PARENTHESIS": r"\(", + "RIGHT_PARENTHESIS": r"\)", + "LEFT_BRACKET": r"\[", + "RIGHT_BRACKET": r"\]", + "SEMICOLON": r";", + "COMMA": r",", + "QUOTED_STRING": re.compile( + r""" + ( + ('[^']*') + | + ("[^"]*") + ) + """, + re.VERBOSE, + ), + "OP": r"(===|==|~=|!=|<=|>=|<|>)", + "BOOLOP": r"\b(or|and)\b", + "IN": r"\bin\b", + "NOT": r"\bnot\b", + "VARIABLE": re.compile( + r""" + \b( + python_version + |python_full_version + |os[._]name + |sys[._]platform + |platform_(release|system) + |platform[._](version|machine|python_implementation) + |python_implementation + |implementation_(name|version) + |extra + )\b + """, + re.VERBOSE, + ), + "SPECIFIER": re.compile( + Specifier._operator_regex_str + Specifier._version_regex_str, + re.VERBOSE | re.IGNORECASE, + ), + "AT": r"\@", + "URL": r"[^ \t]+", + "IDENTIFIER": r"\b[a-zA-Z0-9][a-zA-Z0-9._-]*\b", + "VERSION_PREFIX_TRAIL": r"\.\*", + "VERSION_LOCAL_LABEL_TRAIL": r"\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*", + "WS": r"[ \t]+", + "END": r"$", +} + + +class Tokenizer: + """Context-sensitive token parsing. + + Provides methods to examine the input stream to check whether the next token + matches. + """ + + def __init__( + self, + source: str, + *, + rules: "Dict[str, Union[str, re.Pattern[str]]]", + ) -> None: + self.source = source + self.rules: Dict[str, re.Pattern[str]] = { + name: re.compile(pattern) for name, pattern in rules.items() + } + self.next_token: Optional[Token] = None + self.position = 0 + + def consume(self, name: str) -> None: + """Move beyond provided token name, if at current position.""" + if self.check(name): + self.read() + + def check(self, name: str, *, peek: bool = False) -> bool: + """Check whether the next token has the provided name. + + By default, if the check succeeds, the token *must* be read before + another check. If `peek` is set to `True`, the token is not loaded and + would need to be checked again. + """ + assert ( + self.next_token is None + ), f"Cannot check for {name!r}, already have {self.next_token!r}" + assert name in self.rules, f"Unknown token name: {name!r}" + + expression = self.rules[name] + + match = expression.match(self.source, self.position) + if match is None: + return False + if not peek: + self.next_token = Token(name, match[0], self.position) + return True + + def expect(self, name: str, *, expected: str) -> Token: + """Expect a certain token name next, failing with a syntax error otherwise. + + The token is *not* read. + """ + if not self.check(name): + raise self.raise_syntax_error(f"Expected {expected}") + return self.read() + + def read(self) -> Token: + """Consume the next token and return it.""" + token = self.next_token + assert token is not None + + self.position += len(token.text) + self.next_token = None + + return token + + def raise_syntax_error( + self, + message: str, + *, + span_start: Optional[int] = None, + span_end: Optional[int] = None, + ) -> NoReturn: + """Raise ParserSyntaxError at the given position.""" + span = ( + self.position if span_start is None else span_start, + self.position if span_end is None else span_end, + ) + raise ParserSyntaxError( + message, + source=self.source, + span=span, + ) + + @contextlib.contextmanager + def enclosing_tokens( + self, open_token: str, close_token: str, *, around: str + ) -> Iterator[None]: + if self.check(open_token): + open_position = self.position + self.read() + else: + open_position = None + + yield + + if open_position is None: + return + + if not self.check(close_token): + self.raise_syntax_error( + f"Expected matching {close_token} for {open_token}, after {around}", + span_start=open_position, + ) + + self.read() diff --git a/tools/gyp/pylib/packaging/markers.py b/tools/gyp/pylib/packaging/markers.py new file mode 100644 index 00000000000000..8b98fca7233be6 --- /dev/null +++ b/tools/gyp/pylib/packaging/markers.py @@ -0,0 +1,252 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import operator +import os +import platform +import sys +from typing import Any, Callable, Dict, List, Optional, Tuple, Union + +from ._parser import ( + MarkerAtom, + MarkerList, + Op, + Value, + Variable, + parse_marker as _parse_marker, +) +from ._tokenizer import ParserSyntaxError +from .specifiers import InvalidSpecifier, Specifier +from .utils import canonicalize_name + +__all__ = [ + "InvalidMarker", + "UndefinedComparison", + "UndefinedEnvironmentName", + "Marker", + "default_environment", +] + +Operator = Callable[[str, str], bool] + + +class InvalidMarker(ValueError): + """ + An invalid marker was found, users should refer to PEP 508. + """ + + +class UndefinedComparison(ValueError): + """ + An invalid operation was attempted on a value that doesn't support it. + """ + + +class UndefinedEnvironmentName(ValueError): + """ + A name was attempted to be used that does not exist inside of the + environment. + """ + + +def _normalize_extra_values(results: Any) -> Any: + """ + Normalize extra values. + """ + if isinstance(results[0], tuple): + lhs, op, rhs = results[0] + if isinstance(lhs, Variable) and lhs.value == "extra": + normalized_extra = canonicalize_name(rhs.value) + rhs = Value(normalized_extra) + elif isinstance(rhs, Variable) and rhs.value == "extra": + normalized_extra = canonicalize_name(lhs.value) + lhs = Value(normalized_extra) + results[0] = lhs, op, rhs + return results + + +def _format_marker( + marker: Union[List[str], MarkerAtom, str], first: Optional[bool] = True +) -> str: + + assert isinstance(marker, (list, tuple, str)) + + # Sometimes we have a structure like [[...]] which is a single item list + # where the single item is itself it's own list. In that case we want skip + # the rest of this function so that we don't get extraneous () on the + # outside. + if ( + isinstance(marker, list) + and len(marker) == 1 + and isinstance(marker[0], (list, tuple)) + ): + return _format_marker(marker[0]) + + if isinstance(marker, list): + inner = (_format_marker(m, first=False) for m in marker) + if first: + return " ".join(inner) + else: + return "(" + " ".join(inner) + ")" + elif isinstance(marker, tuple): + return " ".join([m.serialize() for m in marker]) + else: + return marker + + +_operators: Dict[str, Operator] = { + "in": lambda lhs, rhs: lhs in rhs, + "not in": lambda lhs, rhs: lhs not in rhs, + "<": operator.lt, + "<=": operator.le, + "==": operator.eq, + "!=": operator.ne, + ">=": operator.ge, + ">": operator.gt, +} + + +def _eval_op(lhs: str, op: Op, rhs: str) -> bool: + try: + spec = Specifier("".join([op.serialize(), rhs])) + except InvalidSpecifier: + pass + else: + return spec.contains(lhs, prereleases=True) + + oper: Optional[Operator] = _operators.get(op.serialize()) + if oper is None: + raise UndefinedComparison(f"Undefined {op!r} on {lhs!r} and {rhs!r}.") + + return oper(lhs, rhs) + + +def _normalize(*values: str, key: str) -> Tuple[str, ...]: + # PEP 685 – Comparison of extra names for optional distribution dependencies + # https://peps.python.org/pep-0685/ + # > When comparing extra names, tools MUST normalize the names being + # > compared using the semantics outlined in PEP 503 for names + if key == "extra": + return tuple(canonicalize_name(v) for v in values) + + # other environment markers don't have such standards + return values + + +def _evaluate_markers(markers: MarkerList, environment: Dict[str, str]) -> bool: + groups: List[List[bool]] = [[]] + + for marker in markers: + assert isinstance(marker, (list, tuple, str)) + + if isinstance(marker, list): + groups[-1].append(_evaluate_markers(marker, environment)) + elif isinstance(marker, tuple): + lhs, op, rhs = marker + + if isinstance(lhs, Variable): + environment_key = lhs.value + lhs_value = environment[environment_key] + rhs_value = rhs.value + else: + lhs_value = lhs.value + environment_key = rhs.value + rhs_value = environment[environment_key] + + lhs_value, rhs_value = _normalize(lhs_value, rhs_value, key=environment_key) + groups[-1].append(_eval_op(lhs_value, op, rhs_value)) + else: + assert marker in ["and", "or"] + if marker == "or": + groups.append([]) + + return any(all(item) for item in groups) + + +def format_full_version(info: "sys._version_info") -> str: + version = "{0.major}.{0.minor}.{0.micro}".format(info) + kind = info.releaselevel + if kind != "final": + version += kind[0] + str(info.serial) + return version + + +def default_environment() -> Dict[str, str]: + iver = format_full_version(sys.implementation.version) + implementation_name = sys.implementation.name + return { + "implementation_name": implementation_name, + "implementation_version": iver, + "os_name": os.name, + "platform_machine": platform.machine(), + "platform_release": platform.release(), + "platform_system": platform.system(), + "platform_version": platform.version(), + "python_full_version": platform.python_version(), + "platform_python_implementation": platform.python_implementation(), + "python_version": ".".join(platform.python_version_tuple()[:2]), + "sys_platform": sys.platform, + } + + +class Marker: + def __init__(self, marker: str) -> None: + # Note: We create a Marker object without calling this constructor in + # packaging.requirements.Requirement. If any additional logic is + # added here, make sure to mirror/adapt Requirement. + try: + self._markers = _normalize_extra_values(_parse_marker(marker)) + # The attribute `_markers` can be described in terms of a recursive type: + # MarkerList = List[Union[Tuple[Node, ...], str, MarkerList]] + # + # For example, the following expression: + # python_version > "3.6" or (python_version == "3.6" and os_name == "unix") + # + # is parsed into: + # [ + # (, ')>, ), + # 'and', + # [ + # (, , ), + # 'or', + # (, , ) + # ] + # ] + except ParserSyntaxError as e: + raise InvalidMarker(str(e)) from e + + def __str__(self) -> str: + return _format_marker(self._markers) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash((self.__class__.__name__, str(self))) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Marker): + return NotImplemented + + return str(self) == str(other) + + def evaluate(self, environment: Optional[Dict[str, str]] = None) -> bool: + """Evaluate a marker. + + Return the boolean from evaluating the given marker against the + environment. environment is an optional argument to override all or + part of the determined environment. + + The environment is determined from the current Python process. + """ + current_environment = default_environment() + current_environment["extra"] = "" + if environment is not None: + current_environment.update(environment) + # The API used to allow setting extra to None. We need to handle this + # case for backwards compatibility. + if current_environment["extra"] is None: + current_environment["extra"] = "" + + return _evaluate_markers(self._markers, current_environment) diff --git a/tools/gyp/pylib/packaging/metadata.py b/tools/gyp/pylib/packaging/metadata.py new file mode 100644 index 00000000000000..fb274930799da0 --- /dev/null +++ b/tools/gyp/pylib/packaging/metadata.py @@ -0,0 +1,825 @@ +import email.feedparser +import email.header +import email.message +import email.parser +import email.policy +import sys +import typing +from typing import ( + Any, + Callable, + Dict, + Generic, + List, + Optional, + Tuple, + Type, + Union, + cast, +) + +from . import requirements, specifiers, utils, version as version_module + +T = typing.TypeVar("T") +if sys.version_info[:2] >= (3, 8): # pragma: no cover + from typing import Literal, TypedDict +else: # pragma: no cover + if typing.TYPE_CHECKING: + from typing_extensions import Literal, TypedDict + else: + try: + from typing_extensions import Literal, TypedDict + except ImportError: + + class Literal: + def __init_subclass__(*_args, **_kwargs): + pass + + class TypedDict: + def __init_subclass__(*_args, **_kwargs): + pass + + +try: + ExceptionGroup +except NameError: # pragma: no cover + + class ExceptionGroup(Exception): # noqa: N818 + """A minimal implementation of :external:exc:`ExceptionGroup` from Python 3.11. + + If :external:exc:`ExceptionGroup` is already defined by Python itself, + that version is used instead. + """ + + message: str + exceptions: List[Exception] + + def __init__(self, message: str, exceptions: List[Exception]) -> None: + self.message = message + self.exceptions = exceptions + + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.message!r}, {self.exceptions!r})" + +else: # pragma: no cover + ExceptionGroup = ExceptionGroup + + +class InvalidMetadata(ValueError): + """A metadata field contains invalid data.""" + + field: str + """The name of the field that contains invalid data.""" + + def __init__(self, field: str, message: str) -> None: + self.field = field + super().__init__(message) + + +# The RawMetadata class attempts to make as few assumptions about the underlying +# serialization formats as possible. The idea is that as long as a serialization +# formats offer some very basic primitives in *some* way then we can support +# serializing to and from that format. +class RawMetadata(TypedDict, total=False): + """A dictionary of raw core metadata. + + Each field in core metadata maps to a key of this dictionary (when data is + provided). The key is lower-case and underscores are used instead of dashes + compared to the equivalent core metadata field. Any core metadata field that + can be specified multiple times or can hold multiple values in a single + field have a key with a plural name. See :class:`Metadata` whose attributes + match the keys of this dictionary. + + Core metadata fields that can be specified multiple times are stored as a + list or dict depending on which is appropriate for the field. Any fields + which hold multiple values in a single field are stored as a list. + + """ + + # Metadata 1.0 - PEP 241 + metadata_version: str + name: str + version: str + platforms: List[str] + summary: str + description: str + keywords: List[str] + home_page: str + author: str + author_email: str + license: str + + # Metadata 1.1 - PEP 314 + supported_platforms: List[str] + download_url: str + classifiers: List[str] + requires: List[str] + provides: List[str] + obsoletes: List[str] + + # Metadata 1.2 - PEP 345 + maintainer: str + maintainer_email: str + requires_dist: List[str] + provides_dist: List[str] + obsoletes_dist: List[str] + requires_python: str + requires_external: List[str] + project_urls: Dict[str, str] + + # Metadata 2.0 + # PEP 426 attempted to completely revamp the metadata format + # but got stuck without ever being able to build consensus on + # it and ultimately ended up withdrawn. + # + # However, a number of tools had started emitting METADATA with + # `2.0` Metadata-Version, so for historical reasons, this version + # was skipped. + + # Metadata 2.1 - PEP 566 + description_content_type: str + provides_extra: List[str] + + # Metadata 2.2 - PEP 643 + dynamic: List[str] + + # Metadata 2.3 - PEP 685 + # No new fields were added in PEP 685, just some edge case were + # tightened up to provide better interoptability. + + +_STRING_FIELDS = { + "author", + "author_email", + "description", + "description_content_type", + "download_url", + "home_page", + "license", + "maintainer", + "maintainer_email", + "metadata_version", + "name", + "requires_python", + "summary", + "version", +} + +_LIST_FIELDS = { + "classifiers", + "dynamic", + "obsoletes", + "obsoletes_dist", + "platforms", + "provides", + "provides_dist", + "provides_extra", + "requires", + "requires_dist", + "requires_external", + "supported_platforms", +} + +_DICT_FIELDS = { + "project_urls", +} + + +def _parse_keywords(data: str) -> List[str]: + """Split a string of comma-separate keyboards into a list of keywords.""" + return [k.strip() for k in data.split(",")] + + +def _parse_project_urls(data: List[str]) -> Dict[str, str]: + """Parse a list of label/URL string pairings separated by a comma.""" + urls = {} + for pair in data: + # Our logic is slightly tricky here as we want to try and do + # *something* reasonable with malformed data. + # + # The main thing that we have to worry about, is data that does + # not have a ',' at all to split the label from the Value. There + # isn't a singular right answer here, and we will fail validation + # later on (if the caller is validating) so it doesn't *really* + # matter, but since the missing value has to be an empty str + # and our return value is dict[str, str], if we let the key + # be the missing value, then they'd have multiple '' values that + # overwrite each other in a accumulating dict. + # + # The other potentional issue is that it's possible to have the + # same label multiple times in the metadata, with no solid "right" + # answer with what to do in that case. As such, we'll do the only + # thing we can, which is treat the field as unparseable and add it + # to our list of unparsed fields. + parts = [p.strip() for p in pair.split(",", 1)] + parts.extend([""] * (max(0, 2 - len(parts)))) # Ensure 2 items + + # TODO: The spec doesn't say anything about if the keys should be + # considered case sensitive or not... logically they should + # be case-preserving and case-insensitive, but doing that + # would open up more cases where we might have duplicate + # entries. + label, url = parts + if label in urls: + # The label already exists in our set of urls, so this field + # is unparseable, and we can just add the whole thing to our + # unparseable data and stop processing it. + raise KeyError("duplicate labels in project urls") + urls[label] = url + + return urls + + +def _get_payload(msg: email.message.Message, source: Union[bytes, str]) -> str: + """Get the body of the message.""" + # If our source is a str, then our caller has managed encodings for us, + # and we don't need to deal with it. + if isinstance(source, str): + payload: str = msg.get_payload() + return payload + # If our source is a bytes, then we're managing the encoding and we need + # to deal with it. + else: + bpayload: bytes = msg.get_payload(decode=True) + try: + return bpayload.decode("utf8", "strict") + except UnicodeDecodeError: + raise ValueError("payload in an invalid encoding") + + +# The various parse_FORMAT functions here are intended to be as lenient as +# possible in their parsing, while still returning a correctly typed +# RawMetadata. +# +# To aid in this, we also generally want to do as little touching of the +# data as possible, except where there are possibly some historic holdovers +# that make valid data awkward to work with. +# +# While this is a lower level, intermediate format than our ``Metadata`` +# class, some light touch ups can make a massive difference in usability. + +# Map METADATA fields to RawMetadata. +_EMAIL_TO_RAW_MAPPING = { + "author": "author", + "author-email": "author_email", + "classifier": "classifiers", + "description": "description", + "description-content-type": "description_content_type", + "download-url": "download_url", + "dynamic": "dynamic", + "home-page": "home_page", + "keywords": "keywords", + "license": "license", + "maintainer": "maintainer", + "maintainer-email": "maintainer_email", + "metadata-version": "metadata_version", + "name": "name", + "obsoletes": "obsoletes", + "obsoletes-dist": "obsoletes_dist", + "platform": "platforms", + "project-url": "project_urls", + "provides": "provides", + "provides-dist": "provides_dist", + "provides-extra": "provides_extra", + "requires": "requires", + "requires-dist": "requires_dist", + "requires-external": "requires_external", + "requires-python": "requires_python", + "summary": "summary", + "supported-platform": "supported_platforms", + "version": "version", +} +_RAW_TO_EMAIL_MAPPING = {raw: email for email, raw in _EMAIL_TO_RAW_MAPPING.items()} + + +def parse_email(data: Union[bytes, str]) -> Tuple[RawMetadata, Dict[str, List[str]]]: + """Parse a distribution's metadata stored as email headers (e.g. from ``METADATA``). + + This function returns a two-item tuple of dicts. The first dict is of + recognized fields from the core metadata specification. Fields that can be + parsed and translated into Python's built-in types are converted + appropriately. All other fields are left as-is. Fields that are allowed to + appear multiple times are stored as lists. + + The second dict contains all other fields from the metadata. This includes + any unrecognized fields. It also includes any fields which are expected to + be parsed into a built-in type but were not formatted appropriately. Finally, + any fields that are expected to appear only once but are repeated are + included in this dict. + + """ + raw: Dict[str, Union[str, List[str], Dict[str, str]]] = {} + unparsed: Dict[str, List[str]] = {} + + if isinstance(data, str): + parsed = email.parser.Parser(policy=email.policy.compat32).parsestr(data) + else: + parsed = email.parser.BytesParser(policy=email.policy.compat32).parsebytes(data) + + # We have to wrap parsed.keys() in a set, because in the case of multiple + # values for a key (a list), the key will appear multiple times in the + # list of keys, but we're avoiding that by using get_all(). + for name in frozenset(parsed.keys()): + # Header names in RFC are case insensitive, so we'll normalize to all + # lower case to make comparisons easier. + name = name.lower() + + # We use get_all() here, even for fields that aren't multiple use, + # because otherwise someone could have e.g. two Name fields, and we + # would just silently ignore it rather than doing something about it. + headers = parsed.get_all(name) or [] + + # The way the email module works when parsing bytes is that it + # unconditionally decodes the bytes as ascii using the surrogateescape + # handler. When you pull that data back out (such as with get_all() ), + # it looks to see if the str has any surrogate escapes, and if it does + # it wraps it in a Header object instead of returning the string. + # + # As such, we'll look for those Header objects, and fix up the encoding. + value = [] + # Flag if we have run into any issues processing the headers, thus + # signalling that the data belongs in 'unparsed'. + valid_encoding = True + for h in headers: + # It's unclear if this can return more types than just a Header or + # a str, so we'll just assert here to make sure. + assert isinstance(h, (email.header.Header, str)) + + # If it's a header object, we need to do our little dance to get + # the real data out of it. In cases where there is invalid data + # we're going to end up with mojibake, but there's no obvious, good + # way around that without reimplementing parts of the Header object + # ourselves. + # + # That should be fine since, if mojibacked happens, this key is + # going into the unparsed dict anyways. + if isinstance(h, email.header.Header): + # The Header object stores it's data as chunks, and each chunk + # can be independently encoded, so we'll need to check each + # of them. + chunks: List[Tuple[bytes, Optional[str]]] = [] + for bin, encoding in email.header.decode_header(h): + try: + bin.decode("utf8", "strict") + except UnicodeDecodeError: + # Enable mojibake. + encoding = "latin1" + valid_encoding = False + else: + encoding = "utf8" + chunks.append((bin, encoding)) + + # Turn our chunks back into a Header object, then let that + # Header object do the right thing to turn them into a + # string for us. + value.append(str(email.header.make_header(chunks))) + # This is already a string, so just add it. + else: + value.append(h) + + # We've processed all of our values to get them into a list of str, + # but we may have mojibake data, in which case this is an unparsed + # field. + if not valid_encoding: + unparsed[name] = value + continue + + raw_name = _EMAIL_TO_RAW_MAPPING.get(name) + if raw_name is None: + # This is a bit of a weird situation, we've encountered a key that + # we don't know what it means, so we don't know whether it's meant + # to be a list or not. + # + # Since we can't really tell one way or another, we'll just leave it + # as a list, even though it may be a single item list, because that's + # what makes the most sense for email headers. + unparsed[name] = value + continue + + # If this is one of our string fields, then we'll check to see if our + # value is a list of a single item. If it is then we'll assume that + # it was emitted as a single string, and unwrap the str from inside + # the list. + # + # If it's any other kind of data, then we haven't the faintest clue + # what we should parse it as, and we have to just add it to our list + # of unparsed stuff. + if raw_name in _STRING_FIELDS and len(value) == 1: + raw[raw_name] = value[0] + # If this is one of our list of string fields, then we can just assign + # the value, since email *only* has strings, and our get_all() call + # above ensures that this is a list. + elif raw_name in _LIST_FIELDS: + raw[raw_name] = value + # Special Case: Keywords + # The keywords field is implemented in the metadata spec as a str, + # but it conceptually is a list of strings, and is serialized using + # ", ".join(keywords), so we'll do some light data massaging to turn + # this into what it logically is. + elif raw_name == "keywords" and len(value) == 1: + raw[raw_name] = _parse_keywords(value[0]) + # Special Case: Project-URL + # The project urls is implemented in the metadata spec as a list of + # specially-formatted strings that represent a key and a value, which + # is fundamentally a mapping, however the email format doesn't support + # mappings in a sane way, so it was crammed into a list of strings + # instead. + # + # We will do a little light data massaging to turn this into a map as + # it logically should be. + elif raw_name == "project_urls": + try: + raw[raw_name] = _parse_project_urls(value) + except KeyError: + unparsed[name] = value + # Nothing that we've done has managed to parse this, so it'll just + # throw it in our unparseable data and move on. + else: + unparsed[name] = value + + # We need to support getting the Description from the message payload in + # addition to getting it from the the headers. This does mean, though, there + # is the possibility of it being set both ways, in which case we put both + # in 'unparsed' since we don't know which is right. + try: + payload = _get_payload(parsed, data) + except ValueError: + unparsed.setdefault("description", []).append( + parsed.get_payload(decode=isinstance(data, bytes)) + ) + else: + if payload: + # Check to see if we've already got a description, if so then both + # it, and this body move to unparseable. + if "description" in raw: + description_header = cast(str, raw.pop("description")) + unparsed.setdefault("description", []).extend( + [description_header, payload] + ) + elif "description" in unparsed: + unparsed["description"].append(payload) + else: + raw["description"] = payload + + # We need to cast our `raw` to a metadata, because a TypedDict only support + # literal key names, but we're computing our key names on purpose, but the + # way this function is implemented, our `TypedDict` can only have valid key + # names. + return cast(RawMetadata, raw), unparsed + + +_NOT_FOUND = object() + + +# Keep the two values in sync. +_VALID_METADATA_VERSIONS = ["1.0", "1.1", "1.2", "2.1", "2.2", "2.3"] +_MetadataVersion = Literal["1.0", "1.1", "1.2", "2.1", "2.2", "2.3"] + +_REQUIRED_ATTRS = frozenset(["metadata_version", "name", "version"]) + + +class _Validator(Generic[T]): + """Validate a metadata field. + + All _process_*() methods correspond to a core metadata field. The method is + called with the field's raw value. If the raw value is valid it is returned + in its "enriched" form (e.g. ``version.Version`` for the ``Version`` field). + If the raw value is invalid, :exc:`InvalidMetadata` is raised (with a cause + as appropriate). + """ + + name: str + raw_name: str + added: _MetadataVersion + + def __init__( + self, + *, + added: _MetadataVersion = "1.0", + ) -> None: + self.added = added + + def __set_name__(self, _owner: "Metadata", name: str) -> None: + self.name = name + self.raw_name = _RAW_TO_EMAIL_MAPPING[name] + + def __get__(self, instance: "Metadata", _owner: Type["Metadata"]) -> T: + # With Python 3.8, the caching can be replaced with functools.cached_property(). + # No need to check the cache as attribute lookup will resolve into the + # instance's __dict__ before __get__ is called. + cache = instance.__dict__ + value = instance._raw.get(self.name) + + # To make the _process_* methods easier, we'll check if the value is None + # and if this field is NOT a required attribute, and if both of those + # things are true, we'll skip the the converter. This will mean that the + # converters never have to deal with the None union. + if self.name in _REQUIRED_ATTRS or value is not None: + try: + converter: Callable[[Any], T] = getattr(self, f"_process_{self.name}") + except AttributeError: + pass + else: + value = converter(value) + + cache[self.name] = value + try: + del instance._raw[self.name] # type: ignore[misc] + except KeyError: + pass + + return cast(T, value) + + def _invalid_metadata( + self, msg: str, cause: Optional[Exception] = None + ) -> InvalidMetadata: + exc = InvalidMetadata( + self.raw_name, msg.format_map({"field": repr(self.raw_name)}) + ) + exc.__cause__ = cause + return exc + + def _process_metadata_version(self, value: str) -> _MetadataVersion: + # Implicitly makes Metadata-Version required. + if value not in _VALID_METADATA_VERSIONS: + raise self._invalid_metadata(f"{value!r} is not a valid metadata version") + return cast(_MetadataVersion, value) + + def _process_name(self, value: str) -> str: + if not value: + raise self._invalid_metadata("{field} is a required field") + # Validate the name as a side-effect. + try: + utils.canonicalize_name(value, validate=True) + except utils.InvalidName as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) + else: + return value + + def _process_version(self, value: str) -> version_module.Version: + if not value: + raise self._invalid_metadata("{field} is a required field") + try: + return version_module.parse(value) + except version_module.InvalidVersion as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) + + def _process_summary(self, value: str) -> str: + """Check the field contains no newlines.""" + if "\n" in value: + raise self._invalid_metadata("{field} must be a single line") + return value + + def _process_description_content_type(self, value: str) -> str: + content_types = {"text/plain", "text/x-rst", "text/markdown"} + message = email.message.EmailMessage() + message["content-type"] = value + + content_type, parameters = ( + # Defaults to `text/plain` if parsing failed. + message.get_content_type().lower(), + message["content-type"].params, + ) + # Check if content-type is valid or defaulted to `text/plain` and thus was + # not parseable. + if content_type not in content_types or content_type not in value.lower(): + raise self._invalid_metadata( + f"{{field}} must be one of {list(content_types)}, not {value!r}" + ) + + charset = parameters.get("charset", "UTF-8") + if charset != "UTF-8": + raise self._invalid_metadata( + f"{{field}} can only specify the UTF-8 charset, not {list(charset)}" + ) + + markdown_variants = {"GFM", "CommonMark"} + variant = parameters.get("variant", "GFM") # Use an acceptable default. + if content_type == "text/markdown" and variant not in markdown_variants: + raise self._invalid_metadata( + f"valid Markdown variants for {{field}} are {list(markdown_variants)}, " + f"not {variant!r}", + ) + return value + + def _process_dynamic(self, value: List[str]) -> List[str]: + for dynamic_field in map(str.lower, value): + if dynamic_field in {"name", "version", "metadata-version"}: + raise self._invalid_metadata( + f"{value!r} is not allowed as a dynamic field" + ) + elif dynamic_field not in _EMAIL_TO_RAW_MAPPING: + raise self._invalid_metadata(f"{value!r} is not a valid dynamic field") + return list(map(str.lower, value)) + + def _process_provides_extra( + self, + value: List[str], + ) -> List[utils.NormalizedName]: + normalized_names = [] + try: + for name in value: + normalized_names.append(utils.canonicalize_name(name, validate=True)) + except utils.InvalidName as exc: + raise self._invalid_metadata( + f"{name!r} is invalid for {{field}}", cause=exc + ) + else: + return normalized_names + + def _process_requires_python(self, value: str) -> specifiers.SpecifierSet: + try: + return specifiers.SpecifierSet(value) + except specifiers.InvalidSpecifier as exc: + raise self._invalid_metadata( + f"{value!r} is invalid for {{field}}", cause=exc + ) + + def _process_requires_dist( + self, + value: List[str], + ) -> List[requirements.Requirement]: + reqs = [] + try: + for req in value: + reqs.append(requirements.Requirement(req)) + except requirements.InvalidRequirement as exc: + raise self._invalid_metadata(f"{req!r} is invalid for {{field}}", cause=exc) + else: + return reqs + + +class Metadata: + """Representation of distribution metadata. + + Compared to :class:`RawMetadata`, this class provides objects representing + metadata fields instead of only using built-in types. Any invalid metadata + will cause :exc:`InvalidMetadata` to be raised (with a + :py:attr:`~BaseException.__cause__` attribute as appropriate). + """ + + _raw: RawMetadata + + @classmethod + def from_raw(cls, data: RawMetadata, *, validate: bool = True) -> "Metadata": + """Create an instance from :class:`RawMetadata`. + + If *validate* is true, all metadata will be validated. All exceptions + related to validation will be gathered and raised as an :class:`ExceptionGroup`. + """ + ins = cls() + ins._raw = data.copy() # Mutations occur due to caching enriched values. + + if validate: + exceptions: List[Exception] = [] + try: + metadata_version = ins.metadata_version + metadata_age = _VALID_METADATA_VERSIONS.index(metadata_version) + except InvalidMetadata as metadata_version_exc: + exceptions.append(metadata_version_exc) + metadata_version = None + + # Make sure to check for the fields that are present, the required + # fields (so their absence can be reported). + fields_to_check = frozenset(ins._raw) | _REQUIRED_ATTRS + # Remove fields that have already been checked. + fields_to_check -= {"metadata_version"} + + for key in fields_to_check: + try: + if metadata_version: + # Can't use getattr() as that triggers descriptor protocol which + # will fail due to no value for the instance argument. + try: + field_metadata_version = cls.__dict__[key].added + except KeyError: + exc = InvalidMetadata(key, f"unrecognized field: {key!r}") + exceptions.append(exc) + continue + field_age = _VALID_METADATA_VERSIONS.index( + field_metadata_version + ) + if field_age > metadata_age: + field = _RAW_TO_EMAIL_MAPPING[key] + exc = InvalidMetadata( + field, + "{field} introduced in metadata version " + "{field_metadata_version}, not {metadata_version}", + ) + exceptions.append(exc) + continue + getattr(ins, key) + except InvalidMetadata as exc: + exceptions.append(exc) + + if exceptions: + raise ExceptionGroup("invalid metadata", exceptions) + + return ins + + @classmethod + def from_email( + cls, data: Union[bytes, str], *, validate: bool = True + ) -> "Metadata": + """Parse metadata from email headers. + + If *validate* is true, the metadata will be validated. All exceptions + related to validation will be gathered and raised as an :class:`ExceptionGroup`. + """ + raw, unparsed = parse_email(data) + + if validate: + exceptions: list[Exception] = [] + for unparsed_key in unparsed: + if unparsed_key in _EMAIL_TO_RAW_MAPPING: + message = f"{unparsed_key!r} has invalid data" + else: + message = f"unrecognized field: {unparsed_key!r}" + exceptions.append(InvalidMetadata(unparsed_key, message)) + + if exceptions: + raise ExceptionGroup("unparsed", exceptions) + + try: + return cls.from_raw(raw, validate=validate) + except ExceptionGroup as exc_group: + raise ExceptionGroup( + "invalid or unparsed metadata", exc_group.exceptions + ) from None + + metadata_version: _Validator[_MetadataVersion] = _Validator() + """:external:ref:`core-metadata-metadata-version` + (required; validated to be a valid metadata version)""" + name: _Validator[str] = _Validator() + """:external:ref:`core-metadata-name` + (required; validated using :func:`~packaging.utils.canonicalize_name` and its + *validate* parameter)""" + version: _Validator[version_module.Version] = _Validator() + """:external:ref:`core-metadata-version` (required)""" + dynamic: _Validator[Optional[List[str]]] = _Validator( + added="2.2", + ) + """:external:ref:`core-metadata-dynamic` + (validated against core metadata field names and lowercased)""" + platforms: _Validator[Optional[List[str]]] = _Validator() + """:external:ref:`core-metadata-platform`""" + supported_platforms: _Validator[Optional[List[str]]] = _Validator(added="1.1") + """:external:ref:`core-metadata-supported-platform`""" + summary: _Validator[Optional[str]] = _Validator() + """:external:ref:`core-metadata-summary` (validated to contain no newlines)""" + description: _Validator[Optional[str]] = _Validator() # TODO 2.1: can be in body + """:external:ref:`core-metadata-description`""" + description_content_type: _Validator[Optional[str]] = _Validator(added="2.1") + """:external:ref:`core-metadata-description-content-type` (validated)""" + keywords: _Validator[Optional[List[str]]] = _Validator() + """:external:ref:`core-metadata-keywords`""" + home_page: _Validator[Optional[str]] = _Validator() + """:external:ref:`core-metadata-home-page`""" + download_url: _Validator[Optional[str]] = _Validator(added="1.1") + """:external:ref:`core-metadata-download-url`""" + author: _Validator[Optional[str]] = _Validator() + """:external:ref:`core-metadata-author`""" + author_email: _Validator[Optional[str]] = _Validator() + """:external:ref:`core-metadata-author-email`""" + maintainer: _Validator[Optional[str]] = _Validator(added="1.2") + """:external:ref:`core-metadata-maintainer`""" + maintainer_email: _Validator[Optional[str]] = _Validator(added="1.2") + """:external:ref:`core-metadata-maintainer-email`""" + license: _Validator[Optional[str]] = _Validator() + """:external:ref:`core-metadata-license`""" + classifiers: _Validator[Optional[List[str]]] = _Validator(added="1.1") + """:external:ref:`core-metadata-classifier`""" + requires_dist: _Validator[Optional[List[requirements.Requirement]]] = _Validator( + added="1.2" + ) + """:external:ref:`core-metadata-requires-dist`""" + requires_python: _Validator[Optional[specifiers.SpecifierSet]] = _Validator( + added="1.2" + ) + """:external:ref:`core-metadata-requires-python`""" + # Because `Requires-External` allows for non-PEP 440 version specifiers, we + # don't do any processing on the values. + requires_external: _Validator[Optional[List[str]]] = _Validator(added="1.2") + """:external:ref:`core-metadata-requires-external`""" + project_urls: _Validator[Optional[Dict[str, str]]] = _Validator(added="1.2") + """:external:ref:`core-metadata-project-url`""" + # PEP 685 lets us raise an error if an extra doesn't pass `Name` validation + # regardless of metadata version. + provides_extra: _Validator[Optional[List[utils.NormalizedName]]] = _Validator( + added="2.1", + ) + """:external:ref:`core-metadata-provides-extra`""" + provides_dist: _Validator[Optional[List[str]]] = _Validator(added="1.2") + """:external:ref:`core-metadata-provides-dist`""" + obsoletes_dist: _Validator[Optional[List[str]]] = _Validator(added="1.2") + """:external:ref:`core-metadata-obsoletes-dist`""" + requires: _Validator[Optional[List[str]]] = _Validator(added="1.1") + """``Requires`` (deprecated)""" + provides: _Validator[Optional[List[str]]] = _Validator(added="1.1") + """``Provides`` (deprecated)""" + obsoletes: _Validator[Optional[List[str]]] = _Validator(added="1.1") + """``Obsoletes`` (deprecated)""" diff --git a/tools/gyp/pylib/packaging/py.typed b/tools/gyp/pylib/packaging/py.typed new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/tools/gyp/pylib/packaging/requirements.py b/tools/gyp/pylib/packaging/requirements.py new file mode 100644 index 00000000000000..0c00eba331b736 --- /dev/null +++ b/tools/gyp/pylib/packaging/requirements.py @@ -0,0 +1,90 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +from typing import Any, Iterator, Optional, Set + +from ._parser import parse_requirement as _parse_requirement +from ._tokenizer import ParserSyntaxError +from .markers import Marker, _normalize_extra_values +from .specifiers import SpecifierSet +from .utils import canonicalize_name + + +class InvalidRequirement(ValueError): + """ + An invalid requirement was found, users should refer to PEP 508. + """ + + +class Requirement: + """Parse a requirement. + + Parse a given requirement string into its parts, such as name, specifier, + URL, and extras. Raises InvalidRequirement on a badly-formed requirement + string. + """ + + # TODO: Can we test whether something is contained within a requirement? + # If so how do we do that? Do we need to test against the _name_ of + # the thing as well as the version? What about the markers? + # TODO: Can we normalize the name and extra name? + + def __init__(self, requirement_string: str) -> None: + try: + parsed = _parse_requirement(requirement_string) + except ParserSyntaxError as e: + raise InvalidRequirement(str(e)) from e + + self.name: str = parsed.name + self.url: Optional[str] = parsed.url or None + self.extras: Set[str] = set(parsed.extras if parsed.extras else []) + self.specifier: SpecifierSet = SpecifierSet(parsed.specifier) + self.marker: Optional[Marker] = None + if parsed.marker is not None: + self.marker = Marker.__new__(Marker) + self.marker._markers = _normalize_extra_values(parsed.marker) + + def _iter_parts(self, name: str) -> Iterator[str]: + yield name + + if self.extras: + formatted_extras = ",".join(sorted(self.extras)) + yield f"[{formatted_extras}]" + + if self.specifier: + yield str(self.specifier) + + if self.url: + yield f"@ {self.url}" + if self.marker: + yield " " + + if self.marker: + yield f"; {self.marker}" + + def __str__(self) -> str: + return "".join(self._iter_parts(self.name)) + + def __repr__(self) -> str: + return f"" + + def __hash__(self) -> int: + return hash( + ( + self.__class__.__name__, + *self._iter_parts(canonicalize_name(self.name)), + ) + ) + + def __eq__(self, other: Any) -> bool: + if not isinstance(other, Requirement): + return NotImplemented + + return ( + canonicalize_name(self.name) == canonicalize_name(other.name) + and self.extras == other.extras + and self.specifier == other.specifier + and self.url == other.url + and self.marker == other.marker + ) diff --git a/tools/gyp/pylib/packaging/specifiers.py b/tools/gyp/pylib/packaging/specifiers.py new file mode 100644 index 00000000000000..94448327ae2d44 --- /dev/null +++ b/tools/gyp/pylib/packaging/specifiers.py @@ -0,0 +1,1030 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. +""" +.. testsetup:: + + from packaging.specifiers import Specifier, SpecifierSet, InvalidSpecifier + from packaging.version import Version +""" + +import abc +import itertools +import re +from typing import ( + Callable, + Iterable, + Iterator, + List, + Optional, + Set, + Tuple, + TypeVar, + Union, +) + +from .utils import canonicalize_version +from .version import Version + +UnparsedVersion = Union[Version, str] +UnparsedVersionVar = TypeVar("UnparsedVersionVar", bound=UnparsedVersion) +CallableOperator = Callable[[Version, str], bool] + + +def _coerce_version(version: UnparsedVersion) -> Version: + if not isinstance(version, Version): + version = Version(version) + return version + + +class InvalidSpecifier(ValueError): + """ + Raised when attempting to create a :class:`Specifier` with a specifier + string that is invalid. + + >>> Specifier("lolwat") + Traceback (most recent call last): + ... + packaging.specifiers.InvalidSpecifier: Invalid specifier: 'lolwat' + """ + + +class BaseSpecifier(metaclass=abc.ABCMeta): + @abc.abstractmethod + def __str__(self) -> str: + """ + Returns the str representation of this Specifier-like object. This + should be representative of the Specifier itself. + """ + + @abc.abstractmethod + def __hash__(self) -> int: + """ + Returns a hash value for this Specifier-like object. + """ + + @abc.abstractmethod + def __eq__(self, other: object) -> bool: + """ + Returns a boolean representing whether or not the two Specifier-like + objects are equal. + + :param other: The other object to check against. + """ + + @property + @abc.abstractmethod + def prereleases(self) -> Optional[bool]: + """Whether or not pre-releases as a whole are allowed. + + This can be set to either ``True`` or ``False`` to explicitly enable or disable + prereleases or it can be set to ``None`` (the default) to use default semantics. + """ + + @prereleases.setter + def prereleases(self, value: bool) -> None: + """Setter for :attr:`prereleases`. + + :param value: The value to set. + """ + + @abc.abstractmethod + def contains(self, item: str, prereleases: Optional[bool] = None) -> bool: + """ + Determines if the given item is contained within this specifier. + """ + + @abc.abstractmethod + def filter( + self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None + ) -> Iterator[UnparsedVersionVar]: + """ + Takes an iterable of items and filters them so that only items which + are contained within this specifier are allowed in it. + """ + + +class Specifier(BaseSpecifier): + """This class abstracts handling of version specifiers. + + .. tip:: + + It is generally not required to instantiate this manually. You should instead + prefer to work with :class:`SpecifierSet` instead, which can parse + comma-separated version specifiers (which is what package metadata contains). + """ + + _operator_regex_str = r""" + (?P(~=|==|!=|<=|>=|<|>|===)) + """ + _version_regex_str = r""" + (?P + (?: + # The identity operators allow for an escape hatch that will + # do an exact string match of the version you wish to install. + # This will not be parsed by PEP 440 and we cannot determine + # any semantic meaning from it. This operator is discouraged + # but included entirely as an escape hatch. + (?<====) # Only match for the identity operator + \s* + [^\s;)]* # The arbitrary version can be just about anything, + # we match everything except for whitespace, a + # semi-colon for marker support, and a closing paren + # since versions can be enclosed in them. + ) + | + (?: + # The (non)equality operators allow for wild card and local + # versions to be specified so we have to define these two + # operators separately to enable that. + (?<===|!=) # Only match for equals and not equals + + \s* + v? + (?:[0-9]+!)? # epoch + [0-9]+(?:\.[0-9]+)* # release + + # You cannot use a wild card and a pre-release, post-release, a dev or + # local version together so group them with a | and make them optional. + (?: + \.\* # Wild card syntax of .* + | + (?: # pre release + [-_\.]? + (alpha|beta|preview|pre|a|b|c|rc) + [-_\.]? + [0-9]* + )? + (?: # post release + (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) + )? + (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release + (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local + )? + ) + | + (?: + # The compatible operator requires at least two digits in the + # release segment. + (?<=~=) # Only match for the compatible operator + + \s* + v? + (?:[0-9]+!)? # epoch + [0-9]+(?:\.[0-9]+)+ # release (We have a + instead of a *) + (?: # pre release + [-_\.]? + (alpha|beta|preview|pre|a|b|c|rc) + [-_\.]? + [0-9]* + )? + (?: # post release + (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*) + )? + (?:[-_\.]?dev[-_\.]?[0-9]*)? # dev release + ) + | + (?: + # All other operators only allow a sub set of what the + # (non)equality operators do. Specifically they do not allow + # local versions to be specified nor do they allow the prefix + # matching wild cards. + (?=": "greater_than_equal", + "<": "less_than", + ">": "greater_than", + "===": "arbitrary", + } + + def __init__(self, spec: str = "", prereleases: Optional[bool] = None) -> None: + """Initialize a Specifier instance. + + :param spec: + The string representation of a specifier which will be parsed and + normalized before use. + :param prereleases: + This tells the specifier if it should accept prerelease versions if + applicable or not. The default of ``None`` will autodetect it from the + given specifiers. + :raises InvalidSpecifier: + If the given specifier is invalid (i.e. bad syntax). + """ + match = self._regex.search(spec) + if not match: + raise InvalidSpecifier(f"Invalid specifier: '{spec}'") + + self._spec: Tuple[str, str] = ( + match.group("operator").strip(), + match.group("version").strip(), + ) + + # Store whether or not this Specifier should accept prereleases + self._prereleases = prereleases + + # https://github.com/python/mypy/pull/13475#pullrequestreview-1079784515 + @property # type: ignore[override] + def prereleases(self) -> bool: + # If there is an explicit prereleases set for this, then we'll just + # blindly use that. + if self._prereleases is not None: + return self._prereleases + + # Look at all of our specifiers and determine if they are inclusive + # operators, and if they are if they are including an explicit + # prerelease. + operator, version = self._spec + if operator in ["==", ">=", "<=", "~=", "==="]: + # The == specifier can include a trailing .*, if it does we + # want to remove before parsing. + if operator == "==" and version.endswith(".*"): + version = version[:-2] + + # Parse the version, and if it is a pre-release than this + # specifier allows pre-releases. + if Version(version).is_prerelease: + return True + + return False + + @prereleases.setter + def prereleases(self, value: bool) -> None: + self._prereleases = value + + @property + def operator(self) -> str: + """The operator of this specifier. + + >>> Specifier("==1.2.3").operator + '==' + """ + return self._spec[0] + + @property + def version(self) -> str: + """The version of this specifier. + + >>> Specifier("==1.2.3").version + '1.2.3' + """ + return self._spec[1] + + def __repr__(self) -> str: + """A representation of the Specifier that shows all internal state. + + >>> Specifier('>=1.0.0') + =1.0.0')> + >>> Specifier('>=1.0.0', prereleases=False) + =1.0.0', prereleases=False)> + >>> Specifier('>=1.0.0', prereleases=True) + =1.0.0', prereleases=True)> + """ + pre = ( + f", prereleases={self.prereleases!r}" + if self._prereleases is not None + else "" + ) + + return f"<{self.__class__.__name__}({str(self)!r}{pre})>" + + def __str__(self) -> str: + """A string representation of the Specifier that can be round-tripped. + + >>> str(Specifier('>=1.0.0')) + '>=1.0.0' + >>> str(Specifier('>=1.0.0', prereleases=False)) + '>=1.0.0' + """ + return "{}{}".format(*self._spec) + + @property + def _canonical_spec(self) -> Tuple[str, str]: + canonical_version = canonicalize_version( + self._spec[1], + strip_trailing_zero=(self._spec[0] != "~="), + ) + return self._spec[0], canonical_version + + def __hash__(self) -> int: + return hash(self._canonical_spec) + + def __eq__(self, other: object) -> bool: + """Whether or not the two Specifier-like objects are equal. + + :param other: The other object to check against. + + The value of :attr:`prereleases` is ignored. + + >>> Specifier("==1.2.3") == Specifier("== 1.2.3.0") + True + >>> (Specifier("==1.2.3", prereleases=False) == + ... Specifier("==1.2.3", prereleases=True)) + True + >>> Specifier("==1.2.3") == "==1.2.3" + True + >>> Specifier("==1.2.3") == Specifier("==1.2.4") + False + >>> Specifier("==1.2.3") == Specifier("~=1.2.3") + False + """ + if isinstance(other, str): + try: + other = self.__class__(str(other)) + except InvalidSpecifier: + return NotImplemented + elif not isinstance(other, self.__class__): + return NotImplemented + + return self._canonical_spec == other._canonical_spec + + def _get_operator(self, op: str) -> CallableOperator: + operator_callable: CallableOperator = getattr( + self, f"_compare_{self._operators[op]}" + ) + return operator_callable + + def _compare_compatible(self, prospective: Version, spec: str) -> bool: + + # Compatible releases have an equivalent combination of >= and ==. That + # is that ~=2.2 is equivalent to >=2.2,==2.*. This allows us to + # implement this in terms of the other specifiers instead of + # implementing it ourselves. The only thing we need to do is construct + # the other specifiers. + + # We want everything but the last item in the version, but we want to + # ignore suffix segments. + prefix = _version_join( + list(itertools.takewhile(_is_not_suffix, _version_split(spec)))[:-1] + ) + + # Add the prefix notation to the end of our string + prefix += ".*" + + return self._get_operator(">=")(prospective, spec) and self._get_operator("==")( + prospective, prefix + ) + + def _compare_equal(self, prospective: Version, spec: str) -> bool: + + # We need special logic to handle prefix matching + if spec.endswith(".*"): + # In the case of prefix matching we want to ignore local segment. + normalized_prospective = canonicalize_version( + prospective.public, strip_trailing_zero=False + ) + # Get the normalized version string ignoring the trailing .* + normalized_spec = canonicalize_version(spec[:-2], strip_trailing_zero=False) + # Split the spec out by bangs and dots, and pretend that there is + # an implicit dot in between a release segment and a pre-release segment. + split_spec = _version_split(normalized_spec) + + # Split the prospective version out by bangs and dots, and pretend + # that there is an implicit dot in between a release segment and + # a pre-release segment. + split_prospective = _version_split(normalized_prospective) + + # 0-pad the prospective version before shortening it to get the correct + # shortened version. + padded_prospective, _ = _pad_version(split_prospective, split_spec) + + # Shorten the prospective version to be the same length as the spec + # so that we can determine if the specifier is a prefix of the + # prospective version or not. + shortened_prospective = padded_prospective[: len(split_spec)] + + return shortened_prospective == split_spec + else: + # Convert our spec string into a Version + spec_version = Version(spec) + + # If the specifier does not have a local segment, then we want to + # act as if the prospective version also does not have a local + # segment. + if not spec_version.local: + prospective = Version(prospective.public) + + return prospective == spec_version + + def _compare_not_equal(self, prospective: Version, spec: str) -> bool: + return not self._compare_equal(prospective, spec) + + def _compare_less_than_equal(self, prospective: Version, spec: str) -> bool: + + # NB: Local version identifiers are NOT permitted in the version + # specifier, so local version labels can be universally removed from + # the prospective version. + return Version(prospective.public) <= Version(spec) + + def _compare_greater_than_equal(self, prospective: Version, spec: str) -> bool: + + # NB: Local version identifiers are NOT permitted in the version + # specifier, so local version labels can be universally removed from + # the prospective version. + return Version(prospective.public) >= Version(spec) + + def _compare_less_than(self, prospective: Version, spec_str: str) -> bool: + + # Convert our spec to a Version instance, since we'll want to work with + # it as a version. + spec = Version(spec_str) + + # Check to see if the prospective version is less than the spec + # version. If it's not we can short circuit and just return False now + # instead of doing extra unneeded work. + if not prospective < spec: + return False + + # This special case is here so that, unless the specifier itself + # includes is a pre-release version, that we do not accept pre-release + # versions for the version mentioned in the specifier (e.g. <3.1 should + # not match 3.1.dev0, but should match 3.0.dev0). + if not spec.is_prerelease and prospective.is_prerelease: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # If we've gotten to here, it means that prospective version is both + # less than the spec version *and* it's not a pre-release of the same + # version in the spec. + return True + + def _compare_greater_than(self, prospective: Version, spec_str: str) -> bool: + + # Convert our spec to a Version instance, since we'll want to work with + # it as a version. + spec = Version(spec_str) + + # Check to see if the prospective version is greater than the spec + # version. If it's not we can short circuit and just return False now + # instead of doing extra unneeded work. + if not prospective > spec: + return False + + # This special case is here so that, unless the specifier itself + # includes is a post-release version, that we do not accept + # post-release versions for the version mentioned in the specifier + # (e.g. >3.1 should not match 3.0.post0, but should match 3.2.post0). + if not spec.is_postrelease and prospective.is_postrelease: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # Ensure that we do not allow a local version of the version mentioned + # in the specifier, which is technically greater than, to match. + if prospective.local is not None: + if Version(prospective.base_version) == Version(spec.base_version): + return False + + # If we've gotten to here, it means that prospective version is both + # greater than the spec version *and* it's not a pre-release of the + # same version in the spec. + return True + + def _compare_arbitrary(self, prospective: Version, spec: str) -> bool: + return str(prospective).lower() == str(spec).lower() + + def __contains__(self, item: Union[str, Version]) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: The item to check for. + + This is used for the ``in`` operator and behaves the same as + :meth:`contains` with no ``prereleases`` argument passed. + + >>> "1.2.3" in Specifier(">=1.2.3") + True + >>> Version("1.2.3") in Specifier(">=1.2.3") + True + >>> "1.0.0" in Specifier(">=1.2.3") + False + >>> "1.3.0a1" in Specifier(">=1.2.3") + False + >>> "1.3.0a1" in Specifier(">=1.2.3", prereleases=True) + True + """ + return self.contains(item) + + def contains( + self, item: UnparsedVersion, prereleases: Optional[bool] = None + ) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: + The item to check for, which can be a version string or a + :class:`Version` instance. + :param prereleases: + Whether or not to match prereleases with this Specifier. If set to + ``None`` (the default), it uses :attr:`prereleases` to determine + whether or not prereleases are allowed. + + >>> Specifier(">=1.2.3").contains("1.2.3") + True + >>> Specifier(">=1.2.3").contains(Version("1.2.3")) + True + >>> Specifier(">=1.2.3").contains("1.0.0") + False + >>> Specifier(">=1.2.3").contains("1.3.0a1") + False + >>> Specifier(">=1.2.3", prereleases=True).contains("1.3.0a1") + True + >>> Specifier(">=1.2.3").contains("1.3.0a1", prereleases=True) + True + """ + + # Determine if prereleases are to be allowed or not. + if prereleases is None: + prereleases = self.prereleases + + # Normalize item to a Version, this allows us to have a shortcut for + # "2.0" in Specifier(">=2") + normalized_item = _coerce_version(item) + + # Determine if we should be supporting prereleases in this specifier + # or not, if we do not support prereleases than we can short circuit + # logic if this version is a prereleases. + if normalized_item.is_prerelease and not prereleases: + return False + + # Actually do the comparison to determine if this item is contained + # within this Specifier or not. + operator_callable: CallableOperator = self._get_operator(self.operator) + return operator_callable(normalized_item, self.version) + + def filter( + self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None + ) -> Iterator[UnparsedVersionVar]: + """Filter items in the given iterable, that match the specifier. + + :param iterable: + An iterable that can contain version strings and :class:`Version` instances. + The items in the iterable will be filtered according to the specifier. + :param prereleases: + Whether or not to allow prereleases in the returned iterator. If set to + ``None`` (the default), it will be intelligently decide whether to allow + prereleases or not (based on the :attr:`prereleases` attribute, and + whether the only versions matching are prereleases). + + This method is smarter than just ``filter(Specifier().contains, [...])`` + because it implements the rule from :pep:`440` that a prerelease item + SHOULD be accepted if no other versions match the given specifier. + + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) + ['1.3'] + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.2.3", "1.3", Version("1.4")])) + ['1.2.3', '1.3', ] + >>> list(Specifier(">=1.2.3").filter(["1.2", "1.5a1"])) + ['1.5a1'] + >>> list(Specifier(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + >>> list(Specifier(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + """ + + yielded = False + found_prereleases = [] + + kw = {"prereleases": prereleases if prereleases is not None else True} + + # Attempt to iterate over all the values in the iterable and if any of + # them match, yield them. + for version in iterable: + parsed_version = _coerce_version(version) + + if self.contains(parsed_version, **kw): + # If our version is a prerelease, and we were not set to allow + # prereleases, then we'll store it for later in case nothing + # else matches this specifier. + if parsed_version.is_prerelease and not ( + prereleases or self.prereleases + ): + found_prereleases.append(version) + # Either this is not a prerelease, or we should have been + # accepting prereleases from the beginning. + else: + yielded = True + yield version + + # Now that we've iterated over everything, determine if we've yielded + # any values, and if we have not and we have any prereleases stored up + # then we will go ahead and yield the prereleases. + if not yielded and found_prereleases: + for version in found_prereleases: + yield version + + +_prefix_regex = re.compile(r"^([0-9]+)((?:a|b|c|rc)[0-9]+)$") + + +def _version_split(version: str) -> List[str]: + """Split version into components. + + The split components are intended for version comparison. The logic does + not attempt to retain the original version string, so joining the + components back with :func:`_version_join` may not produce the original + version string. + """ + result: List[str] = [] + + epoch, _, rest = version.rpartition("!") + result.append(epoch or "0") + + for item in rest.split("."): + match = _prefix_regex.search(item) + if match: + result.extend(match.groups()) + else: + result.append(item) + return result + + +def _version_join(components: List[str]) -> str: + """Join split version components into a version string. + + This function assumes the input came from :func:`_version_split`, where the + first component must be the epoch (either empty or numeric), and all other + components numeric. + """ + epoch, *rest = components + return f"{epoch}!{'.'.join(rest)}" + + +def _is_not_suffix(segment: str) -> bool: + return not any( + segment.startswith(prefix) for prefix in ("dev", "a", "b", "rc", "post") + ) + + +def _pad_version(left: List[str], right: List[str]) -> Tuple[List[str], List[str]]: + left_split, right_split = [], [] + + # Get the release segment of our versions + left_split.append(list(itertools.takewhile(lambda x: x.isdigit(), left))) + right_split.append(list(itertools.takewhile(lambda x: x.isdigit(), right))) + + # Get the rest of our versions + left_split.append(left[len(left_split[0]) :]) + right_split.append(right[len(right_split[0]) :]) + + # Insert our padding + left_split.insert(1, ["0"] * max(0, len(right_split[0]) - len(left_split[0]))) + right_split.insert(1, ["0"] * max(0, len(left_split[0]) - len(right_split[0]))) + + return (list(itertools.chain(*left_split)), list(itertools.chain(*right_split))) + + +class SpecifierSet(BaseSpecifier): + """This class abstracts handling of a set of version specifiers. + + It can be passed a single specifier (``>=3.0``), a comma-separated list of + specifiers (``>=3.0,!=3.1``), or no specifier at all. + """ + + def __init__( + self, specifiers: str = "", prereleases: Optional[bool] = None + ) -> None: + """Initialize a SpecifierSet instance. + + :param specifiers: + The string representation of a specifier or a comma-separated list of + specifiers which will be parsed and normalized before use. + :param prereleases: + This tells the SpecifierSet if it should accept prerelease versions if + applicable or not. The default of ``None`` will autodetect it from the + given specifiers. + + :raises InvalidSpecifier: + If the given ``specifiers`` are not parseable than this exception will be + raised. + """ + + # Split on `,` to break each individual specifier into it's own item, and + # strip each item to remove leading/trailing whitespace. + split_specifiers = [s.strip() for s in specifiers.split(",") if s.strip()] + + # Parsed each individual specifier, attempting first to make it a + # Specifier. + parsed: Set[Specifier] = set() + for specifier in split_specifiers: + parsed.add(Specifier(specifier)) + + # Turn our parsed specifiers into a frozen set and save them for later. + self._specs = frozenset(parsed) + + # Store our prereleases value so we can use it later to determine if + # we accept prereleases or not. + self._prereleases = prereleases + + @property + def prereleases(self) -> Optional[bool]: + # If we have been given an explicit prerelease modifier, then we'll + # pass that through here. + if self._prereleases is not None: + return self._prereleases + + # If we don't have any specifiers, and we don't have a forced value, + # then we'll just return None since we don't know if this should have + # pre-releases or not. + if not self._specs: + return None + + # Otherwise we'll see if any of the given specifiers accept + # prereleases, if any of them do we'll return True, otherwise False. + return any(s.prereleases for s in self._specs) + + @prereleases.setter + def prereleases(self, value: bool) -> None: + self._prereleases = value + + def __repr__(self) -> str: + """A representation of the specifier set that shows all internal state. + + Note that the ordering of the individual specifiers within the set may not + match the input string. + + >>> SpecifierSet('>=1.0.0,!=2.0.0') + =1.0.0')> + >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=False) + =1.0.0', prereleases=False)> + >>> SpecifierSet('>=1.0.0,!=2.0.0', prereleases=True) + =1.0.0', prereleases=True)> + """ + pre = ( + f", prereleases={self.prereleases!r}" + if self._prereleases is not None + else "" + ) + + return f"" + + def __str__(self) -> str: + """A string representation of the specifier set that can be round-tripped. + + Note that the ordering of the individual specifiers within the set may not + match the input string. + + >>> str(SpecifierSet(">=1.0.0,!=1.0.1")) + '!=1.0.1,>=1.0.0' + >>> str(SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False)) + '!=1.0.1,>=1.0.0' + """ + return ",".join(sorted(str(s) for s in self._specs)) + + def __hash__(self) -> int: + return hash(self._specs) + + def __and__(self, other: Union["SpecifierSet", str]) -> "SpecifierSet": + """Return a SpecifierSet which is a combination of the two sets. + + :param other: The other object to combine with. + + >>> SpecifierSet(">=1.0.0,!=1.0.1") & '<=2.0.0,!=2.0.1' + =1.0.0')> + >>> SpecifierSet(">=1.0.0,!=1.0.1") & SpecifierSet('<=2.0.0,!=2.0.1') + =1.0.0')> + """ + if isinstance(other, str): + other = SpecifierSet(other) + elif not isinstance(other, SpecifierSet): + return NotImplemented + + specifier = SpecifierSet() + specifier._specs = frozenset(self._specs | other._specs) + + if self._prereleases is None and other._prereleases is not None: + specifier._prereleases = other._prereleases + elif self._prereleases is not None and other._prereleases is None: + specifier._prereleases = self._prereleases + elif self._prereleases == other._prereleases: + specifier._prereleases = self._prereleases + else: + raise ValueError( + "Cannot combine SpecifierSets with True and False prerelease " + "overrides." + ) + + return specifier + + def __eq__(self, other: object) -> bool: + """Whether or not the two SpecifierSet-like objects are equal. + + :param other: The other object to check against. + + The value of :attr:`prereleases` is ignored. + + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> (SpecifierSet(">=1.0.0,!=1.0.1", prereleases=False) == + ... SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True)) + True + >>> SpecifierSet(">=1.0.0,!=1.0.1") == ">=1.0.0,!=1.0.1" + True + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1") == SpecifierSet(">=1.0.0,!=1.0.2") + False + """ + if isinstance(other, (str, Specifier)): + other = SpecifierSet(str(other)) + elif not isinstance(other, SpecifierSet): + return NotImplemented + + return self._specs == other._specs + + def __len__(self) -> int: + """Returns the number of specifiers in this specifier set.""" + return len(self._specs) + + def __iter__(self) -> Iterator[Specifier]: + """ + Returns an iterator over all the underlying :class:`Specifier` instances + in this specifier set. + + >>> sorted(SpecifierSet(">=1.0.0,!=1.0.1"), key=str) + [, =1.0.0')>] + """ + return iter(self._specs) + + def __contains__(self, item: UnparsedVersion) -> bool: + """Return whether or not the item is contained in this specifier. + + :param item: The item to check for. + + This is used for the ``in`` operator and behaves the same as + :meth:`contains` with no ``prereleases`` argument passed. + + >>> "1.2.3" in SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> Version("1.2.3") in SpecifierSet(">=1.0.0,!=1.0.1") + True + >>> "1.0.1" in SpecifierSet(">=1.0.0,!=1.0.1") + False + >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1") + False + >>> "1.3.0a1" in SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True) + True + """ + return self.contains(item) + + def contains( + self, + item: UnparsedVersion, + prereleases: Optional[bool] = None, + installed: Optional[bool] = None, + ) -> bool: + """Return whether or not the item is contained in this SpecifierSet. + + :param item: + The item to check for, which can be a version string or a + :class:`Version` instance. + :param prereleases: + Whether or not to match prereleases with this SpecifierSet. If set to + ``None`` (the default), it uses :attr:`prereleases` to determine + whether or not prereleases are allowed. + + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.2.3") + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains(Version("1.2.3")) + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.0.1") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1") + False + >>> SpecifierSet(">=1.0.0,!=1.0.1", prereleases=True).contains("1.3.0a1") + True + >>> SpecifierSet(">=1.0.0,!=1.0.1").contains("1.3.0a1", prereleases=True) + True + """ + # Ensure that our item is a Version instance. + if not isinstance(item, Version): + item = Version(item) + + # Determine if we're forcing a prerelease or not, if we're not forcing + # one for this particular filter call, then we'll use whatever the + # SpecifierSet thinks for whether or not we should support prereleases. + if prereleases is None: + prereleases = self.prereleases + + # We can determine if we're going to allow pre-releases by looking to + # see if any of the underlying items supports them. If none of them do + # and this item is a pre-release then we do not allow it and we can + # short circuit that here. + # Note: This means that 1.0.dev1 would not be contained in something + # like >=1.0.devabc however it would be in >=1.0.debabc,>0.0.dev0 + if not prereleases and item.is_prerelease: + return False + + if installed and item.is_prerelease: + item = Version(item.base_version) + + # We simply dispatch to the underlying specs here to make sure that the + # given version is contained within all of them. + # Note: This use of all() here means that an empty set of specifiers + # will always return True, this is an explicit design decision. + return all(s.contains(item, prereleases=prereleases) for s in self._specs) + + def filter( + self, iterable: Iterable[UnparsedVersionVar], prereleases: Optional[bool] = None + ) -> Iterator[UnparsedVersionVar]: + """Filter items in the given iterable, that match the specifiers in this set. + + :param iterable: + An iterable that can contain version strings and :class:`Version` instances. + The items in the iterable will be filtered according to the specifier. + :param prereleases: + Whether or not to allow prereleases in the returned iterator. If set to + ``None`` (the default), it will be intelligently decide whether to allow + prereleases or not (based on the :attr:`prereleases` attribute, and + whether the only versions matching are prereleases). + + This method is smarter than just ``filter(SpecifierSet(...).contains, [...])`` + because it implements the rule from :pep:`440` that a prerelease item + SHOULD be accepted if no other versions match the given specifier. + + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", "1.5a1"])) + ['1.3'] + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.3", Version("1.4")])) + ['1.3', ] + >>> list(SpecifierSet(">=1.2.3").filter(["1.2", "1.5a1"])) + [] + >>> list(SpecifierSet(">=1.2.3").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + >>> list(SpecifierSet(">=1.2.3", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + + An "empty" SpecifierSet will filter items based on the presence of prerelease + versions in the set. + + >>> list(SpecifierSet("").filter(["1.3", "1.5a1"])) + ['1.3'] + >>> list(SpecifierSet("").filter(["1.5a1"])) + ['1.5a1'] + >>> list(SpecifierSet("", prereleases=True).filter(["1.3", "1.5a1"])) + ['1.3', '1.5a1'] + >>> list(SpecifierSet("").filter(["1.3", "1.5a1"], prereleases=True)) + ['1.3', '1.5a1'] + """ + # Determine if we're forcing a prerelease or not, if we're not forcing + # one for this particular filter call, then we'll use whatever the + # SpecifierSet thinks for whether or not we should support prereleases. + if prereleases is None: + prereleases = self.prereleases + + # If we have any specifiers, then we want to wrap our iterable in the + # filter method for each one, this will act as a logical AND amongst + # each specifier. + if self._specs: + for spec in self._specs: + iterable = spec.filter(iterable, prereleases=bool(prereleases)) + return iter(iterable) + # If we do not have any specifiers, then we need to have a rough filter + # which will filter out any pre-releases, unless there are no final + # releases. + else: + filtered: List[UnparsedVersionVar] = [] + found_prereleases: List[UnparsedVersionVar] = [] + + for item in iterable: + parsed_version = _coerce_version(item) + + # Store any item which is a pre-release for later unless we've + # already found a final version or we are accepting prereleases + if parsed_version.is_prerelease and not prereleases: + if not filtered: + found_prereleases.append(item) + else: + filtered.append(item) + + # If we've found no items except for pre-releases, then we'll go + # ahead and use the pre-releases + if not filtered and found_prereleases and prereleases is None: + return iter(found_prereleases) + + return iter(filtered) diff --git a/tools/gyp/pylib/packaging/tags.py b/tools/gyp/pylib/packaging/tags.py new file mode 100644 index 00000000000000..37f33b1ef849ed --- /dev/null +++ b/tools/gyp/pylib/packaging/tags.py @@ -0,0 +1,553 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import logging +import platform +import struct +import subprocess +import sys +import sysconfig +from importlib.machinery import EXTENSION_SUFFIXES +from typing import ( + Dict, + FrozenSet, + Iterable, + Iterator, + List, + Optional, + Sequence, + Tuple, + Union, + cast, +) + +from . import _manylinux, _musllinux + +logger = logging.getLogger(__name__) + +PythonVersion = Sequence[int] +MacVersion = Tuple[int, int] + +INTERPRETER_SHORT_NAMES: Dict[str, str] = { + "python": "py", # Generic. + "cpython": "cp", + "pypy": "pp", + "ironpython": "ip", + "jython": "jy", +} + + +_32_BIT_INTERPRETER = struct.calcsize("P") == 4 + + +class Tag: + """ + A representation of the tag triple for a wheel. + + Instances are considered immutable and thus are hashable. Equality checking + is also supported. + """ + + __slots__ = ["_interpreter", "_abi", "_platform", "_hash"] + + def __init__(self, interpreter: str, abi: str, platform: str) -> None: + self._interpreter = interpreter.lower() + self._abi = abi.lower() + self._platform = platform.lower() + # The __hash__ of every single element in a Set[Tag] will be evaluated each time + # that a set calls its `.disjoint()` method, which may be called hundreds of + # times when scanning a page of links for packages with tags matching that + # Set[Tag]. Pre-computing the value here produces significant speedups for + # downstream consumers. + self._hash = hash((self._interpreter, self._abi, self._platform)) + + @property + def interpreter(self) -> str: + return self._interpreter + + @property + def abi(self) -> str: + return self._abi + + @property + def platform(self) -> str: + return self._platform + + def __eq__(self, other: object) -> bool: + if not isinstance(other, Tag): + return NotImplemented + + return ( + (self._hash == other._hash) # Short-circuit ASAP for perf reasons. + and (self._platform == other._platform) + and (self._abi == other._abi) + and (self._interpreter == other._interpreter) + ) + + def __hash__(self) -> int: + return self._hash + + def __str__(self) -> str: + return f"{self._interpreter}-{self._abi}-{self._platform}" + + def __repr__(self) -> str: + return f"<{self} @ {id(self)}>" + + +def parse_tag(tag: str) -> FrozenSet[Tag]: + """ + Parses the provided tag (e.g. `py3-none-any`) into a frozenset of Tag instances. + + Returning a set is required due to the possibility that the tag is a + compressed tag set. + """ + tags = set() + interpreters, abis, platforms = tag.split("-") + for interpreter in interpreters.split("."): + for abi in abis.split("."): + for platform_ in platforms.split("."): + tags.add(Tag(interpreter, abi, platform_)) + return frozenset(tags) + + +def _get_config_var(name: str, warn: bool = False) -> Union[int, str, None]: + value: Union[int, str, None] = sysconfig.get_config_var(name) + if value is None and warn: + logger.debug( + "Config variable '%s' is unset, Python ABI tag may be incorrect", name + ) + return value + + +def _normalize_string(string: str) -> str: + return string.replace(".", "_").replace("-", "_").replace(" ", "_") + + +def _abi3_applies(python_version: PythonVersion) -> bool: + """ + Determine if the Python version supports abi3. + + PEP 384 was first implemented in Python 3.2. + """ + return len(python_version) > 1 and tuple(python_version) >= (3, 2) + + +def _cpython_abis(py_version: PythonVersion, warn: bool = False) -> List[str]: + py_version = tuple(py_version) # To allow for version comparison. + abis = [] + version = _version_nodot(py_version[:2]) + debug = pymalloc = ucs4 = "" + with_debug = _get_config_var("Py_DEBUG", warn) + has_refcount = hasattr(sys, "gettotalrefcount") + # Windows doesn't set Py_DEBUG, so checking for support of debug-compiled + # extension modules is the best option. + # https://github.com/pypa/pip/issues/3383#issuecomment-173267692 + has_ext = "_d.pyd" in EXTENSION_SUFFIXES + if with_debug or (with_debug is None and (has_refcount or has_ext)): + debug = "d" + if py_version < (3, 8): + with_pymalloc = _get_config_var("WITH_PYMALLOC", warn) + if with_pymalloc or with_pymalloc is None: + pymalloc = "m" + if py_version < (3, 3): + unicode_size = _get_config_var("Py_UNICODE_SIZE", warn) + if unicode_size == 4 or ( + unicode_size is None and sys.maxunicode == 0x10FFFF + ): + ucs4 = "u" + elif debug: + # Debug builds can also load "normal" extension modules. + # We can also assume no UCS-4 or pymalloc requirement. + abis.append(f"cp{version}") + abis.insert( + 0, + "cp{version}{debug}{pymalloc}{ucs4}".format( + version=version, debug=debug, pymalloc=pymalloc, ucs4=ucs4 + ), + ) + return abis + + +def cpython_tags( + python_version: Optional[PythonVersion] = None, + abis: Optional[Iterable[str]] = None, + platforms: Optional[Iterable[str]] = None, + *, + warn: bool = False, +) -> Iterator[Tag]: + """ + Yields the tags for a CPython interpreter. + + The tags consist of: + - cp-- + - cp-abi3- + - cp-none- + - cp-abi3- # Older Python versions down to 3.2. + + If python_version only specifies a major version then user-provided ABIs and + the 'none' ABItag will be used. + + If 'abi3' or 'none' are specified in 'abis' then they will be yielded at + their normal position and not at the beginning. + """ + if not python_version: + python_version = sys.version_info[:2] + + interpreter = f"cp{_version_nodot(python_version[:2])}" + + if abis is None: + if len(python_version) > 1: + abis = _cpython_abis(python_version, warn) + else: + abis = [] + abis = list(abis) + # 'abi3' and 'none' are explicitly handled later. + for explicit_abi in ("abi3", "none"): + try: + abis.remove(explicit_abi) + except ValueError: + pass + + platforms = list(platforms or platform_tags()) + for abi in abis: + for platform_ in platforms: + yield Tag(interpreter, abi, platform_) + if _abi3_applies(python_version): + yield from (Tag(interpreter, "abi3", platform_) for platform_ in platforms) + yield from (Tag(interpreter, "none", platform_) for platform_ in platforms) + + if _abi3_applies(python_version): + for minor_version in range(python_version[1] - 1, 1, -1): + for platform_ in platforms: + interpreter = "cp{version}".format( + version=_version_nodot((python_version[0], minor_version)) + ) + yield Tag(interpreter, "abi3", platform_) + + +def _generic_abi() -> List[str]: + """ + Return the ABI tag based on EXT_SUFFIX. + """ + # The following are examples of `EXT_SUFFIX`. + # We want to keep the parts which are related to the ABI and remove the + # parts which are related to the platform: + # - linux: '.cpython-310-x86_64-linux-gnu.so' => cp310 + # - mac: '.cpython-310-darwin.so' => cp310 + # - win: '.cp310-win_amd64.pyd' => cp310 + # - win: '.pyd' => cp37 (uses _cpython_abis()) + # - pypy: '.pypy38-pp73-x86_64-linux-gnu.so' => pypy38_pp73 + # - graalpy: '.graalpy-38-native-x86_64-darwin.dylib' + # => graalpy_38_native + + ext_suffix = _get_config_var("EXT_SUFFIX", warn=True) + if not isinstance(ext_suffix, str) or ext_suffix[0] != ".": + raise SystemError("invalid sysconfig.get_config_var('EXT_SUFFIX')") + parts = ext_suffix.split(".") + if len(parts) < 3: + # CPython3.7 and earlier uses ".pyd" on Windows. + return _cpython_abis(sys.version_info[:2]) + soabi = parts[1] + if soabi.startswith("cpython"): + # non-windows + abi = "cp" + soabi.split("-")[1] + elif soabi.startswith("cp"): + # windows + abi = soabi.split("-")[0] + elif soabi.startswith("pypy"): + abi = "-".join(soabi.split("-")[:2]) + elif soabi.startswith("graalpy"): + abi = "-".join(soabi.split("-")[:3]) + elif soabi: + # pyston, ironpython, others? + abi = soabi + else: + return [] + return [_normalize_string(abi)] + + +def generic_tags( + interpreter: Optional[str] = None, + abis: Optional[Iterable[str]] = None, + platforms: Optional[Iterable[str]] = None, + *, + warn: bool = False, +) -> Iterator[Tag]: + """ + Yields the tags for a generic interpreter. + + The tags consist of: + - -- + + The "none" ABI will be added if it was not explicitly provided. + """ + if not interpreter: + interp_name = interpreter_name() + interp_version = interpreter_version(warn=warn) + interpreter = "".join([interp_name, interp_version]) + if abis is None: + abis = _generic_abi() + else: + abis = list(abis) + platforms = list(platforms or platform_tags()) + if "none" not in abis: + abis.append("none") + for abi in abis: + for platform_ in platforms: + yield Tag(interpreter, abi, platform_) + + +def _py_interpreter_range(py_version: PythonVersion) -> Iterator[str]: + """ + Yields Python versions in descending order. + + After the latest version, the major-only version will be yielded, and then + all previous versions of that major version. + """ + if len(py_version) > 1: + yield f"py{_version_nodot(py_version[:2])}" + yield f"py{py_version[0]}" + if len(py_version) > 1: + for minor in range(py_version[1] - 1, -1, -1): + yield f"py{_version_nodot((py_version[0], minor))}" + + +def compatible_tags( + python_version: Optional[PythonVersion] = None, + interpreter: Optional[str] = None, + platforms: Optional[Iterable[str]] = None, +) -> Iterator[Tag]: + """ + Yields the sequence of tags that are compatible with a specific version of Python. + + The tags consist of: + - py*-none- + - -none-any # ... if `interpreter` is provided. + - py*-none-any + """ + if not python_version: + python_version = sys.version_info[:2] + platforms = list(platforms or platform_tags()) + for version in _py_interpreter_range(python_version): + for platform_ in platforms: + yield Tag(version, "none", platform_) + if interpreter: + yield Tag(interpreter, "none", "any") + for version in _py_interpreter_range(python_version): + yield Tag(version, "none", "any") + + +def _mac_arch(arch: str, is_32bit: bool = _32_BIT_INTERPRETER) -> str: + if not is_32bit: + return arch + + if arch.startswith("ppc"): + return "ppc" + + return "i386" + + +def _mac_binary_formats(version: MacVersion, cpu_arch: str) -> List[str]: + formats = [cpu_arch] + if cpu_arch == "x86_64": + if version < (10, 4): + return [] + formats.extend(["intel", "fat64", "fat32"]) + + elif cpu_arch == "i386": + if version < (10, 4): + return [] + formats.extend(["intel", "fat32", "fat"]) + + elif cpu_arch == "ppc64": + # TODO: Need to care about 32-bit PPC for ppc64 through 10.2? + if version > (10, 5) or version < (10, 4): + return [] + formats.append("fat64") + + elif cpu_arch == "ppc": + if version > (10, 6): + return [] + formats.extend(["fat32", "fat"]) + + if cpu_arch in {"arm64", "x86_64"}: + formats.append("universal2") + + if cpu_arch in {"x86_64", "i386", "ppc64", "ppc", "intel"}: + formats.append("universal") + + return formats + + +def mac_platforms( + version: Optional[MacVersion] = None, arch: Optional[str] = None +) -> Iterator[str]: + """ + Yields the platform tags for a macOS system. + + The `version` parameter is a two-item tuple specifying the macOS version to + generate platform tags for. The `arch` parameter is the CPU architecture to + generate platform tags for. Both parameters default to the appropriate value + for the current system. + """ + version_str, _, cpu_arch = platform.mac_ver() + if version is None: + version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2]))) + if version == (10, 16): + # When built against an older macOS SDK, Python will report macOS 10.16 + # instead of the real version. + version_str = subprocess.run( + [ + sys.executable, + "-sS", + "-c", + "import platform; print(platform.mac_ver()[0])", + ], + check=True, + env={"SYSTEM_VERSION_COMPAT": "0"}, + stdout=subprocess.PIPE, + text=True, + ).stdout + version = cast("MacVersion", tuple(map(int, version_str.split(".")[:2]))) + else: + version = version + if arch is None: + arch = _mac_arch(cpu_arch) + else: + arch = arch + + if (10, 0) <= version and version < (11, 0): + # Prior to Mac OS 11, each yearly release of Mac OS bumped the + # "minor" version number. The major version was always 10. + for minor_version in range(version[1], -1, -1): + compat_version = 10, minor_version + binary_formats = _mac_binary_formats(compat_version, arch) + for binary_format in binary_formats: + yield "macosx_{major}_{minor}_{binary_format}".format( + major=10, minor=minor_version, binary_format=binary_format + ) + + if version >= (11, 0): + # Starting with Mac OS 11, each yearly release bumps the major version + # number. The minor versions are now the midyear updates. + for major_version in range(version[0], 10, -1): + compat_version = major_version, 0 + binary_formats = _mac_binary_formats(compat_version, arch) + for binary_format in binary_formats: + yield "macosx_{major}_{minor}_{binary_format}".format( + major=major_version, minor=0, binary_format=binary_format + ) + + if version >= (11, 0): + # Mac OS 11 on x86_64 is compatible with binaries from previous releases. + # Arm64 support was introduced in 11.0, so no Arm binaries from previous + # releases exist. + # + # However, the "universal2" binary format can have a + # macOS version earlier than 11.0 when the x86_64 part of the binary supports + # that version of macOS. + if arch == "x86_64": + for minor_version in range(16, 3, -1): + compat_version = 10, minor_version + binary_formats = _mac_binary_formats(compat_version, arch) + for binary_format in binary_formats: + yield "macosx_{major}_{minor}_{binary_format}".format( + major=compat_version[0], + minor=compat_version[1], + binary_format=binary_format, + ) + else: + for minor_version in range(16, 3, -1): + compat_version = 10, minor_version + binary_format = "universal2" + yield "macosx_{major}_{minor}_{binary_format}".format( + major=compat_version[0], + minor=compat_version[1], + binary_format=binary_format, + ) + + +def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]: + linux = _normalize_string(sysconfig.get_platform()) + if not linux.startswith("linux_"): + # we should never be here, just yield the sysconfig one and return + yield linux + return + if is_32bit: + if linux == "linux_x86_64": + linux = "linux_i686" + elif linux == "linux_aarch64": + linux = "linux_armv8l" + _, arch = linux.split("_", 1) + archs = {"armv8l": ["armv8l", "armv7l"]}.get(arch, [arch]) + yield from _manylinux.platform_tags(archs) + yield from _musllinux.platform_tags(archs) + for arch in archs: + yield f"linux_{arch}" + + +def _generic_platforms() -> Iterator[str]: + yield _normalize_string(sysconfig.get_platform()) + + +def platform_tags() -> Iterator[str]: + """ + Provides the platform tags for this installation. + """ + if platform.system() == "Darwin": + return mac_platforms() + elif platform.system() == "Linux": + return _linux_platforms() + else: + return _generic_platforms() + + +def interpreter_name() -> str: + """ + Returns the name of the running interpreter. + + Some implementations have a reserved, two-letter abbreviation which will + be returned when appropriate. + """ + name = sys.implementation.name + return INTERPRETER_SHORT_NAMES.get(name) or name + + +def interpreter_version(*, warn: bool = False) -> str: + """ + Returns the version of the running interpreter. + """ + version = _get_config_var("py_version_nodot", warn=warn) + if version: + version = str(version) + else: + version = _version_nodot(sys.version_info[:2]) + return version + + +def _version_nodot(version: PythonVersion) -> str: + return "".join(map(str, version)) + + +def sys_tags(*, warn: bool = False) -> Iterator[Tag]: + """ + Returns the sequence of tag triples for the running interpreter. + + The order of the sequence corresponds to priority order for the + interpreter, from most to least important. + """ + + interp_name = interpreter_name() + if interp_name == "cp": + yield from cpython_tags(warn=warn) + else: + yield from generic_tags() + + if interp_name == "pp": + interp = "pp3" + elif interp_name == "cp": + interp = "cp" + interpreter_version(warn=warn) + else: + interp = None + yield from compatible_tags(interpreter=interp) diff --git a/tools/gyp/pylib/packaging/utils.py b/tools/gyp/pylib/packaging/utils.py new file mode 100644 index 00000000000000..c2c2f75aa80628 --- /dev/null +++ b/tools/gyp/pylib/packaging/utils.py @@ -0,0 +1,172 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. + +import re +from typing import FrozenSet, NewType, Tuple, Union, cast + +from .tags import Tag, parse_tag +from .version import InvalidVersion, Version + +BuildTag = Union[Tuple[()], Tuple[int, str]] +NormalizedName = NewType("NormalizedName", str) + + +class InvalidName(ValueError): + """ + An invalid distribution name; users should refer to the packaging user guide. + """ + + +class InvalidWheelFilename(ValueError): + """ + An invalid wheel filename was found, users should refer to PEP 427. + """ + + +class InvalidSdistFilename(ValueError): + """ + An invalid sdist filename was found, users should refer to the packaging user guide. + """ + + +# Core metadata spec for `Name` +_validate_regex = re.compile( + r"^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$", re.IGNORECASE +) +_canonicalize_regex = re.compile(r"[-_.]+") +_normalized_regex = re.compile(r"^([a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9])$") +# PEP 427: The build number must start with a digit. +_build_tag_regex = re.compile(r"(\d+)(.*)") + + +def canonicalize_name(name: str, *, validate: bool = False) -> NormalizedName: + if validate and not _validate_regex.match(name): + raise InvalidName(f"name is invalid: {name!r}") + # This is taken from PEP 503. + value = _canonicalize_regex.sub("-", name).lower() + return cast(NormalizedName, value) + + +def is_normalized_name(name: str) -> bool: + return _normalized_regex.match(name) is not None + + +def canonicalize_version( + version: Union[Version, str], *, strip_trailing_zero: bool = True +) -> str: + """ + This is very similar to Version.__str__, but has one subtle difference + with the way it handles the release segment. + """ + if isinstance(version, str): + try: + parsed = Version(version) + except InvalidVersion: + # Legacy versions cannot be normalized + return version + else: + parsed = version + + parts = [] + + # Epoch + if parsed.epoch != 0: + parts.append(f"{parsed.epoch}!") + + # Release segment + release_segment = ".".join(str(x) for x in parsed.release) + if strip_trailing_zero: + # NB: This strips trailing '.0's to normalize + release_segment = re.sub(r"(\.0)+$", "", release_segment) + parts.append(release_segment) + + # Pre-release + if parsed.pre is not None: + parts.append("".join(str(x) for x in parsed.pre)) + + # Post-release + if parsed.post is not None: + parts.append(f".post{parsed.post}") + + # Development release + if parsed.dev is not None: + parts.append(f".dev{parsed.dev}") + + # Local version segment + if parsed.local is not None: + parts.append(f"+{parsed.local}") + + return "".join(parts) + + +def parse_wheel_filename( + filename: str, +) -> Tuple[NormalizedName, Version, BuildTag, FrozenSet[Tag]]: + if not filename.endswith(".whl"): + raise InvalidWheelFilename( + f"Invalid wheel filename (extension must be '.whl'): {filename}" + ) + + filename = filename[:-4] + dashes = filename.count("-") + if dashes not in (4, 5): + raise InvalidWheelFilename( + f"Invalid wheel filename (wrong number of parts): {filename}" + ) + + parts = filename.split("-", dashes - 2) + name_part = parts[0] + # See PEP 427 for the rules on escaping the project name. + if "__" in name_part or re.match(r"^[\w\d._]*$", name_part, re.UNICODE) is None: + raise InvalidWheelFilename(f"Invalid project name: {filename}") + name = canonicalize_name(name_part) + + try: + version = Version(parts[1]) + except InvalidVersion as e: + raise InvalidWheelFilename( + f"Invalid wheel filename (invalid version): {filename}" + ) from e + + if dashes == 5: + build_part = parts[2] + build_match = _build_tag_regex.match(build_part) + if build_match is None: + raise InvalidWheelFilename( + f"Invalid build number: {build_part} in '{filename}'" + ) + build = cast(BuildTag, (int(build_match.group(1)), build_match.group(2))) + else: + build = () + tags = parse_tag(parts[-1]) + return (name, version, build, tags) + + +def parse_sdist_filename(filename: str) -> Tuple[NormalizedName, Version]: + if filename.endswith(".tar.gz"): + file_stem = filename[: -len(".tar.gz")] + elif filename.endswith(".zip"): + file_stem = filename[: -len(".zip")] + else: + raise InvalidSdistFilename( + f"Invalid sdist filename (extension must be '.tar.gz' or '.zip'):" + f" {filename}" + ) + + # We are requiring a PEP 440 version, which cannot contain dashes, + # so we split on the last dash. + name_part, sep, version_part = file_stem.rpartition("-") + if not sep: + raise InvalidSdistFilename(f"Invalid sdist filename: {filename}") + + name = canonicalize_name(name_part) + + try: + version = Version(version_part) + except InvalidVersion as e: + raise InvalidSdistFilename( + f"Invalid sdist filename (invalid version): {filename}" + ) from e + + return (name, version) diff --git a/tools/gyp/pylib/packaging/version.py b/tools/gyp/pylib/packaging/version.py new file mode 100644 index 00000000000000..5faab9bd0dcf28 --- /dev/null +++ b/tools/gyp/pylib/packaging/version.py @@ -0,0 +1,563 @@ +# This file is dual licensed under the terms of the Apache License, Version +# 2.0, and the BSD License. See the LICENSE file in the root of this repository +# for complete details. +""" +.. testsetup:: + + from packaging.version import parse, Version +""" + +import itertools +import re +from typing import Any, Callable, NamedTuple, Optional, SupportsInt, Tuple, Union + +from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType + +__all__ = ["VERSION_PATTERN", "parse", "Version", "InvalidVersion"] + +LocalType = Tuple[Union[int, str], ...] + +CmpPrePostDevType = Union[InfinityType, NegativeInfinityType, Tuple[str, int]] +CmpLocalType = Union[ + NegativeInfinityType, + Tuple[Union[Tuple[int, str], Tuple[NegativeInfinityType, Union[int, str]]], ...], +] +CmpKey = Tuple[ + int, + Tuple[int, ...], + CmpPrePostDevType, + CmpPrePostDevType, + CmpPrePostDevType, + CmpLocalType, +] +VersionComparisonMethod = Callable[[CmpKey, CmpKey], bool] + + +class _Version(NamedTuple): + epoch: int + release: Tuple[int, ...] + dev: Optional[Tuple[str, int]] + pre: Optional[Tuple[str, int]] + post: Optional[Tuple[str, int]] + local: Optional[LocalType] + + +def parse(version: str) -> "Version": + """Parse the given version string. + + >>> parse('1.0.dev1') + + + :param version: The version string to parse. + :raises InvalidVersion: When the version string is not a valid version. + """ + return Version(version) + + +class InvalidVersion(ValueError): + """Raised when a version string is not a valid version. + + >>> Version("invalid") + Traceback (most recent call last): + ... + packaging.version.InvalidVersion: Invalid version: 'invalid' + """ + + +class _BaseVersion: + _key: Tuple[Any, ...] + + def __hash__(self) -> int: + return hash(self._key) + + # Please keep the duplicated `isinstance` check + # in the six comparisons hereunder + # unless you find a way to avoid adding overhead function calls. + def __lt__(self, other: "_BaseVersion") -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key < other._key + + def __le__(self, other: "_BaseVersion") -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key <= other._key + + def __eq__(self, other: object) -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key == other._key + + def __ge__(self, other: "_BaseVersion") -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key >= other._key + + def __gt__(self, other: "_BaseVersion") -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key > other._key + + def __ne__(self, other: object) -> bool: + if not isinstance(other, _BaseVersion): + return NotImplemented + + return self._key != other._key + + +# Deliberately not anchored to the start and end of the string, to make it +# easier for 3rd party code to reuse +_VERSION_PATTERN = r""" + v? + (?: + (?:(?P[0-9]+)!)? # epoch + (?P[0-9]+(?:\.[0-9]+)*) # release segment + (?P

                                          # pre-release
+            [-_\.]?
+            (?Palpha|a|beta|b|preview|pre|c|rc)
+            [-_\.]?
+            (?P[0-9]+)?
+        )?
+        (?P                                         # post release
+            (?:-(?P[0-9]+))
+            |
+            (?:
+                [-_\.]?
+                (?Ppost|rev|r)
+                [-_\.]?
+                (?P[0-9]+)?
+            )
+        )?
+        (?P                                          # dev release
+            [-_\.]?
+            (?Pdev)
+            [-_\.]?
+            (?P[0-9]+)?
+        )?
+    )
+    (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
+"""
+
+VERSION_PATTERN = _VERSION_PATTERN
+"""
+A string containing the regular expression used to match a valid version.
+
+The pattern is not anchored at either end, and is intended for embedding in larger
+expressions (for example, matching a version number as part of a file name). The
+regular expression should be compiled with the ``re.VERBOSE`` and ``re.IGNORECASE``
+flags set.
+
+:meta hide-value:
+"""
+
+
+class Version(_BaseVersion):
+    """This class abstracts handling of a project's versions.
+
+    A :class:`Version` instance is comparison aware and can be compared and
+    sorted using the standard Python interfaces.
+
+    >>> v1 = Version("1.0a5")
+    >>> v2 = Version("1.0")
+    >>> v1
+    
+    >>> v2
+    
+    >>> v1 < v2
+    True
+    >>> v1 == v2
+    False
+    >>> v1 > v2
+    False
+    >>> v1 >= v2
+    False
+    >>> v1 <= v2
+    True
+    """
+
+    _regex = re.compile(r"^\s*" + VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE)
+    _key: CmpKey
+
+    def __init__(self, version: str) -> None:
+        """Initialize a Version object.
+
+        :param version:
+            The string representation of a version which will be parsed and normalized
+            before use.
+        :raises InvalidVersion:
+            If the ``version`` does not conform to PEP 440 in any way then this
+            exception will be raised.
+        """
+
+        # Validate the version and parse it into pieces
+        match = self._regex.search(version)
+        if not match:
+            raise InvalidVersion(f"Invalid version: '{version}'")
+
+        # Store the parsed out pieces of the version
+        self._version = _Version(
+            epoch=int(match.group("epoch")) if match.group("epoch") else 0,
+            release=tuple(int(i) for i in match.group("release").split(".")),
+            pre=_parse_letter_version(match.group("pre_l"), match.group("pre_n")),
+            post=_parse_letter_version(
+                match.group("post_l"), match.group("post_n1") or match.group("post_n2")
+            ),
+            dev=_parse_letter_version(match.group("dev_l"), match.group("dev_n")),
+            local=_parse_local_version(match.group("local")),
+        )
+
+        # Generate a key which will be used for sorting
+        self._key = _cmpkey(
+            self._version.epoch,
+            self._version.release,
+            self._version.pre,
+            self._version.post,
+            self._version.dev,
+            self._version.local,
+        )
+
+    def __repr__(self) -> str:
+        """A representation of the Version that shows all internal state.
+
+        >>> Version('1.0.0')
+        
+        """
+        return f""
+
+    def __str__(self) -> str:
+        """A string representation of the version that can be rounded-tripped.
+
+        >>> str(Version("1.0a5"))
+        '1.0a5'
+        """
+        parts = []
+
+        # Epoch
+        if self.epoch != 0:
+            parts.append(f"{self.epoch}!")
+
+        # Release segment
+        parts.append(".".join(str(x) for x in self.release))
+
+        # Pre-release
+        if self.pre is not None:
+            parts.append("".join(str(x) for x in self.pre))
+
+        # Post-release
+        if self.post is not None:
+            parts.append(f".post{self.post}")
+
+        # Development release
+        if self.dev is not None:
+            parts.append(f".dev{self.dev}")
+
+        # Local version segment
+        if self.local is not None:
+            parts.append(f"+{self.local}")
+
+        return "".join(parts)
+
+    @property
+    def epoch(self) -> int:
+        """The epoch of the version.
+
+        >>> Version("2.0.0").epoch
+        0
+        >>> Version("1!2.0.0").epoch
+        1
+        """
+        return self._version.epoch
+
+    @property
+    def release(self) -> Tuple[int, ...]:
+        """The components of the "release" segment of the version.
+
+        >>> Version("1.2.3").release
+        (1, 2, 3)
+        >>> Version("2.0.0").release
+        (2, 0, 0)
+        >>> Version("1!2.0.0.post0").release
+        (2, 0, 0)
+
+        Includes trailing zeroes but not the epoch or any pre-release / development /
+        post-release suffixes.
+        """
+        return self._version.release
+
+    @property
+    def pre(self) -> Optional[Tuple[str, int]]:
+        """The pre-release segment of the version.
+
+        >>> print(Version("1.2.3").pre)
+        None
+        >>> Version("1.2.3a1").pre
+        ('a', 1)
+        >>> Version("1.2.3b1").pre
+        ('b', 1)
+        >>> Version("1.2.3rc1").pre
+        ('rc', 1)
+        """
+        return self._version.pre
+
+    @property
+    def post(self) -> Optional[int]:
+        """The post-release number of the version.
+
+        >>> print(Version("1.2.3").post)
+        None
+        >>> Version("1.2.3.post1").post
+        1
+        """
+        return self._version.post[1] if self._version.post else None
+
+    @property
+    def dev(self) -> Optional[int]:
+        """The development number of the version.
+
+        >>> print(Version("1.2.3").dev)
+        None
+        >>> Version("1.2.3.dev1").dev
+        1
+        """
+        return self._version.dev[1] if self._version.dev else None
+
+    @property
+    def local(self) -> Optional[str]:
+        """The local version segment of the version.
+
+        >>> print(Version("1.2.3").local)
+        None
+        >>> Version("1.2.3+abc").local
+        'abc'
+        """
+        if self._version.local:
+            return ".".join(str(x) for x in self._version.local)
+        else:
+            return None
+
+    @property
+    def public(self) -> str:
+        """The public portion of the version.
+
+        >>> Version("1.2.3").public
+        '1.2.3'
+        >>> Version("1.2.3+abc").public
+        '1.2.3'
+        >>> Version("1.2.3+abc.dev1").public
+        '1.2.3'
+        """
+        return str(self).split("+", 1)[0]
+
+    @property
+    def base_version(self) -> str:
+        """The "base version" of the version.
+
+        >>> Version("1.2.3").base_version
+        '1.2.3'
+        >>> Version("1.2.3+abc").base_version
+        '1.2.3'
+        >>> Version("1!1.2.3+abc.dev1").base_version
+        '1!1.2.3'
+
+        The "base version" is the public version of the project without any pre or post
+        release markers.
+        """
+        parts = []
+
+        # Epoch
+        if self.epoch != 0:
+            parts.append(f"{self.epoch}!")
+
+        # Release segment
+        parts.append(".".join(str(x) for x in self.release))
+
+        return "".join(parts)
+
+    @property
+    def is_prerelease(self) -> bool:
+        """Whether this version is a pre-release.
+
+        >>> Version("1.2.3").is_prerelease
+        False
+        >>> Version("1.2.3a1").is_prerelease
+        True
+        >>> Version("1.2.3b1").is_prerelease
+        True
+        >>> Version("1.2.3rc1").is_prerelease
+        True
+        >>> Version("1.2.3dev1").is_prerelease
+        True
+        """
+        return self.dev is not None or self.pre is not None
+
+    @property
+    def is_postrelease(self) -> bool:
+        """Whether this version is a post-release.
+
+        >>> Version("1.2.3").is_postrelease
+        False
+        >>> Version("1.2.3.post1").is_postrelease
+        True
+        """
+        return self.post is not None
+
+    @property
+    def is_devrelease(self) -> bool:
+        """Whether this version is a development release.
+
+        >>> Version("1.2.3").is_devrelease
+        False
+        >>> Version("1.2.3.dev1").is_devrelease
+        True
+        """
+        return self.dev is not None
+
+    @property
+    def major(self) -> int:
+        """The first item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").major
+        1
+        """
+        return self.release[0] if len(self.release) >= 1 else 0
+
+    @property
+    def minor(self) -> int:
+        """The second item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").minor
+        2
+        >>> Version("1").minor
+        0
+        """
+        return self.release[1] if len(self.release) >= 2 else 0
+
+    @property
+    def micro(self) -> int:
+        """The third item of :attr:`release` or ``0`` if unavailable.
+
+        >>> Version("1.2.3").micro
+        3
+        >>> Version("1").micro
+        0
+        """
+        return self.release[2] if len(self.release) >= 3 else 0
+
+
+def _parse_letter_version(
+    letter: Optional[str], number: Union[str, bytes, SupportsInt, None]
+) -> Optional[Tuple[str, int]]:
+
+    if letter:
+        # We consider there to be an implicit 0 in a pre-release if there is
+        # not a numeral associated with it.
+        if number is None:
+            number = 0
+
+        # We normalize any letters to their lower case form
+        letter = letter.lower()
+
+        # We consider some words to be alternate spellings of other words and
+        # in those cases we want to normalize the spellings to our preferred
+        # spelling.
+        if letter == "alpha":
+            letter = "a"
+        elif letter == "beta":
+            letter = "b"
+        elif letter in ["c", "pre", "preview"]:
+            letter = "rc"
+        elif letter in ["rev", "r"]:
+            letter = "post"
+
+        return letter, int(number)
+    if not letter and number:
+        # We assume if we are given a number, but we are not given a letter
+        # then this is using the implicit post release syntax (e.g. 1.0-1)
+        letter = "post"
+
+        return letter, int(number)
+
+    return None
+
+
+_local_version_separators = re.compile(r"[\._-]")
+
+
+def _parse_local_version(local: Optional[str]) -> Optional[LocalType]:
+    """
+    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
+    """
+    if local is not None:
+        return tuple(
+            part.lower() if not part.isdigit() else int(part)
+            for part in _local_version_separators.split(local)
+        )
+    return None
+
+
+def _cmpkey(
+    epoch: int,
+    release: Tuple[int, ...],
+    pre: Optional[Tuple[str, int]],
+    post: Optional[Tuple[str, int]],
+    dev: Optional[Tuple[str, int]],
+    local: Optional[LocalType],
+) -> CmpKey:
+
+    # When we compare a release version, we want to compare it with all of the
+    # trailing zeros removed. So we'll use a reverse the list, drop all the now
+    # leading zeros until we come to something non zero, then take the rest
+    # re-reverse it back into the correct order and make it a tuple and use
+    # that for our sorting key.
+    _release = tuple(
+        reversed(list(itertools.dropwhile(lambda x: x == 0, reversed(release))))
+    )
+
+    # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0.
+    # We'll do this by abusing the pre segment, but we _only_ want to do this
+    # if there is not a pre or a post segment. If we have one of those then
+    # the normal sorting rules will handle this case correctly.
+    if pre is None and post is None and dev is not None:
+        _pre: CmpPrePostDevType = NegativeInfinity
+    # Versions without a pre-release (except as noted above) should sort after
+    # those with one.
+    elif pre is None:
+        _pre = Infinity
+    else:
+        _pre = pre
+
+    # Versions without a post segment should sort before those with one.
+    if post is None:
+        _post: CmpPrePostDevType = NegativeInfinity
+
+    else:
+        _post = post
+
+    # Versions without a development segment should sort after those with one.
+    if dev is None:
+        _dev: CmpPrePostDevType = Infinity
+
+    else:
+        _dev = dev
+
+    if local is None:
+        # Versions without a local segment should sort before those with one.
+        _local: CmpLocalType = NegativeInfinity
+    else:
+        # Versions with a local segment need that segment parsed to implement
+        # the sorting rules in PEP440.
+        # - Alpha numeric segments sort before numeric segments
+        # - Alpha numeric segments sort lexicographically
+        # - Numeric segments sort numerically
+        # - Shorter versions sort before longer versions when the prefixes
+        #   match exactly
+        _local = tuple(
+            (i, "") if isinstance(i, int) else (NegativeInfinity, i) for i in local
+        )
+
+    return epoch, _release, _pre, _post, _dev, _local
diff --git a/tools/gyp/pyproject.toml b/tools/gyp/pyproject.toml
new file mode 100644
index 00000000000000..0c25d0b3c1a065
--- /dev/null
+++ b/tools/gyp/pyproject.toml
@@ -0,0 +1,119 @@
+[build-system]
+requires = ["setuptools>=61.0"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "gyp-next"
+version = "0.16.1"
+authors = [
+  { name="Node.js contributors", email="ryzokuken@disroot.org" },
+]
+description = "A fork of the GYP build system for use in the Node.js projects"
+readme = "README.md"
+license = { file="LICENSE" }
+requires-python = ">=3.8"
+# The Python module "packaging" is vendored in the "pylib/packaging" directory to support Python >= 3.12.
+# dependencies = ["packaging>=23.1"]  # Uncomment this line if the vendored version is removed.
+classifiers = [
+    "Development Status :: 3 - Alpha",
+    "Environment :: Console",
+    "Intended Audience :: Developers",
+    "License :: OSI Approved :: BSD License",
+    "Natural Language :: English",
+    "Programming Language :: Python",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.8",
+    "Programming Language :: Python :: 3.9",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+]
+
+[project.optional-dependencies]
+dev = ["flake8", "ruff", "pytest"]
+
+[project.scripts]
+gyp = "gyp:script_main"
+
+[project.urls]
+"Homepage" = "https://github.com/nodejs/gyp-next"
+
+[tool.ruff]
+select = [
+  "C4",   # flake8-comprehensions
+  "C90",  # McCabe cyclomatic complexity
+  "DTZ",  # flake8-datetimez
+  "E",    # pycodestyle
+  "F",    # Pyflakes
+  "G",    # flake8-logging-format
+  "ICN",  # flake8-import-conventions
+  "INT",  # flake8-gettext
+  "PL",   # Pylint
+  "PYI",  # flake8-pyi
+  "RSE",  # flake8-raise
+  "RUF",  # Ruff-specific rules
+  "T10",  # flake8-debugger
+  "TCH",  # flake8-type-checking
+  "TID",  # flake8-tidy-imports
+  "UP",   # pyupgrade
+  "W",    # pycodestyle
+  "YTT",  # flake8-2020
+  # "A",    # flake8-builtins
+  # "ANN",  # flake8-annotations
+  # "ARG",  # flake8-unused-arguments
+  # "B",    # flake8-bugbear
+  # "BLE",  # flake8-blind-except
+  # "COM",  # flake8-commas
+  # "D",    # pydocstyle
+  # "DJ",   # flake8-django
+  # "EM",   # flake8-errmsg
+  # "ERA",  # eradicate
+  # "EXE",  # flake8-executable
+  # "FBT",  # flake8-boolean-trap
+  # "I",    # isort
+  # "INP",  # flake8-no-pep420
+  # "ISC",  # flake8-implicit-str-concat
+  # "N",    # pep8-naming
+  # "NPY",  # NumPy-specific rules
+  # "PD",   # pandas-vet
+  # "PGH",  # pygrep-hooks
+  # "PIE",  # flake8-pie
+  # "PT",   # flake8-pytest-style
+  # "PTH",  # flake8-use-pathlib
+  # "Q",    # flake8-quotes
+  # "RET",  # flake8-return
+  # "S",    # flake8-bandit
+  # "SIM",  # flake8-simplify
+  # "SLF",  # flake8-self
+  # "T20",  # flake8-print
+  # "TRY",  # tryceratops
+]
+ignore = [
+  "E721",
+  "PLC1901",
+  "PLR0402",
+  "PLR1714",
+  "PLR2004",
+  "PLR5501",
+  "PLW0603",
+  "PLW2901",
+  "PYI024",
+  "RUF005",
+  "RUF012",
+  "UP031",
+]
+extend-exclude = ["pylib/packaging"]
+line-length = 88
+target-version = "py37"
+
+[tool.ruff.mccabe]
+max-complexity = 101
+
+[tool.ruff.pylint]
+max-args = 11
+max-branches = 108
+max-returns = 10
+max-statements = 286
+
+[tool.setuptools]
+package-dir = {"" = "pylib"}
+packages = ["gyp", "gyp.generator"]
diff --git a/tools/gyp/requirements_dev.txt b/tools/gyp/requirements_dev.txt
deleted file mode 100644
index 28ecacab602938..00000000000000
--- a/tools/gyp/requirements_dev.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-flake8
-pytest
diff --git a/tools/gyp/setup.py b/tools/gyp/setup.py
deleted file mode 100644
index 1bb6908deaf8ce..00000000000000
--- a/tools/gyp/setup.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python3
-
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from os import path
-
-from setuptools import setup
-
-here = path.abspath(path.dirname(__file__))
-# Get the long description from the README file
-with open(path.join(here, "README.md")) as in_file:
-    long_description = in_file.read()
-
-setup(
-    name="gyp-next",
-    version="0.13.0",
-    description="A fork of the GYP build system for use in the Node.js projects",
-    long_description=long_description,
-    long_description_content_type="text/markdown",
-    author="Node.js contributors",
-    author_email="ryzokuken@disroot.org",
-    url="https://github.com/nodejs/gyp-next",
-    package_dir={"": "pylib"},
-    packages=["gyp", "gyp.generator"],
-    entry_points={"console_scripts": ["gyp=gyp:script_main"]},
-    python_requires=">=3.6",
-    classifiers=[
-        "Development Status :: 3 - Alpha",
-        "Environment :: Console",
-        "Intended Audience :: Developers",
-        "License :: OSI Approved :: BSD License",
-        "Natural Language :: English",
-        "Programming Language :: Python",
-        "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.6",
-        "Programming Language :: Python :: 3.7",
-        "Programming Language :: Python :: 3.8",
-        "Programming Language :: Python :: 3.9",
-    ],
-)
diff --git a/tools/gyp/tools/pretty_sln.py b/tools/gyp/tools/pretty_sln.py
index 6ca0cd12a7ba06..cf0638a23d635d 100755
--- a/tools/gyp/tools/pretty_sln.py
+++ b/tools/gyp/tools/pretty_sln.py
@@ -34,10 +34,10 @@ def BuildProject(project, built, projects, deps):
 
 def ParseSolution(solution_file):
     # All projects, their clsid and paths.
-    projects = dict()
+    projects = {}
 
     # A list of dependencies associated with a project.
-    dependencies = dict()
+    dependencies = {}
 
     # Regular expressions that matches the SLN format.
     # The first line of a project definition.
diff --git a/tools/gyp/tools/pretty_vcproj.py b/tools/gyp/tools/pretty_vcproj.py
index 00d32debda51f0..72c65d7fc495f9 100755
--- a/tools/gyp/tools/pretty_vcproj.py
+++ b/tools/gyp/tools/pretty_vcproj.py
@@ -21,7 +21,7 @@
 
 __author__ = "nsylvain (Nicolas Sylvain)"
 ARGUMENTS = None
-REPLACEMENTS = dict()
+REPLACEMENTS = {}
 
 
 def cmp(x, y):

From 6ba4ebd06058f22df6bdc327e304d46583af47e5 Mon Sep 17 00:00:00 2001
From: Luigi Pinca 
Date: Wed, 8 Nov 2023 21:20:53 +0100
Subject: [PATCH 31/76] build: fix build with Python 3.12

Replace `distutils.version.StrictVersion` with
`packaging.version.Version`.

Refs: https://github.com/nodejs/node/pull/50209#issuecomment-1795852539
PR-URL: https://github.com/nodejs/node/pull/50582
Reviewed-By: Richard Lau 
Reviewed-By: Chengzhong Wu 
---
 configure.py | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/configure.py b/configure.py
index 82916748fd23c1..4a1359d79c376e 100755
--- a/configure.py
+++ b/configure.py
@@ -14,8 +14,6 @@
 import io
 from pathlib import Path
 
-from distutils.version import StrictVersion
-
 # If not run from node/, cd to node/.
 os.chdir(Path(__file__).parent)
 
@@ -30,6 +28,7 @@
 
 sys.path.insert(0, str(tools_path / 'gyp' / 'pylib'))
 from gyp.common import GetFlavor
+from packaging.version import Version
 
 # imports in tools/configure.d
 sys.path.insert(0, str(tools_path / 'configure.d'))
@@ -1605,10 +1604,10 @@ def without_ssl_error(option):
     # supported asm compiler for AVX2. See https://github.com/openssl/openssl/
     # blob/OpenSSL_1_1_0-stable/crypto/modes/asm/aesni-gcm-x86_64.pl#L52-L69
     openssl110_asm_supported = \
-      ('gas_version' in variables and StrictVersion(variables['gas_version']) >= StrictVersion('2.23')) or \
-      ('xcode_version' in variables and StrictVersion(variables['xcode_version']) >= StrictVersion('5.0')) or \
-      ('llvm_version' in variables and StrictVersion(variables['llvm_version']) >= StrictVersion('3.3')) or \
-      ('nasm_version' in variables and StrictVersion(variables['nasm_version']) >= StrictVersion('2.10'))
+      ('gas_version' in variables and Version(variables['gas_version']) >= Version('2.23')) or \
+      ('xcode_version' in variables and Version(variables['xcode_version']) >= Version('5.0')) or \
+      ('llvm_version' in variables and Version(variables['llvm_version']) >= Version('3.3')) or \
+      ('nasm_version' in variables and Version(variables['nasm_version']) >= Version('2.10'))
 
     if is_x86 and not openssl110_asm_supported:
       error('''Did not find a new enough assembler, install one or build with

From c679348f839fd6e02d4e944318c8afc6bd020f4e Mon Sep 17 00:00:00 2001
From: Antoine du Hamel 
Date: Tue, 12 Sep 2023 01:18:58 +0200
Subject: [PATCH 32/76] errors: use `determineSpecificType` in more error
 messages

PR-URL: https://github.com/nodejs/node/pull/49580
Fixes: https://github.com/nodejs/node/issues/49576
Reviewed-By: Yagiz Nizipli 
Reviewed-By: Matthew Aitken 
---
 lib/internal/errors.js | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/lib/internal/errors.js b/lib/internal/errors.js
index 6e1974b1e642b3..9fb943e3f58252 100644
--- a/lib/internal/errors.js
+++ b/lib/internal/errors.js
@@ -1354,17 +1354,11 @@ E('ERR_INVALID_REPL_EVAL_CONFIG',
 E('ERR_INVALID_REPL_INPUT', '%s', TypeError);
 E('ERR_INVALID_RETURN_PROPERTY', (input, name, prop, value) => {
   return `Expected a valid ${input} to be returned for the "${prop}" from the` +
-         ` "${name}" function but got ${value}.`;
+         ` "${name}" function but got ${determineSpecificType(value)}.`;
 }, TypeError);
 E('ERR_INVALID_RETURN_PROPERTY_VALUE', (input, name, prop, value) => {
-  let type;
-  if (value?.constructor?.name) {
-    type = `instance of ${value.constructor.name}`;
-  } else {
-    type = `type ${typeof value}`;
-  }
   return `Expected ${input} to be returned for the "${prop}" from the` +
-         ` "${name}" function but got ${type}.`;
+         ` "${name}" function but got ${determineSpecificType(value)}.`;
 }, TypeError);
 E('ERR_INVALID_RETURN_VALUE', (input, name, value) => {
   const type = determineSpecificType(value);

From 84b0ead758872d88df950a05b26d40a497f5b630 Mon Sep 17 00:00:00 2001
From: Bruce MacNaughton 
Date: Tue, 5 Dec 2023 10:54:01 -0800
Subject: [PATCH 33/76] esm: fix hook name in error message

PR-URL: https://github.com/nodejs/node/pull/50466
Reviewed-By: Geoffrey Booth 
Reviewed-By: Jacob Smith 
Reviewed-By: James M Snell 
Reviewed-By: Antoine du Hamel 
---
 lib/internal/errors.js                           | 4 ++--
 lib/internal/modules/esm/translators.js          | 2 +-
 test/es-module/test-esm-loader.mjs               | 5 +++++
 test/fixtures/es-module-loaders/hooks-custom.mjs | 8 ++++++++
 4 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/lib/internal/errors.js b/lib/internal/errors.js
index 9fb943e3f58252..2f3549ee04a021 100644
--- a/lib/internal/errors.js
+++ b/lib/internal/errors.js
@@ -1354,11 +1354,11 @@ E('ERR_INVALID_REPL_EVAL_CONFIG',
 E('ERR_INVALID_REPL_INPUT', '%s', TypeError);
 E('ERR_INVALID_RETURN_PROPERTY', (input, name, prop, value) => {
   return `Expected a valid ${input} to be returned for the "${prop}" from the` +
-         ` "${name}" function but got ${determineSpecificType(value)}.`;
+         ` "${name}" hook but got ${determineSpecificType(value)}.`;
 }, TypeError);
 E('ERR_INVALID_RETURN_PROPERTY_VALUE', (input, name, prop, value) => {
   return `Expected ${input} to be returned for the "${prop}" from the` +
-         ` "${name}" function but got ${determineSpecificType(value)}.`;
+         ` "${name}" hook but got ${determineSpecificType(value)}.`;
 }, TypeError);
 E('ERR_INVALID_RETURN_VALUE', (input, name, value) => {
   const type = determineSpecificType(value);
diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
index d1bc2754fc3ce3..2c5efa61a6936c 100644
--- a/lib/internal/modules/esm/translators.js
+++ b/lib/internal/modules/esm/translators.js
@@ -113,7 +113,7 @@ function assertBufferSource(body, allowString, hookName) {
  */
 function stringify(body) {
   if (typeof body === 'string') { return body; }
-  assertBufferSource(body, false, 'transformSource');
+  assertBufferSource(body, false, 'load');
   const { TextDecoder } = require('internal/encoding');
   DECODER = DECODER === null ? new TextDecoder() : DECODER;
   return DECODER.decode(body);
diff --git a/test/es-module/test-esm-loader.mjs b/test/es-module/test-esm-loader.mjs
index e19a38cc4231b0..de34814324818c 100644
--- a/test/es-module/test-esm-loader.mjs
+++ b/test/es-module/test-esm-loader.mjs
@@ -43,6 +43,11 @@ await assert.rejects(
   { code: 'ERR_INVALID_RETURN_PROPERTY_VALUE' },
 );
 
+await assert.rejects(import('esmHook/commonJsNullSource.mjs'), {
+  code: 'ERR_INVALID_RETURN_PROPERTY_VALUE',
+  message: /"source".*'load'.*got type bigint/,
+});
+
 await import('../fixtures/es-module-loaders/js-as-esm.js')
 .then((parsedModule) => {
   assert.strictEqual(typeof parsedModule, 'object');
diff --git a/test/fixtures/es-module-loaders/hooks-custom.mjs b/test/fixtures/es-module-loaders/hooks-custom.mjs
index 5656f95232b856..3c38649a88794f 100644
--- a/test/fixtures/es-module-loaders/hooks-custom.mjs
+++ b/test/fixtures/es-module-loaders/hooks-custom.mjs
@@ -97,5 +97,13 @@ export function load(url, context, next) {
     };
   }
 
+  if (url.endsWith('esmHook/commonJsNullSource.mjs')) {
+    return {
+      format: 'commonjs',
+      shortCircuit: true,
+      source: 1n,
+    };
+  }
+
   return next(url);
 }

From 81c3260cd2d89d169db01b79a7b23e53133791ad Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Tue, 14 May 2024 03:45:43 +0300
Subject: [PATCH 34/76] deps: update corepack to 0.28.1

PR-URL: https://github.com/nodejs/node/pull/52946
Reviewed-By: Mohammed Keyvanzadeh 
Reviewed-By: Antoine du Hamel 
Reviewed-By: Moshe Atlow 
Reviewed-By: Marco Ippolito 
Reviewed-By: Rafael Gonzaga 
---
 deps/corepack/CHANGELOG.md          | 13 +++++++++++++
 deps/corepack/README.md             |  5 +++--
 deps/corepack/dist/lib/corepack.cjs | 19 +++++++++++--------
 deps/corepack/package.json          |  2 +-
 4 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/deps/corepack/CHANGELOG.md b/deps/corepack/CHANGELOG.md
index f5cef27cc047f9..20d282c3a7b8e0 100644
--- a/deps/corepack/CHANGELOG.md
+++ b/deps/corepack/CHANGELOG.md
@@ -1,5 +1,18 @@
 # Changelog
 
+## [0.28.1](https://github.com/nodejs/corepack/compare/v0.28.0...v0.28.1) (2024-05-10)
+
+
+### Features
+
+* add support for `COREPACK_INTEGRITY_KEYS=0` ([#470](https://github.com/nodejs/corepack/issues/470)) ([f15ebc2](https://github.com/nodejs/corepack/commit/f15ebc289ebcd6a86580f15ae3c4ef0e1be37c4b))
+* update package manager versions ([#469](https://github.com/nodejs/corepack/issues/469)) ([985895b](https://github.com/nodejs/corepack/commit/985895bccb5ec68b3645c540d8500c572e1ccadb))
+
+
+### Bug Fixes
+
+* COREPACK_NPM_REGISTRY should allow for username/password auth ([#466](https://github.com/nodejs/corepack/issues/466)) ([6efa349](https://github.com/nodejs/corepack/commit/6efa34988229918debe6e881d45ba6715282f283))
+
 ## [0.28.0](https://github.com/nodejs/corepack/compare/v0.27.0...v0.28.0) (2024-04-20)
 
 
diff --git a/deps/corepack/README.md b/deps/corepack/README.md
index 42dc8c19085e88..f72f7f71ef77e8 100644
--- a/deps/corepack/README.md
+++ b/deps/corepack/README.md
@@ -296,8 +296,9 @@ same major line. Should you need to upgrade to a new major, use an explicit
 - `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` are supported through
   [`node-proxy-agent`](https://github.com/TooTallNate/node-proxy-agent).
 
-- `COREPACK_INTEGRITY_KEYS` can be set to an empty string to instruct Corepack
-  to skip integrity checks, or a JSON string containing custom keys.
+- `COREPACK_INTEGRITY_KEYS` can be set to an empty string or `0` to
+  instruct Corepack to skip integrity checks, or to a JSON string containing
+  custom keys.
 
 ## Troubleshooting
 
diff --git a/deps/corepack/dist/lib/corepack.cjs b/deps/corepack/dist/lib/corepack.cjs
index f81b561ce54d87..e2a2cde7446d24 100644
--- a/deps/corepack/dist/lib/corepack.cjs
+++ b/deps/corepack/dist/lib/corepack.cjs
@@ -22417,7 +22417,7 @@ function String2(descriptor, ...args) {
 }
 
 // package.json
-var version = "0.28.0";
+var version = "0.28.1";
 
 // sources/Engine.ts
 var import_fs4 = __toESM(require("fs"));
@@ -22429,7 +22429,7 @@ var import_semver4 = __toESM(require_semver2());
 var config_default = {
   definitions: {
     npm: {
-      default: "10.5.2+sha1.0e9b72afaf5ecf8249b2abb4b7417db6739c1475",
+      default: "10.7.0+sha1.c87e0bbb7a53422670e423d0198120760f67c3b7",
       fetchLatestFrom: {
         type: "npm",
         package: "npm"
@@ -22466,7 +22466,7 @@ var config_default = {
       }
     },
     pnpm: {
-      default: "9.0.3+sha1.ff3ad37177cbd0843e533aab13d5e40a05803b47",
+      default: "9.1.0+sha1.217063ce3fcbf44f3051666f38b810f1ddefee4a",
       fetchLatestFrom: {
         type: "npm",
         package: "pnpm"
@@ -22530,7 +22530,7 @@ var config_default = {
         package: "yarn"
       },
       transparent: {
-        default: "4.1.1+sha224.00f08619463229f8ba40c4ee90e8c2e4ced1f11c3115c26f3b98432e",
+        default: "4.2.2+sha224.1e50daf19e5e249a025569752c60b88005fddf57d10fcde5fc68b88f",
         commands: [
           [
             "yarn",
@@ -22702,7 +22702,7 @@ ${key.key}
 async function fetchLatestStableVersion(packageName) {
   const metadata = await fetchAsJson2(packageName, `latest`);
   const { version: version2, dist: { integrity, signatures } } = metadata;
-  if (process.env.COREPACK_INTEGRITY_KEYS !== ``) {
+  if (!shouldSkipIntegrityCheck()) {
     verifySignature({
       packageName,
       version: version2,
@@ -22736,8 +22736,8 @@ async function fetch(input, init) {
   if (typeof input === `string`)
     input = new URL(input);
   let headers = init?.headers;
-  const username = input.username ?? process.env.COREPACK_NPM_USERNAME;
-  const password = input.password ?? process.env.COREPACK_NPM_PASSWORD;
+  const username = input.username || process.env.COREPACK_NPM_USERNAME;
+  const password = input.password || process.env.COREPACK_NPM_PASSWORD;
   if (username || password) {
     headers = {
       ...headers,
@@ -23031,7 +23031,7 @@ async function installVersion(installTarget, locator, { spec }) {
   }
   if (!build[1]) {
     const registry = getRegistryFromPackageManagerSpec(spec);
-    if (registry.type === `npm` && !registry.bin && process.env.COREPACK_INTEGRITY_KEYS !== ``) {
+    if (registry.type === `npm` && !registry.bin && !shouldSkipIntegrityCheck()) {
       if (signatures == null || integrity == null)
         ({ signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version2));
       verifySignature({ signatures, integrity, packageName: registry.package, version: version2 });
@@ -23136,6 +23136,9 @@ async function runVersion(locator, installSpec, binName, args) {
   process.mainModule = void 0;
   process.nextTick(import_module.default.runMain, binPath);
 }
+function shouldSkipIntegrityCheck() {
+  return process.env.COREPACK_INTEGRITY_KEYS === `` || process.env.COREPACK_INTEGRITY_KEYS === `0`;
+}
 
 // sources/semverUtils.ts
 var import_semver2 = __toESM(require_semver2());
diff --git a/deps/corepack/package.json b/deps/corepack/package.json
index 5ca045e37041e0..3737c1920844d3 100644
--- a/deps/corepack/package.json
+++ b/deps/corepack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "corepack",
-  "version": "0.28.0",
+  "version": "0.28.1",
   "homepage": "https://github.com/nodejs/corepack#readme",
   "bugs": {
     "url": "https://github.com/nodejs/corepack/issues"

From 6ba8bc06182c27529026fc43949370ee7be3db65 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Sun, 2 Jun 2024 08:30:14 +0300
Subject: [PATCH 35/76] deps: update c-ares to 1.29.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/53155
Reviewed-By: Luigi Pinca 
Reviewed-By: Mohammed Keyvanzadeh 
Reviewed-By: Michaël Zasso 
Reviewed-By: Rafael Gonzaga 
Reviewed-By: Marco Ippolito 
---
 deps/cares/CHANGES                            |   449 +-
 deps/cares/CMakeLists.txt                     |    10 +-
 deps/cares/README.md                          |     2 +-
 deps/cares/RELEASE-NOTES.md                   |    59 +-
 deps/cares/SECURITY.md                        |     2 +-
 deps/cares/aminclude_static.am                |     2 +-
 deps/cares/cares.gyp                          |    12 +-
 deps/cares/configure                          |    95 +-
 deps/cares/configure.ac                       |    13 +-
 deps/cares/docs/Makefile.in                   |     1 +
 deps/cares/docs/Makefile.inc                  |     1 +
 deps/cares/docs/ares_cancel.3                 |     2 -
 deps/cares/docs/ares_create_query.3           |     1 -
 deps/cares/docs/ares_destroy.3                |     4 -
 deps/cares/docs/ares_destroy_options.3        |     4 -
 deps/cares/docs/ares_dns_mapping.3            |     2 -
 deps/cares/docs/ares_dns_record.3             |     2 -
 deps/cares/docs/ares_dns_rr.3                 |     2 -
 deps/cares/docs/ares_dup.3                    |     5 +-
 deps/cares/docs/ares_expand_name.3            |     4 -
 deps/cares/docs/ares_expand_string.3          |     2 -
 deps/cares/docs/ares_fds.3                    |     6 +-
 deps/cares/docs/ares_free_data.3              |     6 -
 deps/cares/docs/ares_free_hostent.3           |     4 -
 deps/cares/docs/ares_free_string.3            |     4 -
 deps/cares/docs/ares_freeaddrinfo.3           |     4 -
 deps/cares/docs/ares_get_servers.3            |    14 +-
 deps/cares/docs/ares_getaddrinfo.3            |     4 -
 deps/cares/docs/ares_gethostbyaddr.3          |     4 -
 deps/cares/docs/ares_gethostbyname.3          |     4 -
 deps/cares/docs/ares_gethostbyname_file.3     |     4 -
 deps/cares/docs/ares_getnameinfo.3            |     4 -
 deps/cares/docs/ares_getsock.3                |     2 +-
 deps/cares/docs/ares_inet_ntop.3              |     2 -
 deps/cares/docs/ares_inet_pton.3              |     2 -
 deps/cares/docs/ares_init_options.3           |    33 +-
 deps/cares/docs/ares_library_cleanup.3        |     6 -
 deps/cares/docs/ares_library_init.3           |     6 -
 deps/cares/docs/ares_library_init_android.3   |     4 -
 deps/cares/docs/ares_mkquery.3                |     4 -
 deps/cares/docs/ares_parse_a_reply.3          |     6 -
 deps/cares/docs/ares_parse_aaaa_reply.3       |     6 -
 deps/cares/docs/ares_parse_caa_reply.3        |     2 -
 deps/cares/docs/ares_parse_mx_reply.3         |     2 -
 deps/cares/docs/ares_parse_naptr_reply.3      |     2 -
 deps/cares/docs/ares_parse_ns_reply.3         |     2 -
 deps/cares/docs/ares_parse_ptr_reply.3        |     4 -
 deps/cares/docs/ares_parse_srv_reply.3        |     2 -
 deps/cares/docs/ares_parse_txt_reply.3        |     4 -
 deps/cares/docs/ares_parse_uri_reply.3        |     2 -
 deps/cares/docs/ares_process.3                |     4 -
 deps/cares/docs/ares_query.3                  |     5 -
 deps/cares/docs/ares_queue.3                  |     5 +-
 deps/cares/docs/ares_reinit.3                 |    14 +-
 deps/cares/docs/ares_save_options.3           |     8 +-
 deps/cares/docs/ares_search.3                 |     5 -
 deps/cares/docs/ares_send.3                   |     5 -
 deps/cares/docs/ares_set_local_dev.3          |     2 -
 deps/cares/docs/ares_set_local_ip4.3          |     2 -
 deps/cares/docs/ares_set_local_ip6.3          |     2 -
 .../docs/ares_set_server_state_callback.3     |    62 +
 deps/cares/docs/ares_set_servers.3            |    10 -
 deps/cares/docs/ares_set_servers_csv.3        |     4 +-
 deps/cares/docs/ares_set_socket_callback.3    |     2 -
 .../docs/ares_set_socket_configure_callback.3 |     2 -
 deps/cares/docs/ares_set_socket_functions.3   |     2 -
 deps/cares/docs/ares_strerror.3               |     4 -
 deps/cares/docs/ares_threadsafety.3           |     3 +-
 deps/cares/docs/ares_timeout.3                |     6 +-
 deps/cares/include/ares.h                     |    66 +-
 deps/cares/include/ares_version.h             |     6 +-
 deps/cares/src/lib/CMakeLists.txt             |     8 +
 deps/cares/src/lib/Makefile.in                |    48 +-
 deps/cares/src/lib/Makefile.inc               |     4 +
 deps/cares/src/lib/ares__close_sockets.c      |     8 +
 deps/cares/src/lib/ares__htable_vpvp.c        |   195 +
 deps/cares/src/lib/ares__htable_vpvp.h        |   127 +
 deps/cares/src/lib/ares__socket.c             |     6 -
 deps/cares/src/lib/ares__threads.c            |    10 +-
 deps/cares/src/lib/ares_destroy.c             |    17 +
 deps/cares/src/lib/ares_dns_mapping.c         |    52 +-
 deps/cares/src/lib/ares_dns_name.c            |     8 +-
 deps/cares/src/lib/ares_event.h               |    20 +-
 deps/cares/src/lib/ares_event_configchg.c     |   565 +
 deps/cares/src/lib/ares_event_epoll.c         |     2 +-
 deps/cares/src/lib/ares_event_kqueue.c        |     2 +-
 deps/cares/src/lib/ares_event_poll.c          |     6 +-
 deps/cares/src/lib/ares_event_select.c        |    12 +-
 deps/cares/src/lib/ares_event_thread.c        |    47 +-
 deps/cares/src/lib/ares_fds.c                 |     2 +-
 deps/cares/src/lib/ares_getnameinfo.c         |    14 +-
 deps/cares/src/lib/ares_getsock.c             |     2 +-
 deps/cares/src/lib/ares_init.c                |    95 +-
 deps/cares/src/lib/ares_ipv6.h                |     9 +
 deps/cares/src/lib/ares_options.c             |    20 +-
 deps/cares/src/lib/ares_platform.c            | 21784 ++++++++--------
 deps/cares/src/lib/ares_private.h             |    49 +-
 deps/cares/src/lib/ares_process.c             |   147 +-
 deps/cares/src/lib/ares_send.c                |     2 +-
 deps/cares/src/lib/ares_sysconfig.c           |    22 +-
 deps/cares/src/lib/ares_sysconfig_files.c     |     7 +-
 deps/cares/src/lib/ares_sysconfig_mac.c       |   314 +
 deps/cares/src/lib/ares_timeout.c             |     4 +-
 deps/cares/src/lib/ares_update_servers.c      |   145 +-
 deps/cares/src/lib/thirdparty/apple/dnsinfo.h |   128 +
 deps/cares/src/tools/CMakeLists.txt           |     8 +
 deps/cares/src/tools/adig.c                   |    12 +-
 107 files changed, 13333 insertions(+), 11610 deletions(-)
 create mode 100644 deps/cares/docs/ares_set_server_state_callback.3
 create mode 100644 deps/cares/src/lib/ares__htable_vpvp.c
 create mode 100644 deps/cares/src/lib/ares__htable_vpvp.h
 create mode 100644 deps/cares/src/lib/ares_event_configchg.c
 create mode 100644 deps/cares/src/lib/ares_sysconfig_mac.c
 create mode 100644 deps/cares/src/lib/thirdparty/apple/dnsinfo.h

diff --git a/deps/cares/CHANGES b/deps/cares/CHANGES
index ae56d4f24bc3d9..41d460e2eb5c98 100644
--- a/deps/cares/CHANGES
+++ b/deps/cares/CHANGES
@@ -1,5 +1,298 @@
    Changelog for the c-ares project. Generated with git2changes.pl
 
+Version 1.29.0 (22 May 2024)
+
+GitHub (22 May 2024)
+- [Brad House brought this change]
+
+  1.29.0 release prep (#762)
+
+Brad House (22 May 2024)
+- coverity: try to silence warning
+
+- branch main
+
+- clang-format
+
+GitHub (22 May 2024)
+- [Brad House brought this change]
+
+  Auto reload config on changes (requires EventThread) (#759)
+  
+  Automatically detect configuration changes and reload. On systems which
+  provide notification mechanisms, use those, otherwise fallback to
+  polling. When a system configuration change is detected, it
+  asynchronously applies the configuration in order to ensure it is a
+  non-blocking operation for any queries which may still be being
+  processed.
+  
+  On Windows, however, changes aren't detected if a user manually
+  sets/changes the DNS servers on an interface, it doesn't appear there is
+  any mechanism capable of this. We are relying on
+  `NotifyIpInterfaceChange()` for notifications.
+  
+  Fixes Issue: #613
+  Fix By: Brad House (@bradh352)
+
+- [David Hotham brought this change]
+
+  const is fine on ares__channel_[un]lock (#758)
+  
+  at https://github.com/c-ares/c-ares/pull/601#issuecomment-1801935063 you
+  chose not to scatter `const` on the public interface because of the plan
+  - now realised - to add threading to c-ares, and in the expectation that
+  even read operations would need to lock the mutex.
+  
+  But the threading implementation has a _pointer_ to a mutex inside the
+  ares channel and as I understand it, that means that it is just fine to
+  mark `ares__channel_lock` (and `ares__channel_unlock`) as taking a
+  `const` channel. It is the pointed-to mutex that is not constant, but C
+  does not propagate `const`-ness through pointers.
+  
+  This PR sprinkles const where appropriate on public interfaces.
+  
+  Fix By: David Hotham (@dimbleby)
+
+Brad House (15 May 2024)
+- remove accidentally committed in-development file
+
+- dns name compression write failure
+  
+  Due to a logic flaw dns name compression writing was not properly implemented
+  which would result in the name prefix not being written for a partial match.
+  
+  Fixes Bug: #757
+  Fix By: Brad House (@bradh352)
+
+GitHub (8 May 2024)
+- [Brad House brought this change]
+
+  CI: Add Netbsd workflow (#756)
+  
+  Add NetBSD as a test target for CI.
+  
+  Fix By: Brad House (@bradh352)
+
+- [Brad House brought this change]
+
+  CI: OpenBSD (#755)
+  
+  Github actions appears to support building on a few "unsupported"
+  platforms these days:
+  https://github.com/cross-platform-actions/action
+  
+  Lets go ahead and add OpenBSD to try to prevent issues like #754
+  
+  Fix By: Brad House (@bradh352)
+
+- [Volker Schlecht brought this change]
+
+  Revert PR #659 (#754)
+  
+  As described in https://github.com/c-ares/c-ares/issues/753 the change
+  merged with https://github.com/c-ares/c-ares/pull/659 is ill-advised and
+  leads to breakage in applications using c-ares on OpenBSD.
+  
+  See also https://github.com/nodejs/node/issues/52439
+
+Brad House (7 May 2024)
+- static analyzer warning from 48e8cd2
+  
+  Fixes new issue from last commit.
+
+- ares_getnameinfo(): loosen validation on salen
+  
+  salen validation should be greater than or equal to the required
+  storage size.  Its not uncommon to use `struct sockaddr_storage` in
+  modern code which is definitely larger than `struct sockaddr_in` and
+  on some systems even larger than `struct sockaddr_in6`.
+  
+  Fixes Issue: #752
+  Fix By: Brad House (@bradh352)
+
+- ares_reinit(): reduce locked duration
+
+- add missing copyrights
+
+- manpage: remove AUTHOR section
+  
+  The current best practices consider the AUTHOR section to be deprecated
+  and recommend removing such a section.
+
+- fix endianness from PR #750
+
+GitHub (29 Apr 2024)
+- [Brad House brought this change]
+
+  Apple: reimplement DNS configuration reading (#750)
+  
+  The DNS configuration for apple is stored in the system configuration
+  database. Apple does provide an emulated `/etc/resolv.conf` on MacOS
+  (but not iOS), it cannot, however, represent the entirety of the DNS
+  configuration. Alternatively, libresolv could be used to also retrieve
+  some system configuration, but it too is not capable of retrieving the
+  entirety of the DNS configuration.
+  
+  Attempts to use the preferred public API of `SCDynamicStoreCreate()` and
+  friends yielded incomplete DNS information. Instead, that leaves some
+  apple "internal" symbols from `configd` that we need to access in order
+  to get the entire configuration. We can see that we're not the only ones
+  to do this as Google Chrome also does:
+  https://chromium.googlesource.com/chromium/src/+/HEAD/net/dns/dns_config_watcher_mac.cc
+  
+  These internal functions are what what`libresolv` and `scutil` use to
+  retrieve the dns configuration. Since these symbols are not publicly
+  available, we will dynamically load the symbols from `libSystem` and
+  import the `dnsinfo.h` private header extracted from:
+  https://opensource.apple.com/source/configd/configd-1109.140.1/dnsinfo/dnsinfo.h
+  
+  Fix By: Brad House (@bradh352)
+
+- [Oliver Welsh brought this change]
+
+  Add observability into DNS server health via a server state callback, invoked whenever a query finishes (#744)
+  
+  **Summary**
+  
+  This PR adds a server state callback that is invoked whenever a query to
+  a DNS server finishes.
+  
+  The callback is invoked with the server details (as a string), a boolean
+  indicating whether the query succeeded or failed, flags describing the
+  query (currently just indicating whether TCP or UDP was used), and
+  custom userdata.
+  
+  This can be used by user applications to gain observability into DNS
+  server health and usage. For example, alerts when a DNS server
+  fails/recovers or metrics to track how often a DNS server is used and
+  responds successfully.
+  
+  **Testing**
+  
+  Three new regression tests `MockChannelTest.ServStateCallback*` have
+  been added to test the new callback in different success/failure
+  scenarios.
+  
+  Fix By: Oliver Welsh (@oliverwelsh)
+
+Brad House (25 Apr 2024)
+- ares_init_options() fix crash on misuse of event thread options
+  
+  If an invalid event thread system was provided, it would crash during cleanup due to a NULL pointer dereference.
+  
+  Fixes Issue: #749
+  Fix By: Brad House (@bradh352)
+
+GitHub (22 Apr 2024)
+- [Oliver Welsh brought this change]
+
+  Improve reliability in the server retry delay regression tests (#747)
+  
+  Improve reliability in the server retry delay regression tests by
+  increasing the retry delay and sleeping for a little more than the retry
+  delay when attempting to force retries.
+  
+  This helps to account for unreliable timing (e.g. NTP slew)
+  intermittently breaking pipelines.
+  
+  Fix By: Oliver Welsh (@oliverwelsh)
+
+- [Jiwoo Park brought this change]
+
+  cmake: Android requires C99 (#748)
+  
+  I tried to build c-ares using CMake with the latest Android NDK
+  (r26/27), but failed as follows.
+  
+  ```
+  Building C object _deps/c-ares-source-build/src/lib/CMakeFiles/c-ares.dir/Debug/ares__buf.c.o
+  FAILED: _deps/c-ares-source-build/src/lib/CMakeFiles/c-ares.dir/Debug/ares__buf.c.o
+  
+  In file included from c-ares/src/lib/ares__buf.c:27:
+  In file included from c-ares/include/ares.h:85:
+  In file included from Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/netinet/in.h:36:
+  In file included from Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/linux/in.h:231:
+  In file included from Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/aarch64-linux-android/asm/byteorder.h:12:
+  In file included from Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/linux/byteorder/little_endian.h:17:
+  Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/linux/swab.h:28:8: error: unknown type name 'inline'
+     28 | static inline __attribute__((__const__)) __u32 __fswahw32(__u32 val) {
+        |        ^
+  Android/sdk/ndk/27.0.11718014/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/linux/swab.h:28:47: error: expected ';' after top level declarator
+     28 | static inline __attribute__((__const__)) __u32 __fswahw32(__u32 val) {
+        |                                               ^
+  ```
+  
+  It looks like the NDK recently added C99 code containing `inline`
+  functions, but c-ares is setting the `C_STANDARD` CMake property to C90.
+  
+  Fix By: Jiwoo Park (@jimmy-park)
+
+- [Aviv Keller brought this change]
+
+  Use gender-neutral language in SECURITY.md (#746)
+  
+  This PR updates the SECURITY.md file to use more gender-inclusive
+  language.
+  
+  Fix By: Aviv Keller (@RedYetiDev)
+
+Brad House (15 Apr 2024)
+- check for spurious wakeup
+
+- ares_queue_wait_empty() does not honor timeout_ms >= 0
+  
+  There is a missing break statement in the case that timeout_ms >= 0
+  leading to a possible infinite loop.
+  
+  Fixes Issue: #742
+  Fix By: Brad House (@bradh352)
+
+GitHub (14 Apr 2024)
+- [Oliver Welsh brought this change]
+
+  Add server failover retry behavior, where failed servers are retried with small probability after a minimum delay (#731)
+  
+  **Summary**
+  
+  By default c-ares will select the server with the least number of
+  consecutive failures when sending a query. However, this means that if a
+  server temporarily goes down and hits failures (e.g. a transient network
+  issue), then that server will never be retried until all other servers
+  hit the same number of failures.
+  
+  This is an issue if the failed server is preferred to other servers in
+  the list. For example if a primary server and a backup server are
+  configured.
+  
+  This PR adds new server failover retry behavior, where failed servers
+  are retried with small probability after a minimum delay has passed. The
+  probability and minimum delay are configurable via the
+  `ARES_OPT_SERVER_FAILOVER` option. By default c-ares will use a
+  probability of 10% and a minimum delay of 5 seconds.
+  
+  In addition, this PR includes a small change to always close out
+  connections to servers which have hit failures, even with
+  `ARES_FLAG_STAYOPEN`. It's possible that resetting the connection can
+  resolve some server issues (e.g. by resetting the source port).
+  
+  **Testing**
+  
+  A new set of regression tests have been added to test the new server
+  failover retry behavior.
+  
+  Fixes Issue: #717
+  Fix By: Oliver Welsh (@oliverwelsh)
+
+Brad House (4 Apr 2024)
+- MacOS/iOS: Apple does not allow users to configure DNS resolution timeouts or number of retries as Apple themselves uses dynamic/algorithmic values for their own resolver, so we should disable reading these static dummy values.
+
+GitHub (30 Mar 2024)
+- [Chenyu Yang brought this change]
+
+  CMake: remove duplicate checks for sys/random.h (#740)
+  
+  Fix By: Chenyu Yang (@Ch3nYuY)
+
 Version 1.28.1 (30 Mar 2024)
 
 GitHub (30 Mar 2024)
@@ -6189,159 +6482,3 @@ Daniel Stenberg (30 Aug 2013)
 - timeadd: make static
   
   ares__timeadd() was only ever used from within the same source
-
-Yang Tse (18 Jul 2013)
-- xc-am-iface.m4: comments refinement
-
-- configure: fix 'subdir-objects' distclean related issue
-  
-  See XC_AMEND_DISTCLEAN comments for details.
-
-- configure: automake 1.14 compatibility tweak (use XC_AUTOMAKE)
-
-- xc-am-iface.m4: provide XC_AUTOMAKE macro
-
-Daniel Stenberg (12 May 2013)
-- gitignore: ignore all ares_*pdf but also CHANGES.dist
-
-- bump: start working towards 1.10.1
-
-Version 1.10.0 (12 May 2013)
-
-Daniel Stenberg (12 May 2013)
-- RELEASE-NOTES: two more bug fixes
-
-- [Keith Shaw brought this change]
-
-  ares_set_servers_csv: fixed IPv6 address parsing
-  
-  Fixed bug that caused the last part of an IPv6 address to be parsed as
-  the port number when the last part is all numeric.
-
-- nroff: fix two syntax mistakes
-  
-  ares_parse_a_reply and ares_parse_aaaa_reply both had two \fB instead of
-  \fP
-  
-  Reported-by: Alexander Klauer
-  Bug: http://c-ares.haxx.se/mail/c-ares-archive-2013-03/0010.shtml
-
-- [Alex Loukissas brought this change]
-
-  build: fix build on msvc11
-
-- Makefile.am: increment -version-info for 1.10.0 release
-
-- README: remove unnecessary comment
-
-- ares_version.h: copyright end range year is now 2013
-
-- RELEASE-NOTES: synced with fb0737f3a0a1c37
-
-- [Paul Saab brought this change]
-
-  ares_parse_aaaa_reply: Plug memory leak
-  
-  This change is similar to ares_parse_a_reply.c in commit
-  bffd67f16a8f42fe6dbf79ab2e39d92eea05c8a6
-
-- [Patrick Valsecchi brought this change]
-
-  ares_parse_txt_reply: return a ares_txt_reply node for each sub-string
-  
-  Previously, the function would wrongly return all substrings merged into
-  one.
-
-- [Alexander Klauer brought this change]
-
-  library init: documentation update
-  
-  This commit updates the documentation of ares_library_init() and
-  ares_library_cleanup() with regard to the newly introduced reference
-  counting of initializations and deinitializations.
-
-- [Alexander Klauer brought this change]
-
-  library init: be recursive
-  
-  Previously, a single call to ares_library_cleanup() would deinitialise
-  the c-ares library, regardless of how many times ares_library_init() was
-  called. This behaviour may cause problems in programs linking two or
-  more libraries which, in turn, use c-ares. The present commit fixes this
-  problem, deinitializing the library only after a number of calls to
-  ares_library_cleanup() matching the number of calls to
-  ares_library_init().
-
-- [Patrick Valsecchi brought this change]
-
-  protocol parsing: check input data stricter
-  
-  ... so that bad length fields aren't blindly accepted
-  
-  Bug: http://c-ares.haxx.se/mail/c-ares-archive-2013-04/0016.shtml
-
-Guenter Knauf (11 Apr 2013)
-- Create ares_build.h when buidling from Git.
-
-- Added -DCARES_STATICLIB to CFLAGS.
-  
-  Currently this static makefile does only support building the
-  static library libcares.a.
-
-Daniel Stenberg (8 Apr 2013)
-- [Alexander Klauer brought this change]
-
-  .gitignore: ignore patch files
-  
-  This commit adds a line to .gitignore to the effect that patch files
-  generated by 'git format-patch' are excluded from the repository.
-
-- [Alexander Klauer brought this change]
-
-  ares_destroy() documentation: no new requests
-  
-  Clarify that no new requests may be added to a resolver channel that is
-  currently being destroyed.
-
-- [Alexander Klauer brought this change]
-
-  Documentation: properly document ARES_ECANCELLED
-  
-  This commit clarifies the behaviour of ares_cancel() with respect to
-  callbacks and adds missing documentation of ARES_ECANCELLED to the man
-  pages of the affected functions.
-
-- [Alexander Klauer brought this change]
-
-  ares_cancel(): cancel requests safely
-  
-  An invocation of ares_cancel() walks through the request list, calling
-  the callbacks of all pending requests on a channel. Previously, if such
-  a callback added a new request to the channel, the request list might
-  not end up empty, causing an abort by assertion failure. The present
-  commit ensures that precisely all requests present upon entry of
-  ares_cancel() are cancelled, and that adding new requests through
-  callbacks is safe.
-
-Yang Tse (10 Mar 2013)
-- ares.h: stricter CARES_EXTERN linkage decorations logic
-  
-  No API change involved.
-
-- ares_build.h.dist: enhance non-configure GCC ABI detection logic
-  
-  GCC specific adjustments:
-  
-  - check __ILP32__ before 32 and 64bit processor architectures in
-    order to detect ILP32 programming model on 64 bit processors
-    which, of course, also support LP64 programming model, when using
-    gcc 4.7 or newer.
-  
-  - keep 32bit processor architecture checks in order to support gcc
-    versions older than 4.7 which don't define __ILP32__
-  
-  - check __LP64__ for gcc 3.3 and newer, while keeping 64bit processor
-    architecture checks for older versions which don't define __LP64__
-
-Daniel Stenberg (9 Mar 2013)
-- ares.h: there is no ares_free_soa function
diff --git a/deps/cares/CMakeLists.txt b/deps/cares/CMakeLists.txt
index 2718ce52b73ff6..f2f2c3b8448e90 100644
--- a/deps/cares/CMakeLists.txt
+++ b/deps/cares/CMakeLists.txt
@@ -12,10 +12,10 @@ INCLUDE (CheckCSourceCompiles)
 INCLUDE (CheckStructHasMember)
 INCLUDE (CheckLibraryExists)
 
-PROJECT (c-ares LANGUAGES C VERSION "1.28.1" )
+PROJECT (c-ares LANGUAGES C VERSION "1.29.0" )
 
 # Set this version before release
-SET (CARES_VERSION "1.28.1")
+SET (CARES_VERSION "1.29.0")
 
 INCLUDE (GNUInstallDirs) # include this *AFTER* PROJECT(), otherwise paths are wrong.
 
@@ -30,7 +30,7 @@ INCLUDE (GNUInstallDirs) # include this *AFTER* PROJECT(), otherwise paths are w
 # For example, a version of 4:0:2 would generate output such as:
 #    libname.so   -> libname.so.2
 #    libname.so.2 -> libname.so.2.2.0
-SET (CARES_LIB_VERSIONINFO "15:1:13")
+SET (CARES_LIB_VERSIONINFO "16:0:14")
 
 
 OPTION (CARES_STATIC        "Build as a static library"                                             OFF)
@@ -172,7 +172,7 @@ return 0;
 	MACOS_V1012)
 ENDIF ()
 
-IF ((IOS OR APPLE OR ZOS) AND HAVE_LIBRESOLV)
+IF (ZOS AND HAVE_LIBRESOLV)
 	SET (CARES_USE_LIBRESOLV 1)
 ENDIF()
 
@@ -227,7 +227,6 @@ CHECK_INCLUDE_FILES (sys/select.h          HAVE_SYS_SELECT_H)
 CHECK_INCLUDE_FILES (sys/stat.h            HAVE_SYS_STAT_H)
 CHECK_INCLUDE_FILES (sys/time.h            HAVE_SYS_TIME_H)
 CHECK_INCLUDE_FILES (sys/uio.h             HAVE_SYS_UIO_H)
-CHECK_INCLUDE_FILES (sys/random.h          HAVE_SYS_RANDOM_H)
 CHECK_INCLUDE_FILES (sys/event.h           HAVE_SYS_EVENT_H)
 CHECK_INCLUDE_FILES (sys/epoll.h           HAVE_SYS_EPOLL_H)
 CHECK_INCLUDE_FILES (ifaddrs.h             HAVE_IFADDRS_H)
@@ -341,7 +340,6 @@ CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_SOCKIO_H	sys/sockio.h)
 CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_TIME_H     sys/time.h)
 CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_STAT_H     sys/stat.h)
 CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_UIO_H      sys/uio.h)
-CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_RANDOM_H   sys/random.h)
 CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_EVENT_H    sys/event.h)
 CARES_EXTRAINCLUDE_IFSET (HAVE_SYS_EPOLL_H    sys/epoll.h)
 CARES_EXTRAINCLUDE_IFSET (HAVE_TIME_H         time.h)
diff --git a/deps/cares/README.md b/deps/cares/README.md
index 70aa67fce6997c..c5bc12700e40dd 100644
--- a/deps/cares/README.md
+++ b/deps/cares/README.md
@@ -1,7 +1,7 @@
 # [![c-ares logo](https://c-ares.org/art/c-ares-logo.svg)](https://c-ares.org/)
 
 [![Build Status](https://api.cirrus-ci.com/github/c-ares/c-ares.svg?branch=main)](https://cirrus-ci.com/github/c-ares/c-ares)
-[![Windows Build Status](https://ci.appveyor.com/api/projects/status/aevgc5914tm72pvs/branch/master?svg=true)](https://ci.appveyor.com/project/c-ares/c-ares/branch/master)
+[![Windows Build Status](https://ci.appveyor.com/api/projects/status/aevgc5914tm72pvs/branch/main?svg=true)](https://ci.appveyor.com/project/c-ares/c-ares/branch/main)
 [![Coverage Status](https://coveralls.io/repos/github/c-ares/c-ares/badge.svg)](https://coveralls.io/github/c-ares/c-ares)
 [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/291/badge)](https://bestpractices.coreinfrastructure.org/projects/291)
 [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/c-ares.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:c-ares)
diff --git a/deps/cares/RELEASE-NOTES.md b/deps/cares/RELEASE-NOTES.md
index 3a9b9dd9c35fa1..2d44f37d66f248 100644
--- a/deps/cares/RELEASE-NOTES.md
+++ b/deps/cares/RELEASE-NOTES.md
@@ -1,49 +1,42 @@
-## c-ares version 1.28.1 - Mar 30 2024
-
-This release contains a fix for a single significant regression introduced
-in c-ares 1.28.0.
-
-* `ares_search()` and `ares_getaddrinfo()` resolution fails if no search domains
-  are specified. [Issue #737](https://github.com/c-ares/c-ares/issues/737)
-
-
-## c-ares version 1.28.0 - Mar 29 2024
+## c-ares version 1.29.0 - May 24 2024
 
 This is a feature and bugfix release.
 
 Features:
 
-* Emit warnings when deprecated c-ares functions are used.  This can be
-  disabled by passing a compiler definition of `CARES_NO_DEPRECATED`. [PR #732](https://github.com/c-ares/c-ares/pull/732)
-* Add function `ares_search_dnsrec()` to search for records using the new DNS
-  record data structures. [PR #719](https://github.com/c-ares/c-ares/pull/719)
-* Rework internals to pass around `ares_dns_record_t` instead of binary data,
-  this introduces new public functions of `ares_query_dnsrec()` and
-  `ares_send_dnsrec()`. [PR #730](https://github.com/c-ares/c-ares/pull/730)
+* When using `ARES_OPT_EVENT_THREAD`, automatically reload system configuration
+  when network conditions change. [PR #759](https://github.com/c-ares/c-ares/pull/759)
+* Apple: reimplement DNS configuration reading to more accurately pull DNS
+  settings. [PR #750](https://github.com/c-ares/c-ares/pull/750)
+* Add observability into DNS server health via a server state callback, invoked
+  whenever a query finishes. [PR #744](https://github.com/c-ares/c-ares/pull/744)
+* Add server failover retry behavior, where failed servers are retried with
+  small probability after a minimum delay. [PR #731](https://github.com/c-ares/c-ares/pull/731)
 
 Changes:
 
-* tests: when performing simulated queries, reduce timeouts to make tests run
-  faster
-* Replace configuration file parsers with memory-safe parser. [PR #725](https://github.com/c-ares/c-ares/pull/725)
-* Remove `acountry` completely, the manpage might still get installed otherwise. [Issue #718](https://github.com/c-ares/c-ares/pull/718)
+* Mark `ares_channel_t *` as const in more places in the public API. [PR #758](https://github.com/c-ares/c-ares/pull/758)
 
 Bugfixes:
 
-* CMake: don't overwrite global required libraries/definitions/includes which
-  could cause build errors for projects chain building c-ares. [Issue #729](https://github.com/c-ares/c-ares/issues/729)
-* On some platforms, `netinet6/in6.h` is not included by `netinet/in.h`
-  and needs to be included separately. [PR #728](https://github.com/c-ares/c-ares/pull/728)
-* Fix a potential memory leak in `ares_init()`. [Issue #724](https://github.com/c-ares/c-ares/issues/724)
-* Some platforms don't have the `isascii()` function.  Implement as a macro. [PR #721](https://github.com/c-ares/c-ares/pull/721)
-* CMake: Fix Chain building if CMAKE runtime paths not set
-* NDots configuration should allow a value of zero. [PR #735](https://github.com/c-ares/c-ares/pull/735)
+* Due to a logic flaw dns name compression writing was not properly implemented
+  which would result in the name prefix not being written for a partial match.
+  This could cause issues in various record types such as MX records when using
+  the deprecated API.  Regression introduced in 1.28.0. [Issue #757](https://github.com/c-ares/c-ares/issues/757)
+* Revert OpenBSD `SOCK_DNS` flag, it doesn't do what the docs say it does and
+  causes c-ares to become non-functional. [PR #754](https://github.com/c-ares/c-ares/pull/754)
+* `ares_getnameinfo()`: loosen validation on `salen` parameter. [Issue #752](https://github.com/c-ares/c-ares/issues/752)
+* cmake: Android requires C99. [PR #748](https://github.com/c-ares/c-ares/pull/748)
+* `ares_queue_wait_empty()` does not honor timeout_ms >= 0. [Issue #742](https://github.com/c-ares/c-ares/pull/742)
 
-Thanks go to these friendly people for their efforts and contributions for this release:
+Thanks go to these friendly people for their efforts and contributions for this
+release:
 
 * Brad House (@bradh352)
-* Cristian Rodríguez (@crrodriguez)
 * Daniel Stenberg (@bagder)
-* Faraz (@farazrbx)
-* Faraz Fallahi (@fffaraz)
+* David Hotham (@dimbleby)
+* Jiwoo Park (@jimmy-park)
 * Oliver Welsh (@oliverwelsh)
+* Volker Schlecht (@VlkrS)
+
+
diff --git a/deps/cares/SECURITY.md b/deps/cares/SECURITY.md
index 2a04a8dbcc3557..0b66cc1146ad31 100644
--- a/deps/cares/SECURITY.md
+++ b/deps/cares/SECURITY.md
@@ -43,7 +43,7 @@ announcement.
 
 - If the report is rejected, the team writes to the reporter to explain why.
 
-- If the report is accepted, the team writes to the reporter to let him/her
+- If the report is accepted, the team writes to the reporter to let them
   know it is accepted and that they are working on a fix.
 
 - The security team discusses the problem, works out a fix, considers the
diff --git a/deps/cares/aminclude_static.am b/deps/cares/aminclude_static.am
index 6fa817a8346703..92a2bdd62a047c 100644
--- a/deps/cares/aminclude_static.am
+++ b/deps/cares/aminclude_static.am
@@ -1,6 +1,6 @@
 
 # aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Sat Mar 30 16:17:17 CET 2024
+# from AX_AM_MACROS_STATIC on Fri May 24 08:50:03 CEST 2024
 
 
 # Code coverage
diff --git a/deps/cares/cares.gyp b/deps/cares/cares.gyp
index 053cdf8c8286ad..d654a896f56ffd 100644
--- a/deps/cares/cares.gyp
+++ b/deps/cares/cares.gyp
@@ -21,6 +21,8 @@
       'src/lib/ares__htable_strvp.h',
       'src/lib/ares__htable_szvp.c',
       'src/lib/ares__htable_szvp.h',
+      'src/lib/ares__htable_vpvp.c',
+      'src/lib/ares__htable_vpvp.h',
       'src/lib/ares__iface_ips.c',
       'src/lib/ares__iface_ips.h',
       'src/lib/ares__llist.c',
@@ -46,6 +48,7 @@
       'src/lib/ares_dns_record.c',
       'src/lib/ares_dns_private.h',
       'src/lib/ares_dns_write.c',
+      'src/lib/ares_event_configchg.c',
       'src/lib/ares_event.h',
       'src/lib/ares_event_win32.h',
       'src/lib/ares_event_epoll.c',
@@ -113,6 +116,11 @@
       'src/tools/ares_getopt.c',
       'src/tools/ares_getopt.h',
     ],
+    'cares_sources_mac': [
+      'config/darwin/ares_config.h',
+      'src/lib/ares_sysconfig_mac.c',
+      'src/lib/thirdparty/apple/dnsinfo.h',
+    ],
     'cares_sources_win': [
       'src/lib/config-win32.h',
       'src/lib/windows_port.c',
@@ -206,7 +214,9 @@
         }],
         [ 'OS=="mac" or OS=="ios"', {
           'include_dirs': [ 'config/darwin' ],
-          'sources': [ 'config/darwin/ares_config.h' ]
+          'sources': [
+            '<@(cares_sources_mac)',
+          ]
         }],
         [ 'OS=="freebsd" or OS=="dragonflybsd"', {
           'include_dirs': [ 'config/freebsd' ],
diff --git a/deps/cares/configure b/deps/cares/configure
index 656164f46e3ad8..f39814222f4983 100755
--- a/deps/cares/configure
+++ b/deps/cares/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for c-ares 1.28.1.
+# Generated by GNU Autoconf 2.71 for c-ares 1.29.0.
 #
 # Report bugs to .
 #
@@ -621,8 +621,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='c-ares'
 PACKAGE_TARNAME='c-ares'
-PACKAGE_VERSION='1.28.1'
-PACKAGE_STRING='c-ares 1.28.1'
+PACKAGE_VERSION='1.29.0'
+PACKAGE_STRING='c-ares 1.29.0'
 PACKAGE_BUGREPORT='c-ares mailing list: http://lists.haxx.se/listinfo/c-ares'
 PACKAGE_URL=''
 
@@ -1420,7 +1420,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures c-ares 1.28.1 to adapt to many kinds of systems.
+\`configure' configures c-ares 1.29.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1491,7 +1491,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of c-ares 1.28.1:";;
+     short | recursive ) echo "Configuration of c-ares 1.29.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1627,7 +1627,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-c-ares configure 1.28.1
+c-ares configure 1.29.0
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2251,7 +2251,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by c-ares $as_me 1.28.1, which was
+It was created by c-ares $as_me 1.29.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3225,7 +3225,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
-CARES_VERSION_INFO="15:1:13"
+CARES_VERSION_INFO="16:0:14"
 
 
 
@@ -5907,7 +5907,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='c-ares'
- VERSION='1.28.1'
+ VERSION='1.29.0'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -20946,79 +20946,6 @@ esac
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $need_xnet" >&5
 printf "%s\n" "$need_xnet" >&6; }
 
-if test "x$host_vendor" = "xapple"
-then :
-
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing res_servicename" >&5
-printf %s "checking for library containing res_servicename... " >&6; }
-if test ${ac_cv_search_res_servicename+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-char res_servicename ();
-int
-main (void)
-{
-return res_servicename ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' resolv
-do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"
-then :
-  ac_cv_search_res_servicename=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext
-  if test ${ac_cv_search_res_servicename+y}
-then :
-  break
-fi
-done
-if test ${ac_cv_search_res_servicename+y}
-then :
-
-else $as_nop
-  ac_cv_search_res_servicename=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_res_servicename" >&5
-printf "%s\n" "$ac_cv_search_res_servicename" >&6; }
-ac_res=$ac_cv_search_res_servicename
-if test "$ac_res" != no
-then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-
-printf "%s\n" "#define CARES_USE_LIBRESOLV 1" >>confdefs.h
-
-
-else $as_nop
-
-    as_fn_error $? "Unable to find libresolv which is required for iPhone targets" "$LINENO" 5
-
-fi
-
-
-fi
-
 if test "x$host_vendor" = "xibm" -a "x$host_os" = "xopenedition"
 then :
 
@@ -25956,7 +25883,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by c-ares $as_me 1.28.1, which was
+This file was extended by c-ares $as_me 1.29.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -26024,7 +25951,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-c-ares config.status 1.28.1
+c-ares config.status 1.29.0
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff --git a/deps/cares/configure.ac b/deps/cares/configure.ac
index 4d263a7f309017..35d048d57db3b7 100644
--- a/deps/cares/configure.ac
+++ b/deps/cares/configure.ac
@@ -2,10 +2,10 @@ dnl Copyright (C) The c-ares project and its contributors
 dnl SPDX-License-Identifier: MIT
 AC_PREREQ([2.69])
 
-AC_INIT([c-ares], [1.28.1],
+AC_INIT([c-ares], [1.29.0],
   [c-ares mailing list: http://lists.haxx.se/listinfo/c-ares])
 
-CARES_VERSION_INFO="15:1:13"
+CARES_VERSION_INFO="16:0:14"
 dnl This flag accepts an argument of the form current[:revision[:age]]. So,
 dnl passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
 dnl 1.
@@ -334,15 +334,6 @@ case $host_os in
 esac
 AC_MSG_RESULT($need_xnet)
 
-dnl resolv lib for Apple (MacOS and iOS)
-AS_IF([test "x$host_vendor" = "xapple"], [
-  AC_SEARCH_LIBS([res_servicename], [resolv], [
-    AC_DEFINE([CARES_USE_LIBRESOLV], [1], [Use resolver library to configure cares])
-  ], [
-    AC_MSG_ERROR([Unable to find libresolv which is required for iPhone targets])
-  ])
-])
-
 dnl resolv lib for z/OS
 AS_IF([test "x$host_vendor" = "xibm" -a "x$host_os" = "xopenedition" ], [
   AC_SEARCH_LIBS([res_init], [resolv], [
diff --git a/deps/cares/docs/Makefile.in b/deps/cares/docs/Makefile.in
index 8cb46878fa59ee..08886323ef50c7 100644
--- a/deps/cares/docs/Makefile.in
+++ b/deps/cares/docs/Makefile.in
@@ -460,6 +460,7 @@ MANPAGES = ares_cancel.3		\
   ares_set_local_dev.3			\
   ares_set_local_ip4.3			\
   ares_set_local_ip6.3			\
+  ares_set_server_state_callback.3	\
   ares_set_servers.3			\
   ares_set_servers_csv.3		\
   ares_set_servers_ports.3		\
diff --git a/deps/cares/docs/Makefile.inc b/deps/cares/docs/Makefile.inc
index 882bf2280446d5..685978674e358b 100644
--- a/deps/cares/docs/Makefile.inc
+++ b/deps/cares/docs/Makefile.inc
@@ -122,6 +122,7 @@ MANPAGES = ares_cancel.3		\
   ares_set_local_dev.3			\
   ares_set_local_ip4.3			\
   ares_set_local_ip6.3			\
+  ares_set_server_state_callback.3	\
   ares_set_servers.3			\
   ares_set_servers_csv.3		\
   ares_set_servers_ports.3		\
diff --git a/deps/cares/docs/ares_cancel.3 b/deps/cares/docs/ares_cancel.3
index 4eecaade246312..967a946b491cd3 100644
--- a/deps/cares/docs/ares_cancel.3
+++ b/deps/cares/docs/ares_cancel.3
@@ -31,5 +31,3 @@ c-ares 1.6.0 and earlier pass a status of
 .BR ARES_ETIMEOUT
 instead of
 .BR ARES_ECANCELLED .
-.SH AUTHOR
-Dirk Manske
diff --git a/deps/cares/docs/ares_create_query.3 b/deps/cares/docs/ares_create_query.3
index 5fb59f920616f4..a54eec3e2a6bd1 100644
--- a/deps/cares/docs/ares_create_query.3
+++ b/deps/cares/docs/ares_create_query.3
@@ -70,4 +70,3 @@ Added in c-ares 1.10.0
 .BR ares_expand_name (3),
 .BR ares_free_string (3),
 .BR ares_mkquery (3)
-.SH AUTHOR
diff --git a/deps/cares/docs/ares_destroy.3 b/deps/cares/docs/ares_destroy.3
index 8548d59c54182e..d1984b7cc98d26 100644
--- a/deps/cares/docs/ares_destroy.3
+++ b/deps/cares/docs/ares_destroy.3
@@ -27,7 +27,3 @@ using this channel may be made once this function is called.
 .BR ares_init (3),
 .BR ares_cancel (3),
 .BR ares_threadsafety (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_destroy_options.3 b/deps/cares/docs/ares_destroy_options.3
index 432c4b10d7f402..18340995b2c0fd 100644
--- a/deps/cares/docs/ares_destroy_options.3
+++ b/deps/cares/docs/ares_destroy_options.3
@@ -18,7 +18,3 @@ identified by \Ioptions\fP, freeing all memory allocated by
 .SH SEE ALSO
 .BR ares_save_options (3),
 .BR ares_init_options (3)
-.SH AUTHOR
-Brad House
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_dns_mapping.3 b/deps/cares/docs/ares_dns_mapping.3
index 6c2c905a5c5185..690ad62be236af 100644
--- a/deps/cares/docs/ares_dns_mapping.3
+++ b/deps/cares/docs/ares_dns_mapping.3
@@ -298,5 +298,3 @@ These functions were first introduced in c-ares version 1.22.0.
 .BR ares_dns_record (3),
 .BR ares_dns_rr (3),
 .BR ares_init (3)
-.SH AUTHOR
-Copyright (C) 2023 The c-ares project and its members.
diff --git a/deps/cares/docs/ares_dns_record.3 b/deps/cares/docs/ares_dns_record.3
index 01ce7601aa3199..3ec42b5411f619 100644
--- a/deps/cares/docs/ares_dns_record.3
+++ b/deps/cares/docs/ares_dns_record.3
@@ -439,5 +439,3 @@ These functions were first introduced in c-ares version 1.22.0.
 .BR ares_dns_mapping (3),
 .BR ares_dns_rr (3),
 .BR ares_free_string (3)
-.SH AUTHOR
-Copyright (C) 2023 The c-ares project and its members.
diff --git a/deps/cares/docs/ares_dns_rr.3 b/deps/cares/docs/ares_dns_rr.3
index 290859e838e7ef..9ea38fa6d73957 100644
--- a/deps/cares/docs/ares_dns_rr.3
+++ b/deps/cares/docs/ares_dns_rr.3
@@ -635,5 +635,3 @@ These functions were first introduced in c-ares version 1.22.0.
 .BR ares_dns_mapping (3),
 .BR ares_dns_record (3),
 .BR ares_free_string (3)
-.SH AUTHOR
-Copyright (C) 2023 The c-ares project and its members.
diff --git a/deps/cares/docs/ares_dup.3 b/deps/cares/docs/ares_dup.3
index 2395fe180a506a..8677005f5c2274 100644
--- a/deps/cares/docs/ares_dup.3
+++ b/deps/cares/docs/ares_dup.3
@@ -9,7 +9,7 @@ ares_dup \- Duplicate a resolver channel
 .nf
 #include 
 
-int ares_dup(ares_channel_t **\fIdest\fP, ares_channel_t *\fIsource\fP)
+int ares_dup(ares_channel_t **\fIdest\fP, const ares_channel_t *\fIsource\fP)
 .fi
 .SH DESCRIPTION
 The \fBares_dup(3)\fP function duplicates an existing communications channel
@@ -23,6 +23,3 @@ handle when the channel is no longer needed.
 .BR ares_library_init (3)
 .SH AVAILABILITY
 \fIares_dup(3)\fP was added in c-ares 1.6.0
-.SH AUTHOR
-Daniel Stenberg
-
diff --git a/deps/cares/docs/ares_expand_name.3 b/deps/cares/docs/ares_expand_name.3
index 7bd43842a2782f..a8d08122335411 100644
--- a/deps/cares/docs/ares_expand_name.3
+++ b/deps/cares/docs/ares_expand_name.3
@@ -49,7 +49,3 @@ Memory was exhausted.
 .SH SEE ALSO
 .BR ares_mkquery (3),
 .BR ares_free_string (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_expand_string.3 b/deps/cares/docs/ares_expand_string.3
index 22d6654e50f38f..e4b1af9c90b672 100644
--- a/deps/cares/docs/ares_expand_string.3
+++ b/deps/cares/docs/ares_expand_string.3
@@ -46,5 +46,3 @@ The encoded string was malformed and could not be expanded.
 Memory was exhausted.
 .SH SEE ALSO
 .BR ares_free_string (3)
-.SH AUTHOR
-Dominick Meglio
diff --git a/deps/cares/docs/ares_fds.3 b/deps/cares/docs/ares_fds.3
index 5871be5af6a201..6ac116e7a74119 100644
--- a/deps/cares/docs/ares_fds.3
+++ b/deps/cares/docs/ares_fds.3
@@ -9,7 +9,7 @@ ares_fds \- return file descriptors to select on (deprecated)
 .nf
 #include 
 
-int ares_fds(ares_channel_t *\fIchannel\fP,
+int ares_fds(const ares_channel_t *\fIchannel\fP,
              fd_set *\fIread_fds\fP,
              fd_set *\fIwrite_fds\fP)
 .fi
@@ -55,7 +55,3 @@ more modern methods to check for socket readable/writable state such as
 .BR ares_init_options (3),
 .BR ares_timeout (3),
 .BR ares_process (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_free_data.3 b/deps/cares/docs/ares_free_data.3
index a4de4dbf176593..98ebf6886bd8ac 100644
--- a/deps/cares/docs/ares_free_data.3
+++ b/deps/cares/docs/ares_free_data.3
@@ -60,9 +60,3 @@ This function was first introduced in c-ares version 1.7.0.
 .BR ares_parse_mx_reply (3),
 .BR ares_parse_txt_reply (3),
 .BR ares_parse_soa_reply (3)
-.SH AUTHOR
-Yang Tse
-.PP
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2004-2010 by Daniel Stenberg.
diff --git a/deps/cares/docs/ares_free_hostent.3 b/deps/cares/docs/ares_free_hostent.3
index 973dc9dc557349..78d74d04a85237 100644
--- a/deps/cares/docs/ares_free_hostent.3
+++ b/deps/cares/docs/ares_free_hostent.3
@@ -28,7 +28,3 @@ structures when the callback returns.
 .BR ares_parse_aaaa_reply (3),
 .BR ares_parse_ptr_reply (3),
 .BR ares_parse_ns_reply (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_free_string.3 b/deps/cares/docs/ares_free_string.3
index 9871b48e26e8cb..17984ba9808024 100644
--- a/deps/cares/docs/ares_free_string.3
+++ b/deps/cares/docs/ares_free_string.3
@@ -17,7 +17,3 @@ function.
 .SH SEE ALSO
 .BR ares_mkquery (3)
 .BR ares_expand_string (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 2000 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_freeaddrinfo.3 b/deps/cares/docs/ares_freeaddrinfo.3
index 0f2a6ae0244bc8..b4b9e4c502a919 100644
--- a/deps/cares/docs/ares_freeaddrinfo.3
+++ b/deps/cares/docs/ares_freeaddrinfo.3
@@ -20,7 +20,3 @@ returned in \fIresult\fP of
 .B ares_addrinfo_callback
 .SH SEE ALSO
 .BR ares_getaddrinfo (3),
-.SH AUTHOR
-Christian Ammer
-.BR
-Andrew Selivanov 
diff --git a/deps/cares/docs/ares_get_servers.3 b/deps/cares/docs/ares_get_servers.3
index 7aeaa50ee15c1b..9b960f452bc8f0 100644
--- a/deps/cares/docs/ares_get_servers.3
+++ b/deps/cares/docs/ares_get_servers.3
@@ -10,10 +10,10 @@ ares_get_servers, ares_get_servers_ports \- Retrieve name servers from an initia
 .nf
 #include 
 
-int ares_get_servers(ares_channel_t *\fIchannel\fP,
+int ares_get_servers(const ares_channel_t *\fIchannel\fP,
                      struct ares_addr_node **\fIservers\fP)
 
-int ares_get_servers_ports(ares_channel_t *\fIchannel\fP,
+int ares_get_servers_ports(const ares_channel_t *\fIchannel\fP,
                            struct ares_addr_port_node **\fIservers\fP)
 .fi
 .SH DESCRIPTION
@@ -67,13 +67,3 @@ was invalid.
 .SH NOTES
 As of c-ares 1.24, these functions are deprecated due to their lack of ability
 to store the entire server configuration.  Use \fBares_get_servers_csv(3)\fP.
-.SH AUTHOR
-Implementation of this function and associated library internals are based
-on code, comments and feedback provided in November and December of 2008 by
-Daniel Stenberg, Gregor Jasny, Phil Blundell and Yang Tse, December 2009
-by Cedric Bail, February 2010 by Jakub Hrozek. On March 2010 Yang Tse
-shuffled all the bits and this function popped out.
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2008-2010 by Daniel Stenberg
diff --git a/deps/cares/docs/ares_getaddrinfo.3 b/deps/cares/docs/ares_getaddrinfo.3
index 234e6568879b7c..5544ce20224eba 100644
--- a/deps/cares/docs/ares_getaddrinfo.3
+++ b/deps/cares/docs/ares_getaddrinfo.3
@@ -192,7 +192,3 @@ on each of the resolved addresses as per RFC6724.
 This function was added in c-ares 1.16.0, released in March 2020.
 .SH SEE ALSO
 .BR ares_freeaddrinfo (3)
-.SH AUTHOR
-Christian Ammer
-.br
-Andrew Selivanov 
diff --git a/deps/cares/docs/ares_gethostbyaddr.3 b/deps/cares/docs/ares_gethostbyaddr.3
index 8d79d903a5715d..cc4092285c0168 100644
--- a/deps/cares/docs/ares_gethostbyaddr.3
+++ b/deps/cares/docs/ares_gethostbyaddr.3
@@ -98,7 +98,3 @@ within the eventloop when notified.
 .SH SEE ALSO
 .BR ares_process (3),
 .BR ares_gethostbyname (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_gethostbyname.3 b/deps/cares/docs/ares_gethostbyname.3
index 1067ac11006ecb..06d075ca6c5136 100644
--- a/deps/cares/docs/ares_gethostbyname.3
+++ b/deps/cares/docs/ares_gethostbyname.3
@@ -106,7 +106,3 @@ within the eventloop when notified.
 .SH SEE ALSO
 .BR ares_process (3),
 .BR ares_gethostbyaddr (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_gethostbyname_file.3 b/deps/cares/docs/ares_gethostbyname_file.3
index 98cb93fd8115cb..57dd7c43e95ebd 100644
--- a/deps/cares/docs/ares_gethostbyname_file.3
+++ b/deps/cares/docs/ares_gethostbyname_file.3
@@ -66,7 +66,3 @@ Added in c-ares 1.5.4
 .BR ares_gethostbyname (3),
 .BR ares_free_hostent (3),
 .BR ares_init_options (3)
-.SH AUTHOR
-Brad Spencer
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_getnameinfo.3 b/deps/cares/docs/ares_getnameinfo.3
index b4161d4000f6ff..66b04f9efc11a7 100644
--- a/deps/cares/docs/ares_getnameinfo.3
+++ b/deps/cares/docs/ares_getnameinfo.3
@@ -145,7 +145,3 @@ will be
 .BR NULL .
 .SH SEE ALSO
 .BR ares_process (3),
-.SH AUTHOR
-Dominick Meglio
-.br
-Copyright 2005 by Dominick Meglio.
diff --git a/deps/cares/docs/ares_getsock.3 b/deps/cares/docs/ares_getsock.3
index 126d7de69c038d..b5302a3906b58a 100644
--- a/deps/cares/docs/ares_getsock.3
+++ b/deps/cares/docs/ares_getsock.3
@@ -9,7 +9,7 @@ ares_getsock \- get socket descriptors to wait on (deprecated)
 .nf
 #include 
 
-int ares_getsock(ares_channel_t *\fIchannel\fP, ares_socket_t *\fIsocks\fP,
+int ares_getsock(const ares_channel_t *\fIchannel\fP, ares_socket_t *\fIsocks\fP,
                  int \fInumsocks\fP);
 .fi
 .SH DESCRIPTION
diff --git a/deps/cares/docs/ares_inet_ntop.3 b/deps/cares/docs/ares_inet_ntop.3
index b5ae557a27e853..4a9f0049d31072 100644
--- a/deps/cares/docs/ares_inet_ntop.3
+++ b/deps/cares/docs/ares_inet_ntop.3
@@ -31,6 +31,4 @@ for IPv6).
 .BR ares_inet_pton (3)
 .SH AVAILABILITY
 made properly publicly available in c-ares for real in version 1.10.0
-.SH AUTHOR
-Daniel Stenberg
 
diff --git a/deps/cares/docs/ares_inet_pton.3 b/deps/cares/docs/ares_inet_pton.3
index ca95010b955531..5b7b8010d22a3a 100644
--- a/deps/cares/docs/ares_inet_pton.3
+++ b/deps/cares/docs/ares_inet_pton.3
@@ -27,6 +27,4 @@ the numeric address; this shall be large enough to hold the numeric address
 .BR ares_inet_ntop (3)
 .SH AVAILABILITY
 made properly publicly available in c-ares for real in version 1.10.0
-.SH AUTHOR
-Daniel Stenberg
 
diff --git a/deps/cares/docs/ares_init_options.3 b/deps/cares/docs/ares_init_options.3
index 72889b5b4874ef..81e53cd0f2835a 100644
--- a/deps/cares/docs/ares_init_options.3
+++ b/deps/cares/docs/ares_init_options.3
@@ -11,6 +11,11 @@ ares_init_options, ares_init \- Initialize a resolver channel
 .nf
 #include 
 
+struct ares_server_failover_options {
+  unsigned short retry_chance;
+  size_t retry_delay;
+};
+
 struct ares_options {
   int flags;
   int timeout; /* in seconds or milliseconds, depending on options */
@@ -36,6 +41,7 @@ struct ares_options {
   int maxtimeout; /* in milliseconds */
   unsigned int qcache_max_ttl; /* in seconds */
   ares_evsys_t evsys;
+  struct ares_server_failover_options server_failover_opts;
 };
 
 int ares_init_options(ares_channel_t **\fIchannelptr\fP,
@@ -309,6 +315,9 @@ When enabled, the integrator is no longer responsible for notifying c-ares of
 any events on the file descriptors, so \fIares_process(3)\fP nor
 \fIares_process_fd(3)\fP should ever be called when this option is enabled.
 
+As of c-ares 1.29.0, when enabled, it will also automatically re-load the
+system configuration when changes are detected.
+
 Use \fIares_threadsafety(3)\fP to determine if this option is available to be
 used.
 
@@ -316,6 +325,24 @@ Returns \fBARES_ENOTIMP\fP if this option is passed but not available, and
 \fBARES_ESERVFAIL\fP if there is a critical failure during initialization of
 the event thread.
 .br
+.TP 18
+.B ARES_OPT_SERVER_FAILOVER
+.B struct ares_server_failover_options \fIserver_failover_opts\fP;
+.br
+Configure server failover retry behavior.  When a DNS server fails to
+respond to a query, c-ares will deprioritize the server.  On subsequent
+queries, servers with fewer consecutive failures will be selected in
+preference.  However, in order to detect when such a server has recovered,
+c-ares will occasionally retry failed servers.  The
+\fIares_server_failover_options\fP structure contains options to control this
+behavior.
+The \fIretry_chance\fP field gives the probability (1/N) of retrying a
+failed server on any given query.  Setting to a value of 0 disables retries.
+The \fIretry_delay\fP field gives the minimum delay in milliseconds that c-ares
+will wait before retrying a specific failed server.
+If this option is not specificed then c-ares will use a probability of 10%
+and a minimum delay of 5 seconds.
+.br
 .PP
 The \fIoptmask\fP parameter also includes options without a corresponding
 field in the
@@ -371,9 +398,3 @@ manual page.
 .BR ares_set_servers (3),
 .BR ares_set_sortlist (3),
 .BR ares_threadsafety (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2004-2010 by Daniel Stenberg.
diff --git a/deps/cares/docs/ares_library_cleanup.3 b/deps/cares/docs/ares_library_cleanup.3
index 5eccdbc669df66..ff7d946faeb420 100644
--- a/deps/cares/docs/ares_library_cleanup.3
+++ b/deps/cares/docs/ares_library_cleanup.3
@@ -64,9 +64,3 @@ a do-nothing function on non-Win32/64 platforms.
 .SH SEE ALSO
 .BR ares_library_init (3),
 .BR ares_cancel (3)
-.SH AUTHOR
-Yang Tse
-.PP
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2004-2009 by Daniel Stenberg.
diff --git a/deps/cares/docs/ares_library_init.3 b/deps/cares/docs/ares_library_init.3
index f77effb85651ed..1c30faf29fc381 100644
--- a/deps/cares/docs/ares_library_init.3
+++ b/deps/cares/docs/ares_library_init.3
@@ -96,9 +96,3 @@ a do-nothing function on non-Win32/64 platforms at this point.
 .SH SEE ALSO
 .BR ares_library_cleanup (3),
 .BR ares_strerror (3)
-.SH AUTHOR
-Yang Tse
-.PP
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2004-2009 by Daniel Stenberg.
diff --git a/deps/cares/docs/ares_library_init_android.3 b/deps/cares/docs/ares_library_init_android.3
index 590fad5c811858..bf132d84f3e8fd 100644
--- a/deps/cares/docs/ares_library_init_android.3
+++ b/deps/cares/docs/ares_library_init_android.3
@@ -124,8 +124,4 @@ This function was first introduced in c-ares version 1.15.0.
 .SH SEE ALSO
 .BR ares_library_init (3),
 .BR ares_library_cleanup (3),
-.SH AUTHOR
-John Schember
-.PP
-Copyright (C) 2017 by John Schember
 
diff --git a/deps/cares/docs/ares_mkquery.3 b/deps/cares/docs/ares_mkquery.3
index 0075347a617926..0e7b5edbb89353 100644
--- a/deps/cares/docs/ares_mkquery.3
+++ b/deps/cares/docs/ares_mkquery.3
@@ -73,7 +73,3 @@ Memory was exhausted.
 .BR ares_expand_name (3),
 .BR ares_dns_record (3),
 .BR ares_free_string (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998, 2000 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_parse_a_reply.3 b/deps/cares/docs/ares_parse_a_reply.3
index 91f6a3fd8d724c..f4a0e8bb917fed 100644
--- a/deps/cares/docs/ares_parse_a_reply.3
+++ b/deps/cares/docs/ares_parse_a_reply.3
@@ -61,9 +61,3 @@ Memory was exhausted.
 .SH SEE ALSO
 .BR ares_gethostbyname (3),
 .BR ares_free_hostent (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Andrew Selivanov 
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_parse_aaaa_reply.3 b/deps/cares/docs/ares_parse_aaaa_reply.3
index cc11f23439209b..364766f0d1d926 100644
--- a/deps/cares/docs/ares_parse_aaaa_reply.3
+++ b/deps/cares/docs/ares_parse_aaaa_reply.3
@@ -61,9 +61,3 @@ Memory was exhausted.
 .SH SEE ALSO
 .BR ares_gethostbyname (3),
 .BR ares_free_hostent (3)
-.SH AUTHOR
-Dominick Meglio
-.br
-Copyright 2005 by Dominick Meglio.
-.BR
-Andrew Selivanov 
diff --git a/deps/cares/docs/ares_parse_caa_reply.3 b/deps/cares/docs/ares_parse_caa_reply.3
index 740562c1f288a7..489d420127ca09 100644
--- a/deps/cares/docs/ares_parse_caa_reply.3
+++ b/deps/cares/docs/ares_parse_caa_reply.3
@@ -156,5 +156,3 @@ This function was first introduced in c-ares version 1.17.0.
 .SH SEE ALSO
 .BR ares_query (3)
 .BR ares_free_data (3)
-.SH AUTHOR
-Written by Danny Sonnenschein , on behalf of platynum, https://platynum.ch
diff --git a/deps/cares/docs/ares_parse_mx_reply.3 b/deps/cares/docs/ares_parse_mx_reply.3
index 1516389931e870..c5c03e1a242be1 100644
--- a/deps/cares/docs/ares_parse_mx_reply.3
+++ b/deps/cares/docs/ares_parse_mx_reply.3
@@ -63,5 +63,3 @@ This function was first introduced in c-ares version 1.7.2.
 .SH SEE ALSO
 .BR ares_query (3)
 .BR ares_free_data (3)
-.SH AUTHOR
-Written by Jeremy Lal 
diff --git a/deps/cares/docs/ares_parse_naptr_reply.3 b/deps/cares/docs/ares_parse_naptr_reply.3
index 0b8d5f17feced0..d970b39fc037ae 100644
--- a/deps/cares/docs/ares_parse_naptr_reply.3
+++ b/deps/cares/docs/ares_parse_naptr_reply.3
@@ -68,5 +68,3 @@ This function was first introduced in c-ares version 1.7.6.
 .SH SEE ALSO
 .BR ares_query (3)
 .BR ares_free_data (3)
-.SH AUTHOR
-Written by Jakub Hrozek , on behalf of Red Hat, Inc http://www.redhat.com
diff --git a/deps/cares/docs/ares_parse_ns_reply.3 b/deps/cares/docs/ares_parse_ns_reply.3
index 6ab2d9b51e41d2..c380f93fadbb9c 100644
--- a/deps/cares/docs/ares_parse_ns_reply.3
+++ b/deps/cares/docs/ares_parse_ns_reply.3
@@ -51,5 +51,3 @@ Memory was exhausted.
 .SH SEE ALSO
 .BR ares_query (3),
 .BR ares_free_hostent (3)
-.SH AUTHOR
-Written by Vlad Dinulescu , on behalf of AVIRA Gmbh http://www.avira.com
diff --git a/deps/cares/docs/ares_parse_ptr_reply.3 b/deps/cares/docs/ares_parse_ptr_reply.3
index 4432e9e3c9aa85..5bdc072693cbf2 100644
--- a/deps/cares/docs/ares_parse_ptr_reply.3
+++ b/deps/cares/docs/ares_parse_ptr_reply.3
@@ -57,7 +57,3 @@ Memory was exhausted.
 .SH SEE ALSO
 .BR ares_gethostbyaddr (3),
 .BR ares_free_hostent (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_parse_srv_reply.3 b/deps/cares/docs/ares_parse_srv_reply.3
index 3d8e8437a03821..2e394a4359512e 100644
--- a/deps/cares/docs/ares_parse_srv_reply.3
+++ b/deps/cares/docs/ares_parse_srv_reply.3
@@ -66,5 +66,3 @@ This function was first introduced in c-ares version 1.7.0.
 .SH SEE ALSO
 .BR ares_query (3)
 .BR ares_free_data (3)
-.SH AUTHOR
-Written by Jakub Hrozek , on behalf of Red Hat, Inc http://www.redhat.com
diff --git a/deps/cares/docs/ares_parse_txt_reply.3 b/deps/cares/docs/ares_parse_txt_reply.3
index f85c67fad97db8..eb08a3fa6f4473 100644
--- a/deps/cares/docs/ares_parse_txt_reply.3
+++ b/deps/cares/docs/ares_parse_txt_reply.3
@@ -94,7 +94,3 @@ This function was first introduced in c-ares version 1.7.0.
 .SH SEE ALSO
 .BR ares_query (3)
 .BR ares_free_data (3)
-.SH AUTHOR
-Written by Jakub Hrozek , on behalf of Red Hat, Inc http://www.redhat.com
-.PP
-Amended by Fedor Indutny , on behalf of PayPal, Inc https://www.paypal.com
diff --git a/deps/cares/docs/ares_parse_uri_reply.3 b/deps/cares/docs/ares_parse_uri_reply.3
index 3044d4ad6f0590..ad32821edceca9 100644
--- a/deps/cares/docs/ares_parse_uri_reply.3
+++ b/deps/cares/docs/ares_parse_uri_reply.3
@@ -60,5 +60,3 @@ Memory was exhausted.
 .SH SEE ALSO
 .BR ares_query (3)
 .BR ares_free_data (3)
-.SH AUTHOR
-Written by Jan Petrasek 
diff --git a/deps/cares/docs/ares_process.3 b/deps/cares/docs/ares_process.3
index 94c98f60a3a744..d45d92a6259682 100644
--- a/deps/cares/docs/ares_process.3
+++ b/deps/cares/docs/ares_process.3
@@ -62,7 +62,3 @@ while (1) {
 .SH SEE ALSO
 .BR ares_fds (3),
 .BR ares_timeout (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_query.3 b/deps/cares/docs/ares_query.3
index 24decf7009441b..3aa428b00bb813 100644
--- a/deps/cares/docs/ares_query.3
+++ b/deps/cares/docs/ares_query.3
@@ -152,8 +152,3 @@ will be non-NULL, otherwise they will be NULL.
 .SH SEE ALSO
 .BR ares_process (3),
 .BR ares_dns_record (3)
-
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_queue.3 b/deps/cares/docs/ares_queue.3
index 1212e8d3f8c3cc..276d31f6088a7b 100644
--- a/deps/cares/docs/ares_queue.3
+++ b/deps/cares/docs/ares_queue.3
@@ -1,4 +1,5 @@
 .\"
+.\" Copyright 2024 by the c-ares project and its contributors
 .\" SPDX-License-Identifier: MIT
 .\"
 .TH ARES_QUEUE 3 "16 February 2024"
@@ -9,7 +10,7 @@ c-ares queue status
 .nf
 #include 
 
-size_t ares_queue_active_queries(ares_channel_t *channel);
+size_t ares_queue_active_queries(const ares_channel_t *channel);
 
 ares_status_t ares_queue_wait_empty(ares_channel_t *channel,
                                     int timeout_ms);
@@ -49,5 +50,3 @@ c-ares library to be built with threading support.
 .SH SEE ALSO
 .BR ares_init_options (3),
 .BR ares_threadsafety (3)
-.SH AUTHOR
-Copyright (C) 2024 The c-ares project and its members.
diff --git a/deps/cares/docs/ares_reinit.3 b/deps/cares/docs/ares_reinit.3
index 0b037127990293..020af1dbebb0f4 100644
--- a/deps/cares/docs/ares_reinit.3
+++ b/deps/cares/docs/ares_reinit.3
@@ -1,4 +1,5 @@
 .\"
+.\" Copyright 2023 by the c-ares project and its contributors
 .\" SPDX-License-Identifier: MIT
 .\"
 .TH ARES_REINIT 3 "12 November 2023"
@@ -20,10 +21,13 @@ Any existing queries will be automatically requeued if the server they are
 currently assigned to is removed from the system configuration.
 
 This function may cause additional file descriptors to be created, and existing
-ones to be destroyed if server configuration has changed. If this is called from
-a thread other than which the main program event loop is running, care needs to
-be taken to ensure any file descriptor lists are updated immediately within
-the eventloop.
+ones to be destroyed if server configuration has changed.
+
+\Bares_reinit(3)\fP, when compiled with thread safety, will spawn a background
+thread to read the configuration and apply it.  It is crucial that developers
+use the \fBARES_OPT_SOCK_STATE_CB\fP or \fBARES_OPT_EVENT_THREAD\fP so that
+notifications of changes are alerted.  If using \fBares_getsock(3)\fP or
+\fBares_fds(3)\fP, no notification is possible which could cause a stall.
 
 .SH RETURN VALUES
 \fIares_reinit(3)\fP can return any of the following values:
@@ -47,5 +51,3 @@ This function was first introduced in c-ares version 1.22.0.
 .BR ares_library_init (3),
 .BR ares_set_servers (3),
 .BR ares_threadsafety (3)
-.SH AUTHOR
-Copyright (C) 2023 The c-ares project and its members.
diff --git a/deps/cares/docs/ares_save_options.3 b/deps/cares/docs/ares_save_options.3
index ae171dc4c21ea5..1a1fbfdc1c750e 100644
--- a/deps/cares/docs/ares_save_options.3
+++ b/deps/cares/docs/ares_save_options.3
@@ -9,7 +9,7 @@ ares_save_options \- Save configuration values obtained from initialized ares_ch
 .nf
 #include 
 
-int ares_save_options(ares_channel_t *\fIchannel\fP,
+int ares_save_options(const ares_channel_t *\fIchannel\fP,
                       struct ares_options *\fIoptions\fP, int *\fIoptmask\fP)
 .fi
 .SH DESCRIPTION
@@ -36,7 +36,7 @@ The channel data was successfully stored
 The memory was exhausted
 .TP 15
 .B ARES_ENODATA
-The channel data identified by 
+The channel data identified by
 .IR channel
 were invalid.
 .SH NOTE
@@ -58,7 +58,3 @@ used instead.
 .BR ares_dup (3)
 .SH AVAILABILITY
 ares_save_options(3) was added in c-ares 1.4.0
-.SH AUTHOR
-Brad House
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_search.3 b/deps/cares/docs/ares_search.3
index 1a324b0ff47db5..66791b47e908fb 100644
--- a/deps/cares/docs/ares_search.3
+++ b/deps/cares/docs/ares_search.3
@@ -179,8 +179,3 @@ enqueuing of the query.
 .SH SEE ALSO
 .BR ares_process (3),
 .BR ares_dns_record (3)
-
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_send.3 b/deps/cares/docs/ares_send.3
index 010bb2579174bd..f6ea9140e2510c 100644
--- a/deps/cares/docs/ares_send.3
+++ b/deps/cares/docs/ares_send.3
@@ -151,8 +151,3 @@ does not reflect as much about the response as for other query functions.
 .BR ares_process (3),
 .BR ares_search (3),
 .BR ares_dns_record (3)
-
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_set_local_dev.3 b/deps/cares/docs/ares_set_local_dev.3
index 2289339768925f..2e2028f616ae3e 100644
--- a/deps/cares/docs/ares_set_local_dev.3
+++ b/deps/cares/docs/ares_set_local_dev.3
@@ -24,5 +24,3 @@ silently ignored.
 .BR ares_set_local_ip6 (3)
 .SH NOTES
 This function was added in c-ares 1.7.4
-.SH AUTHOR
-Ben Greear
diff --git a/deps/cares/docs/ares_set_local_ip4.3 b/deps/cares/docs/ares_set_local_ip4.3
index 83ad8b86c19cfb..e311255b68dabe 100644
--- a/deps/cares/docs/ares_set_local_ip4.3
+++ b/deps/cares/docs/ares_set_local_ip4.3
@@ -19,5 +19,3 @@ allows users to specify outbound interfaces when used on multi-homed systems.
 .BR ares_set_local_ip6 (3)
 .SH NOTES
 This function was added in c-ares 1.7.4
-.SH AUTHOR
-Ben Greear
diff --git a/deps/cares/docs/ares_set_local_ip6.3 b/deps/cares/docs/ares_set_local_ip6.3
index fafae8dc913ec2..a43d28007ef87c 100644
--- a/deps/cares/docs/ares_set_local_ip6.3
+++ b/deps/cares/docs/ares_set_local_ip6.3
@@ -20,5 +20,3 @@ systems.  The \fIlocal_ip6\fP argument must be 16 bytes in length.
 .BR ares_set_local_ip4 (3)
 .SH NOTES
 This function was added in c-ares 1.7.4
-.SH AUTHOR
-Ben Greear
diff --git a/deps/cares/docs/ares_set_server_state_callback.3 b/deps/cares/docs/ares_set_server_state_callback.3
new file mode 100644
index 00000000000000..04fbde4c7afa76
--- /dev/null
+++ b/deps/cares/docs/ares_set_server_state_callback.3
@@ -0,0 +1,62 @@
+.\"
+.\" Copyright 2024 by the c-ares project and its contributors
+.\" SPDX-License-Identifier: MIT
+.\"
+.TH ARES_SET_SERVER_STATE_CALLBACK 3 "26 Apr 2024"
+.SH NAME
+ares_set_server_state_callback \- Function for setting a server state callback
+.SH SYNOPSIS
+.nf
+#include 
+
+typedef void (*ares_server_state_callback)(const char *\fIserver_string\fP,
+                                           ares_bool_t \fIsuccess\fP,
+                                           int \fIflags\fP,
+                                           void *\fIdata\fP);
+
+void ares_set_server_state_callback(ares_channel_t *\fIchannel\fP,
+                                    ares_server_state_callback \fIcallback\fP,
+                                    void *\fIuser_data\fP);
+.fi
+
+.SH DESCRIPTION
+The \fBares_set_server_state_callback(3)\fP function sets a callback function
+\fIcallback\fP in the given ares channel handle \fIchannel\fP that is invoked
+whenever a query on the channel completes. This includes both successful and
+unsuccessful queries (including hard errors and timeouts). The callback
+function is invoked with a number of parameters describing the query, as
+follows.
+
+The \fIserver_string\fP parameter indicates the DNS server that was used for
+the query, given as a string with the same format returned by
+\fBares_get_servers_csv(3)\fP.
+
+The \fIsuccess\fP parameter indicates whether the query succeeded or not. It is
+set to \fBARES_TRUE\fP on success and \fBARES_FALSE\fP on failure.
+
+The \fIflags\fP parameter is a bitmask of flags describing various aspects of
+the query (for example whether the query used UDP or TCP). These are described
+below.
+
+The \fIdata\fP parameter is a reference to the custom user data \fIuser_data\fP
+that was passed to \fBares_set_server_state_callback(3)\fP when setting the
+server state callback.
+
+The server state callback can be used by applications to monitor the state of
+the DNS servers used by an ares channel. For example, it can be used to track
+metrics about the numbers and types of queries sent to each server or to
+detect when a server is uncontactable or unhealthy.
+
+.SH FLAGS
+.TP 5
+.B ARES_SERV_STATE_UDP
+Indicates that the query was tried over UDP.
+.TP 5
+.B ARES_SERV_STATE_TCP
+Indicates that the query was tried over TCP.
+
+.SH AVAILABILITY
+This function was first introduced in c-ares version 1.29.0.
+
+.SH SEE ALSO
+.BR ares_get_servers_csv (3)
diff --git a/deps/cares/docs/ares_set_servers.3 b/deps/cares/docs/ares_set_servers.3
index 410c279c806a41..24ef7879e17612 100644
--- a/deps/cares/docs/ares_set_servers.3
+++ b/deps/cares/docs/ares_set_servers.3
@@ -84,13 +84,3 @@ server options.  Use \fBares_set_servers_csv(3)\fP.
 .SH AVAILABILITY
 \fBares_set_servers(3)\fP was added in c-ares 1.7.1;
 \fBares_set_servers_ports(3)\fP was added in c-ares 1.11.0.
-.SH AUTHOR
-Implementation of this function and associated library internals are based
-on code, comments and feedback provided in November and December of 2008 by
-Daniel Stenberg, Gregor Jasny, Phil Blundell and Yang Tse, December 2009
-by Cedric Bail, February 2010 by Jakub Hrozek. On March 2010 Yang Tse
-shuffled all the bits and this function popped out.
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2008-2010 by Daniel Stenberg
diff --git a/deps/cares/docs/ares_set_servers_csv.3 b/deps/cares/docs/ares_set_servers_csv.3
index 7d37a90fa43c65..875a156bfb1014 100644
--- a/deps/cares/docs/ares_set_servers_csv.3
+++ b/deps/cares/docs/ares_set_servers_csv.3
@@ -14,7 +14,7 @@ int ares_set_servers_csv(ares_channel_t *\fIchannel\fP, const char* \fIservers\f
 
 int ares_set_servers_ports_csv(ares_channel_t *\fIchannel\fP, const char* \fIservers\fP)
 
-char *ares_get_servers_csv(ares_channel_t *\fIchannel\fP)
+char *ares_get_servers_csv(const ares_channel_t *\fIchannel\fP)
 .fi
 .SH DESCRIPTION
 The \fBares_set_servers_csv\fP and \fBares_set_servers_ports_csv\fP functions set
@@ -81,5 +81,3 @@ returns a string representing the servers configured which must be freed with
 \fBares_set_servers_csv\fP was added in c-ares 1.7.2
 \fBares_set_servers_ports_csv\fP was added in c-ares 1.11.0.
 \fBares_get_servers_csv\fP was added in c-ares 1.24.0.
-.SH AUTHOR
-Ben Greear
diff --git a/deps/cares/docs/ares_set_socket_callback.3 b/deps/cares/docs/ares_set_socket_callback.3
index 4eb04084e9a11d..d94b9885357a5e 100644
--- a/deps/cares/docs/ares_set_socket_callback.3
+++ b/deps/cares/docs/ares_set_socket_callback.3
@@ -31,6 +31,4 @@ abort the ares operation.
 .BR ares_set_socket_configure_callback (3)
 .SH AVAILABILITY
 ares_set_socket_callback(3) was added in c-ares 1.6.0
-.SH AUTHOR
-Gregor Jasny
 
diff --git a/deps/cares/docs/ares_set_socket_configure_callback.3 b/deps/cares/docs/ares_set_socket_configure_callback.3
index f5d7bb5d507d2f..d26e79f43f631a 100644
--- a/deps/cares/docs/ares_set_socket_configure_callback.3
+++ b/deps/cares/docs/ares_set_socket_configure_callback.3
@@ -31,6 +31,4 @@ abort the ares operation.
 .BR ares_set_socket_callback (3)
 .SH AVAILABILITY
 ares_set_socket_configure_callback(3) was added in c-ares 1.11.0
-.SH AUTHOR
-Andrew Ayer
 
diff --git a/deps/cares/docs/ares_set_socket_functions.3 b/deps/cares/docs/ares_set_socket_functions.3
index c92934ba82e5e3..ab945ed18de86b 100644
--- a/deps/cares/docs/ares_set_socket_functions.3
+++ b/deps/cares/docs/ares_set_socket_functions.3
@@ -99,5 +99,3 @@ Added in c-ares 1.13.0
 .BR recvfrom (2),
 .BR send (2),
 .BR writev (2)
-.SH AUTHOR
-Carl Wilund
diff --git a/deps/cares/docs/ares_strerror.3 b/deps/cares/docs/ares_strerror.3
index 32eab05f311119..895af5f3e97311 100644
--- a/deps/cares/docs/ares_strerror.3
+++ b/deps/cares/docs/ares_strerror.3
@@ -20,7 +20,3 @@ returning the result as a NUL-terminated C string.
 .SH NOTES
 This function is not compatible with ares, it takes a different set of
 arguments.
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/docs/ares_threadsafety.3 b/deps/cares/docs/ares_threadsafety.3
index a3c29d5f6ecea5..d9c38d801ef483 100644
--- a/deps/cares/docs/ares_threadsafety.3
+++ b/deps/cares/docs/ares_threadsafety.3
@@ -1,4 +1,5 @@
 .\"
+.\" Copyright 2023 by the c-ares project and its contributors
 .\" SPDX-License-Identifier: MIT
 .\"
 .TH ARES_THREADSAFETY 3 "26 November 2023"
@@ -41,5 +42,3 @@ This function was first introduced in c-ares version 1.23.0.
 .BR ares_dup (3),
 .BR ares_library_init (3),
 .BR ares_set_servers (3)
-.SH AUTHOR
-Copyright (C) 2023 The c-ares project and its members.
diff --git a/deps/cares/docs/ares_timeout.3 b/deps/cares/docs/ares_timeout.3
index c1e39545993d53..bdcd6916802896 100644
--- a/deps/cares/docs/ares_timeout.3
+++ b/deps/cares/docs/ares_timeout.3
@@ -9,7 +9,7 @@ ares_timeout \- return maximum time to wait
 .nf
 #include 
 
-struct timeval *ares_timeout(ares_channel_t *\fIchannel\fP,
+struct timeval *ares_timeout(const ares_channel_t *\fIchannel\fP,
                              struct timeval *\fImaxtv\fP,
                              struct timeval *\fItv\fP)
 .fi
@@ -29,7 +29,3 @@ pointed to by \fItv\fP and returns the value of \fItv\fP.
 .BR ares_fds (3),
 .BR ares_process (3),
 .BR ares_process_fd (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/deps/cares/include/ares.h b/deps/cares/include/ares.h
index bc17230e47262f..a30e6fb576d69e 100644
--- a/deps/cares/include/ares.h
+++ b/deps/cares/include/ares.h
@@ -255,6 +255,7 @@ typedef enum {
 #define ARES_OPT_MAXTIMEOUTMS    (1 << 20)
 #define ARES_OPT_QUERY_CACHE     (1 << 21)
 #define ARES_OPT_EVENT_THREAD    (1 << 22)
+#define ARES_OPT_SERVER_FAILOVER (1 << 23)
 
 /* Nameinfo flag values */
 #define ARES_NI_NOFQDN        (1 << 0)
@@ -305,6 +306,9 @@ typedef enum {
 #define ARES_LIB_INIT_WIN32 (1 << 0)
 #define ARES_LIB_INIT_ALL   (ARES_LIB_INIT_WIN32)
 
+/* Server state callback flag values */
+#define ARES_SERV_STATE_UDP (1 << 0) /* Query used UDP */
+#define ARES_SERV_STATE_TCP (1 << 1) /* Query used TCP */
 
 /*
  * Typedef our socket type
@@ -326,6 +330,18 @@ typedef void (*ares_sock_state_cb)(void *data, ares_socket_t socket_fd,
 
 struct apattern;
 
+/* Options controlling server failover behavior.
+ * The retry chance is the probability (1/N) by which we will retry a failed
+ * server instead of the best server when selecting a server to send queries
+ * to.
+ * The retry delay is the minimum time in milliseconds to wait between doing
+ * such retries (applied per-server).
+ */
+struct ares_server_failover_options {
+  unsigned short retry_chance;
+  size_t         retry_delay;
+};
+
 /* NOTE about the ares_options struct to users and developers.
 
    This struct will remain looking like this. It will not be extended nor
@@ -368,6 +384,7 @@ struct ares_options {
   int                maxtimeout; /* in milliseconds */
   unsigned int qcache_max_ttl;   /* Maximum TTL for query cache, 0=disabled */
   ares_evsys_t evsys;
+  struct ares_server_failover_options server_failover_opts;
 };
 
 struct hostent;
@@ -430,6 +447,10 @@ typedef int (*ares_sock_config_callback)(ares_socket_t socket_fd, int type,
 typedef void (*ares_addrinfo_callback)(void *arg, int status, int timeouts,
                                        struct ares_addrinfo *res);
 
+typedef void (*ares_server_state_callback)(const char *server_string,
+                                           ares_bool_t success, int flags,
+                                           void *data);
+
 CARES_EXTERN int ares_library_init(int flags);
 
 CARES_EXTERN int ares_library_init_mem(int flags, void *(*amalloc)(size_t size),
@@ -452,16 +473,16 @@ CARES_EXTERN const char *ares_version(int *version);
 CARES_EXTERN             CARES_DEPRECATED_FOR(ares_init_options) int ares_init(
   ares_channel_t **channelptr);
 
-CARES_EXTERN int           ares_init_options(ares_channel_t           **channelptr,
-                                             const struct ares_options *options,
-                                             int                        optmask);
+CARES_EXTERN int  ares_init_options(ares_channel_t           **channelptr,
+                                    const struct ares_options *options,
+                                    int                        optmask);
 
-CARES_EXTERN int           ares_save_options(ares_channel_t      *channel,
-                                             struct ares_options *options, int *optmask);
+CARES_EXTERN int  ares_save_options(const ares_channel_t *channel,
+                                    struct ares_options *options, int *optmask);
 
-CARES_EXTERN void          ares_destroy_options(struct ares_options *options);
+CARES_EXTERN void ares_destroy_options(struct ares_options *options);
 
-CARES_EXTERN int           ares_dup(ares_channel_t **dest, ares_channel_t *src);
+CARES_EXTERN int  ares_dup(ares_channel_t **dest, const ares_channel_t *src);
 
 CARES_EXTERN ares_status_t ares_reinit(ares_channel_t *channel);
 
@@ -491,6 +512,11 @@ CARES_EXTERN void          ares_set_socket_callback(ares_channel_t           *ch
 CARES_EXTERN void          ares_set_socket_configure_callback(
            ares_channel_t *channel, ares_sock_config_callback callback, void *user_data);
 
+CARES_EXTERN void
+                  ares_set_server_state_callback(ares_channel_t            *channel,
+                                                 ares_server_state_callback callback,
+                                                 void                      *user_data);
+
 CARES_EXTERN int  ares_set_sortlist(ares_channel_t *channel,
                                     const char     *sortstr);
 
@@ -608,17 +634,17 @@ CARES_EXTERN void ares_getnameinfo(ares_channel_t        *channel,
 
 CARES_EXTERN      CARES_DEPRECATED_FOR(
   ARES_OPT_EVENT_THREAD or
-  ARES_OPT_SOCK_STATE_CB) int ares_fds(ares_channel_t *channel,
+  ARES_OPT_SOCK_STATE_CB) int ares_fds(const ares_channel_t *channel,
                                             fd_set *read_fds, fd_set *write_fds);
 
 CARES_EXTERN CARES_DEPRECATED_FOR(
   ARES_OPT_EVENT_THREAD or
-  ARES_OPT_SOCK_STATE_CB) int ares_getsock(ares_channel_t *channel,
+  ARES_OPT_SOCK_STATE_CB) int ares_getsock(const ares_channel_t *channel,
                                            ares_socket_t *socks, int numsocks);
 
-CARES_EXTERN struct timeval *ares_timeout(ares_channel_t *channel,
-                                          struct timeval *maxtv,
-                                          struct timeval *tv);
+CARES_EXTERN struct timeval *ares_timeout(const ares_channel_t *channel,
+                                          struct timeval       *maxtv,
+                                          struct timeval       *tv);
 
 CARES_EXTERN CARES_DEPRECATED_FOR(ares_process_fd) void ares_process(
   ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds);
@@ -842,22 +868,24 @@ CARES_EXTERN CARES_DEPRECATED_FOR(ares_set_servers_csv) int ares_set_servers(
   ares_channel_t *channel, const struct ares_addr_node *servers);
 
 CARES_EXTERN
-  CARES_DEPRECATED_FOR(ares_set_servers_ports_csv) int ares_set_servers_ports(
-    ares_channel_t *channel, const struct ares_addr_port_node *servers);
+CARES_DEPRECATED_FOR(ares_set_servers_ports_csv)
+int                ares_set_servers_ports(ares_channel_t                   *channel,
+                                          const struct ares_addr_port_node *servers);
 
 /* Incoming string format: host[:port][,host[:port]]... */
 CARES_EXTERN int   ares_set_servers_csv(ares_channel_t *channel,
                                         const char     *servers);
 CARES_EXTERN int   ares_set_servers_ports_csv(ares_channel_t *channel,
                                               const char     *servers);
-CARES_EXTERN char *ares_get_servers_csv(ares_channel_t *channel);
+CARES_EXTERN char *ares_get_servers_csv(const ares_channel_t *channel);
 
 CARES_EXTERN CARES_DEPRECATED_FOR(ares_get_servers_csv) int ares_get_servers(
-  ares_channel_t *channel, struct ares_addr_node **servers);
+  const ares_channel_t *channel, struct ares_addr_node **servers);
 
 CARES_EXTERN
-  CARES_DEPRECATED_FOR(ares_get_servers_ports_csv) int ares_get_servers_ports(
-    ares_channel_t *channel, struct ares_addr_port_node **servers);
+CARES_DEPRECATED_FOR(ares_get_servers_ports_csv)
+int                        ares_get_servers_ports(const ares_channel_t        *channel,
+                                                  struct ares_addr_port_node **servers);
 
 CARES_EXTERN const char   *ares_inet_ntop(int af, const void *src, char *dst,
                                           ares_socklen_t size);
@@ -891,7 +919,7 @@ CARES_EXTERN ares_status_t ares_queue_wait_empty(ares_channel_t *channel,
  *  \param[in] channel Initialized ares channel
  *  \return Number of active queries to servers
  */
-CARES_EXTERN size_t        ares_queue_active_queries(ares_channel_t *channel);
+CARES_EXTERN size_t ares_queue_active_queries(const ares_channel_t *channel);
 
 #ifdef __cplusplus
 }
diff --git a/deps/cares/include/ares_version.h b/deps/cares/include/ares_version.h
index 0e94a98be8f280..75489c1f5cedeb 100644
--- a/deps/cares/include/ares_version.h
+++ b/deps/cares/include/ares_version.h
@@ -31,12 +31,12 @@
 #define ARES_COPYRIGHT "2004 - 2024 Daniel Stenberg, ."
 
 #define ARES_VERSION_MAJOR 1
-#define ARES_VERSION_MINOR 28
-#define ARES_VERSION_PATCH 1
+#define ARES_VERSION_MINOR 29
+#define ARES_VERSION_PATCH 0
 #define ARES_VERSION                                        \
   ((ARES_VERSION_MAJOR << 16) | (ARES_VERSION_MINOR << 8) | \
    (ARES_VERSION_PATCH))
-#define ARES_VERSION_STR "1.28.1"
+#define ARES_VERSION_STR "1.29.0"
 
 #if (ARES_VERSION >= 0x010700)
 #  define CARES_HAVE_ARES_LIBRARY_INIT    1
diff --git a/deps/cares/src/lib/CMakeLists.txt b/deps/cares/src/lib/CMakeLists.txt
index de73f712f1d1ce..ef0acf371ff091 100644
--- a/deps/cares/src/lib/CMakeLists.txt
+++ b/deps/cares/src/lib/CMakeLists.txt
@@ -36,6 +36,10 @@ IF (CARES_SHARED)
 		C_STANDARD                   90
 	)
 
+	IF (ANDROID)
+		SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES C_STANDARD 99)
+	ENDIF ()
+
 	IF (CARES_SYMBOL_HIDING)
 		SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES
 			C_VISIBILITY_PRESET hidden
@@ -92,6 +96,10 @@ IF (CARES_STATIC)
 		C_STANDARD                   90
 	)
 
+	IF (ANDROID)
+		SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES C_STANDARD 99)
+	ENDIF ()
+
 	IF (CARES_STATIC_PIC)
 		SET_TARGET_PROPERTIES (${LIBNAME} PROPERTIES POSITION_INDEPENDENT_CODE True)
 	ENDIF ()
diff --git a/deps/cares/src/lib/Makefile.in b/deps/cares/src/lib/Makefile.in
index 0060295c21e8ef..a98c4ef5872c29 100644
--- a/deps/cares/src/lib/Makefile.in
+++ b/deps/cares/src/lib/Makefile.in
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 # aminclude_static.am generated automatically by Autoconf
-# from AX_AM_MACROS_STATIC on Sat Mar 30 16:15:43 CET 2024
+# from AX_AM_MACROS_STATIC on Fri May 24 08:48:15 CEST 2024
 
 # Copyright (C) The c-ares project and its contributors
 # SPDX-License-Identifier: MIT
@@ -167,6 +167,7 @@ am__objects_1 = libcares_la-ares__addrinfo2hostent.lo \
 	libcares_la-ares__htable_asvp.lo \
 	libcares_la-ares__htable_strvp.lo \
 	libcares_la-ares__htable_szvp.lo \
+	libcares_la-ares__htable_vpvp.lo \
 	libcares_la-ares__iface_ips.lo libcares_la-ares__llist.lo \
 	libcares_la-ares__parse_into_addrinfo.lo \
 	libcares_la-ares__slist.lo libcares_la-ares__socket.lo \
@@ -176,6 +177,7 @@ am__objects_1 = libcares_la-ares__addrinfo2hostent.lo \
 	libcares_la-ares_destroy.lo libcares_la-ares_dns_mapping.lo \
 	libcares_la-ares_dns_name.lo libcares_la-ares_dns_parse.lo \
 	libcares_la-ares_dns_record.lo libcares_la-ares_dns_write.lo \
+	libcares_la-ares_event_configchg.lo \
 	libcares_la-ares_event_epoll.lo \
 	libcares_la-ares_event_kqueue.lo \
 	libcares_la-ares_event_poll.lo \
@@ -212,9 +214,10 @@ am__objects_1 = libcares_la-ares__addrinfo2hostent.lo \
 	libcares_la-ares_str.lo libcares_la-ares_strerror.lo \
 	libcares_la-ares_strsplit.lo libcares_la-ares_sysconfig.lo \
 	libcares_la-ares_sysconfig_files.lo \
-	libcares_la-ares_timeout.lo libcares_la-ares_update_servers.lo \
-	libcares_la-ares_version.lo libcares_la-inet_net_pton.lo \
-	libcares_la-inet_ntop.lo libcares_la-windows_port.lo
+	libcares_la-ares_sysconfig_mac.lo libcares_la-ares_timeout.lo \
+	libcares_la-ares_update_servers.lo libcares_la-ares_version.lo \
+	libcares_la-inet_net_pton.lo libcares_la-inet_ntop.lo \
+	libcares_la-windows_port.lo
 am__objects_2 =
 am_libcares_la_OBJECTS = $(am__objects_1) $(am__objects_2)
 libcares_la_OBJECTS = $(am_libcares_la_OBJECTS)
@@ -250,6 +253,7 @@ am__depfiles_remade =  \
 	./$(DEPDIR)/libcares_la-ares__htable_asvp.Plo \
 	./$(DEPDIR)/libcares_la-ares__htable_strvp.Plo \
 	./$(DEPDIR)/libcares_la-ares__htable_szvp.Plo \
+	./$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo \
 	./$(DEPDIR)/libcares_la-ares__iface_ips.Plo \
 	./$(DEPDIR)/libcares_la-ares__llist.Plo \
 	./$(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo \
@@ -268,6 +272,7 @@ am__depfiles_remade =  \
 	./$(DEPDIR)/libcares_la-ares_dns_parse.Plo \
 	./$(DEPDIR)/libcares_la-ares_dns_record.Plo \
 	./$(DEPDIR)/libcares_la-ares_dns_write.Plo \
+	./$(DEPDIR)/libcares_la-ares_event_configchg.Plo \
 	./$(DEPDIR)/libcares_la-ares_event_epoll.Plo \
 	./$(DEPDIR)/libcares_la-ares_event_kqueue.Plo \
 	./$(DEPDIR)/libcares_la-ares_event_poll.Plo \
@@ -315,6 +320,7 @@ am__depfiles_remade =  \
 	./$(DEPDIR)/libcares_la-ares_strsplit.Plo \
 	./$(DEPDIR)/libcares_la-ares_sysconfig.Plo \
 	./$(DEPDIR)/libcares_la-ares_sysconfig_files.Plo \
+	./$(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo \
 	./$(DEPDIR)/libcares_la-ares_timeout.Plo \
 	./$(DEPDIR)/libcares_la-ares_update_servers.Plo \
 	./$(DEPDIR)/libcares_la-ares_version.Plo \
@@ -623,6 +629,7 @@ CSOURCES = ares__addrinfo2hostent.c	\
   ares__htable_asvp.c			\
   ares__htable_strvp.c			\
   ares__htable_szvp.c			\
+  ares__htable_vpvp.c			\
   ares__iface_ips.c			\
   ares__llist.c				\
   ares__parse_into_addrinfo.c		\
@@ -640,6 +647,7 @@ CSOURCES = ares__addrinfo2hostent.c	\
   ares_dns_parse.c			\
   ares_dns_record.c			\
   ares_dns_write.c			\
+  ares_event_configchg.c	\
   ares_event_epoll.c			\
   ares_event_kqueue.c			\
   ares_event_poll.c			\
@@ -688,6 +696,7 @@ CSOURCES = ares__addrinfo2hostent.c	\
   ares_strsplit.c			\
   ares_sysconfig.c		\
   ares_sysconfig_files.c	\
+  ares_sysconfig_mac.c	\
   ares_timeout.c			\
   ares_update_servers.c	\
   ares_version.c			\
@@ -700,6 +709,7 @@ HHEADERS = ares__buf.h			\
   ares__htable_asvp.h			\
   ares__htable_strvp.h			\
   ares__htable_szvp.h			\
+  ares__htable_vpvp.h			\
   ares__iface_ips.h			\
   ares__llist.h				\
   ares__slist.h				\
@@ -827,6 +837,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable_asvp.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable_strvp.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable_szvp.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__iface_ips.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__llist.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo@am__quote@ # am--include-marker
@@ -845,6 +856,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_parse.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_record.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_dns_write.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_configchg.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_epoll.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_kqueue.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_event_poll.Plo@am__quote@ # am--include-marker
@@ -892,6 +904,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_strsplit.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_sysconfig.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_sysconfig_files.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_timeout.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_update_servers.Plo@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcares_la-ares_version.Plo@am__quote@ # am--include-marker
@@ -992,6 +1005,13 @@ libcares_la-ares__htable_szvp.lo: ares__htable_szvp.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__htable_szvp.lo `test -f 'ares__htable_szvp.c' || echo '$(srcdir)/'`ares__htable_szvp.c
 
+libcares_la-ares__htable_vpvp.lo: ares__htable_vpvp.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__htable_vpvp.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__htable_vpvp.Tpo -c -o libcares_la-ares__htable_vpvp.lo `test -f 'ares__htable_vpvp.c' || echo '$(srcdir)/'`ares__htable_vpvp.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__htable_vpvp.Tpo $(DEPDIR)/libcares_la-ares__htable_vpvp.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ares__htable_vpvp.c' object='libcares_la-ares__htable_vpvp.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares__htable_vpvp.lo `test -f 'ares__htable_vpvp.c' || echo '$(srcdir)/'`ares__htable_vpvp.c
+
 libcares_la-ares__iface_ips.lo: ares__iface_ips.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares__iface_ips.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares__iface_ips.Tpo -c -o libcares_la-ares__iface_ips.lo `test -f 'ares__iface_ips.c' || echo '$(srcdir)/'`ares__iface_ips.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares__iface_ips.Tpo $(DEPDIR)/libcares_la-ares__iface_ips.Plo
@@ -1111,6 +1131,13 @@ libcares_la-ares_dns_write.lo: ares_dns_write.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_dns_write.lo `test -f 'ares_dns_write.c' || echo '$(srcdir)/'`ares_dns_write.c
 
+libcares_la-ares_event_configchg.lo: ares_event_configchg.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_configchg.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_configchg.Tpo -c -o libcares_la-ares_event_configchg.lo `test -f 'ares_event_configchg.c' || echo '$(srcdir)/'`ares_event_configchg.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_configchg.Tpo $(DEPDIR)/libcares_la-ares_event_configchg.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ares_event_configchg.c' object='libcares_la-ares_event_configchg.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_event_configchg.lo `test -f 'ares_event_configchg.c' || echo '$(srcdir)/'`ares_event_configchg.c
+
 libcares_la-ares_event_epoll.lo: ares_event_epoll.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_event_epoll.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_event_epoll.Tpo -c -o libcares_la-ares_event_epoll.lo `test -f 'ares_event_epoll.c' || echo '$(srcdir)/'`ares_event_epoll.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_event_epoll.Tpo $(DEPDIR)/libcares_la-ares_event_epoll.Plo
@@ -1447,6 +1474,13 @@ libcares_la-ares_sysconfig_files.lo: ares_sysconfig_files.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_sysconfig_files.lo `test -f 'ares_sysconfig_files.c' || echo '$(srcdir)/'`ares_sysconfig_files.c
 
+libcares_la-ares_sysconfig_mac.lo: ares_sysconfig_mac.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_sysconfig_mac.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_sysconfig_mac.Tpo -c -o libcares_la-ares_sysconfig_mac.lo `test -f 'ares_sysconfig_mac.c' || echo '$(srcdir)/'`ares_sysconfig_mac.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_sysconfig_mac.Tpo $(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='ares_sysconfig_mac.c' object='libcares_la-ares_sysconfig_mac.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -c -o libcares_la-ares_sysconfig_mac.lo `test -f 'ares_sysconfig_mac.c' || echo '$(srcdir)/'`ares_sysconfig_mac.c
+
 libcares_la-ares_timeout.lo: ares_timeout.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcares_la_CPPFLAGS) $(CPPFLAGS) $(libcares_la_CFLAGS) $(CFLAGS) -MT libcares_la-ares_timeout.lo -MD -MP -MF $(DEPDIR)/libcares_la-ares_timeout.Tpo -c -o libcares_la-ares_timeout.lo `test -f 'ares_timeout.c' || echo '$(srcdir)/'`ares_timeout.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libcares_la-ares_timeout.Tpo $(DEPDIR)/libcares_la-ares_timeout.Plo
@@ -1705,6 +1739,7 @@ distclean: distclean-recursive
 	-rm -f ./$(DEPDIR)/libcares_la-ares__htable_asvp.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__htable_strvp.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__htable_szvp.Plo
+	-rm -f ./$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__iface_ips.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__llist.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo
@@ -1723,6 +1758,7 @@ distclean: distclean-recursive
 	-rm -f ./$(DEPDIR)/libcares_la-ares_dns_parse.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_dns_record.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_dns_write.Plo
+	-rm -f ./$(DEPDIR)/libcares_la-ares_event_configchg.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_event_epoll.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_event_kqueue.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_event_poll.Plo
@@ -1770,6 +1806,7 @@ distclean: distclean-recursive
 	-rm -f ./$(DEPDIR)/libcares_la-ares_strsplit.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig_files.Plo
+	-rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_timeout.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_update_servers.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_version.Plo
@@ -1830,6 +1867,7 @@ maintainer-clean: maintainer-clean-recursive
 	-rm -f ./$(DEPDIR)/libcares_la-ares__htable_asvp.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__htable_strvp.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__htable_szvp.Plo
+	-rm -f ./$(DEPDIR)/libcares_la-ares__htable_vpvp.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__iface_ips.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__llist.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares__parse_into_addrinfo.Plo
@@ -1848,6 +1886,7 @@ maintainer-clean: maintainer-clean-recursive
 	-rm -f ./$(DEPDIR)/libcares_la-ares_dns_parse.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_dns_record.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_dns_write.Plo
+	-rm -f ./$(DEPDIR)/libcares_la-ares_event_configchg.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_event_epoll.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_event_kqueue.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_event_poll.Plo
@@ -1895,6 +1934,7 @@ maintainer-clean: maintainer-clean-recursive
 	-rm -f ./$(DEPDIR)/libcares_la-ares_strsplit.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig_files.Plo
+	-rm -f ./$(DEPDIR)/libcares_la-ares_sysconfig_mac.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_timeout.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_update_servers.Plo
 	-rm -f ./$(DEPDIR)/libcares_la-ares_version.Plo
diff --git a/deps/cares/src/lib/Makefile.inc b/deps/cares/src/lib/Makefile.inc
index 38f7a115fe3598..dc398034c6dad6 100644
--- a/deps/cares/src/lib/Makefile.inc
+++ b/deps/cares/src/lib/Makefile.inc
@@ -10,6 +10,7 @@ CSOURCES = ares__addrinfo2hostent.c	\
   ares__htable_asvp.c			\
   ares__htable_strvp.c			\
   ares__htable_szvp.c			\
+  ares__htable_vpvp.c			\
   ares__iface_ips.c			\
   ares__llist.c				\
   ares__parse_into_addrinfo.c		\
@@ -27,6 +28,7 @@ CSOURCES = ares__addrinfo2hostent.c	\
   ares_dns_parse.c			\
   ares_dns_record.c			\
   ares_dns_write.c			\
+  ares_event_configchg.c	\
   ares_event_epoll.c			\
   ares_event_kqueue.c			\
   ares_event_poll.c			\
@@ -75,6 +77,7 @@ CSOURCES = ares__addrinfo2hostent.c	\
   ares_strsplit.c			\
   ares_sysconfig.c		\
   ares_sysconfig_files.c	\
+  ares_sysconfig_mac.c	\
   ares_timeout.c			\
   ares_update_servers.c	\
   ares_version.c			\
@@ -87,6 +90,7 @@ HHEADERS = ares__buf.h			\
   ares__htable_asvp.h			\
   ares__htable_strvp.h			\
   ares__htable_szvp.h			\
+  ares__htable_vpvp.h			\
   ares__iface_ips.h			\
   ares__llist.h				\
   ares__slist.h				\
diff --git a/deps/cares/src/lib/ares__close_sockets.c b/deps/cares/src/lib/ares__close_sockets.c
index 3aba9f649eeae5..13ecca8f5e4685 100644
--- a/deps/cares/src/lib/ares__close_sockets.c
+++ b/deps/cares/src/lib/ares__close_sockets.c
@@ -97,6 +97,14 @@ void ares__check_cleanup_conn(const ares_channel_t     *channel,
     do_cleanup = ARES_TRUE;
   }
 
+  /* If the associated server has failures, close it out. Resetting the
+   * connection (and specifically the source port number) can help resolve
+   * situations where packets are being dropped.
+   */
+  if (conn->server->consec_failures > 0) {
+    do_cleanup = ARES_TRUE;
+  }
+
   /* If the udp connection hit its max queries, always close it */
   if (!conn->is_tcp && channel->udp_max_queries > 0 &&
       conn->total_queries >= channel->udp_max_queries) {
diff --git a/deps/cares/src/lib/ares__htable_vpvp.c b/deps/cares/src/lib/ares__htable_vpvp.c
new file mode 100644
index 00000000000000..828b738e7467fe
--- /dev/null
+++ b/deps/cares/src/lib/ares__htable_vpvp.c
@@ -0,0 +1,195 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 Brad House
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include "ares_setup.h"
+#include "ares.h"
+#include "ares_private.h"
+#include "ares__htable.h"
+#include "ares__htable_vpvp.h"
+
+struct ares__htable_vpvp {
+  ares__htable_vpvp_key_free_t free_key;
+  ares__htable_vpvp_val_free_t free_val;
+  ares__htable_t              *hash;
+};
+
+typedef struct {
+  void                *key;
+  void                *val;
+  ares__htable_vpvp_t *parent;
+} ares__htable_vpvp_bucket_t;
+
+void ares__htable_vpvp_destroy(ares__htable_vpvp_t *htable)
+{
+  if (htable == NULL) {
+    return;
+  }
+
+  ares__htable_destroy(htable->hash);
+  ares_free(htable);
+}
+
+static unsigned int hash_func(const void *key, unsigned int seed)
+{
+  return ares__htable_hash_FNV1a((const unsigned char *)&key, sizeof(key),
+                                 seed);
+}
+
+static const void *bucket_key(const void *bucket)
+{
+  const ares__htable_vpvp_bucket_t *arg = bucket;
+  return arg->key;
+}
+
+static void bucket_free(void *bucket)
+{
+  ares__htable_vpvp_bucket_t *arg = bucket;
+
+  if (arg->parent->free_key) {
+    arg->parent->free_key(arg->key);
+  }
+
+  if (arg->parent->free_val) {
+    arg->parent->free_val(arg->val);
+  }
+
+  ares_free(arg);
+}
+
+static ares_bool_t key_eq(const void *key1, const void *key2)
+{
+  if (key1 == key2) {
+    return ARES_TRUE;
+  }
+
+  return ARES_FALSE;
+}
+
+ares__htable_vpvp_t *
+  ares__htable_vpvp_create(ares__htable_vpvp_key_free_t key_free,
+                           ares__htable_vpvp_val_free_t val_free)
+{
+  ares__htable_vpvp_t *htable = ares_malloc(sizeof(*htable));
+  if (htable == NULL) {
+    goto fail;
+  }
+
+  htable->hash =
+    ares__htable_create(hash_func, bucket_key, bucket_free, key_eq);
+  if (htable->hash == NULL) {
+    goto fail;
+  }
+
+  htable->free_key = key_free;
+  htable->free_val = val_free;
+
+  return htable;
+
+fail:
+  if (htable) {
+    ares__htable_destroy(htable->hash);
+    ares_free(htable);
+  }
+  return NULL;
+}
+
+ares_bool_t ares__htable_vpvp_insert(ares__htable_vpvp_t *htable, void *key,
+                                     void *val)
+{
+  ares__htable_vpvp_bucket_t *bucket = NULL;
+
+  if (htable == NULL) {
+    goto fail;
+  }
+
+  bucket = ares_malloc(sizeof(*bucket));
+  if (bucket == NULL) {
+    goto fail;
+  }
+
+  bucket->parent = htable;
+  bucket->key    = key;
+  bucket->val    = val;
+
+  if (!ares__htable_insert(htable->hash, bucket)) {
+    goto fail;
+  }
+
+  return ARES_TRUE;
+
+fail:
+  if (bucket) {
+    ares_free(bucket);
+  }
+  return ARES_FALSE;
+}
+
+ares_bool_t ares__htable_vpvp_get(const ares__htable_vpvp_t *htable, void *key,
+                                  void **val)
+{
+  ares__htable_vpvp_bucket_t *bucket = NULL;
+
+  if (val) {
+    *val = NULL;
+  }
+
+  if (htable == NULL) {
+    return ARES_FALSE;
+  }
+
+  bucket = ares__htable_get(htable->hash, key);
+  if (bucket == NULL) {
+    return ARES_FALSE;
+  }
+
+  if (val) {
+    *val = bucket->val;
+  }
+  return ARES_TRUE;
+}
+
+void *ares__htable_vpvp_get_direct(const ares__htable_vpvp_t *htable, void *key)
+{
+  void *val = NULL;
+  ares__htable_vpvp_get(htable, key, &val);
+  return val;
+}
+
+ares_bool_t ares__htable_vpvp_remove(ares__htable_vpvp_t *htable, void *key)
+{
+  if (htable == NULL) {
+    return ARES_FALSE;
+  }
+
+  return ares__htable_remove(htable->hash, key);
+}
+
+size_t ares__htable_vpvp_num_keys(const ares__htable_vpvp_t *htable)
+{
+  if (htable == NULL) {
+    return 0;
+  }
+  return ares__htable_num_keys(htable->hash);
+}
diff --git a/deps/cares/src/lib/ares__htable_vpvp.h b/deps/cares/src/lib/ares__htable_vpvp.h
new file mode 100644
index 00000000000000..876fc45f7f5036
--- /dev/null
+++ b/deps/cares/src/lib/ares__htable_vpvp.h
@@ -0,0 +1,127 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 Brad House
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#ifndef __ARES__HTABLE_VPVP_H
+#define __ARES__HTABLE_VPVP_H
+
+/*! \addtogroup ares__htable_vpvp HashTable with void pointer Key and void
+ * pointer Value
+ *
+ * This data structure wraps the base ares__htable data structure in order to
+ * split the key and value data types as size_t and void pointer, respectively.
+ *
+ * Average time complexity:
+ *  - Insert: O(1)
+ *  - Search: O(1)
+ *  - Delete: O(1)
+ *
+ * @{
+ */
+
+struct ares__htable_vpvp;
+
+/*! Opaque data type for size_t key, void pointer hash table implementation */
+typedef struct ares__htable_vpvp ares__htable_vpvp_t;
+
+/*! Callback to free key stored in hashtable
+ *
+ *  \param[in] key  user-supplied key
+ */
+typedef void (*ares__htable_vpvp_key_free_t)(void *key);
+
+/*! Callback to free value stored in hashtable
+ *
+ *  \param[in] val  user-supplied value
+ */
+typedef void (*ares__htable_vpvp_val_free_t)(void *val);
+
+/*! Destroy hashtable
+ *
+ *  \param[in] htable  Initialized hashtable
+ */
+void ares__htable_vpvp_destroy(ares__htable_vpvp_t *htable);
+
+/*! Create size_t key, void pointer value hash table
+ *
+ *  \param[in] key_free  Optional. Call back to free user-supplied key.  If
+ *                       NULL it is expected the caller will clean up any user
+ *                       supplied keys.
+ *  \param[in] val_free  Optional. Call back to free user-supplied value.  If
+ *                       NULL it is expected the caller will clean up any user
+ *                       supplied values.
+ */
+ares__htable_vpvp_t           *
+  ares__htable_vpvp_create(ares__htable_vpvp_key_free_t key_free,
+                                     ares__htable_vpvp_val_free_t val_free);
+
+/*! Insert key/value into hash table
+ *
+ *  \param[in] htable Initialized hash table
+ *  \param[in] key    key to associate with value
+ *  \param[in] val    value to store (takes ownership). May be NULL.
+ *  \return ARES_TRUE on success, ARES_FALSE on failure or out of memory
+ */
+ares_bool_t ares__htable_vpvp_insert(ares__htable_vpvp_t *htable, void *key,
+                                     void *val);
+
+/*! Retrieve value from hashtable based on key
+ *
+ *  \param[in]  htable  Initialized hash table
+ *  \param[in]  key     key to use to search
+ *  \param[out] val     Optional.  Pointer to store value.
+ *  \return ARES_TRUE on success, ARES_FALSE on failure
+ */
+ares_bool_t ares__htable_vpvp_get(const ares__htable_vpvp_t *htable, void *key,
+                                  void **val);
+
+/*! Retrieve value from hashtable directly as return value.  Caveat to this
+ *  function over ares__htable_vpvp_get() is that if a NULL value is stored
+ *  you cannot determine if the key is not found or the value is NULL.
+ *
+ *  \param[in] htable  Initialized hash table
+ *  \param[in] key     key to use to search
+ *  \return value associated with key in hashtable or NULL
+ */
+void       *ares__htable_vpvp_get_direct(const ares__htable_vpvp_t *htable,
+                                         void                      *key);
+
+/*! Remove a value from the hashtable by key
+ *
+ *  \param[in] htable  Initialized hash table
+ *  \param[in] key     key to use to search
+ *  \return ARES_TRUE if found, ARES_FALSE if not
+ */
+ares_bool_t ares__htable_vpvp_remove(ares__htable_vpvp_t *htable, void *key);
+
+/*! Retrieve the number of keys stored in the hash table
+ *
+ *  \param[in] htable  Initialized hash table
+ *  \return count
+ */
+size_t      ares__htable_vpvp_num_keys(const ares__htable_vpvp_t *htable);
+
+/*! @} */
+
+#endif /* __ARES__HTABLE_VPVP_H */
diff --git a/deps/cares/src/lib/ares__socket.c b/deps/cares/src/lib/ares__socket.c
index da03755a50db75..d3990e7660e694 100644
--- a/deps/cares/src/lib/ares__socket.c
+++ b/deps/cares/src/lib/ares__socket.c
@@ -253,12 +253,6 @@ ares_status_t ares__open_connection(ares_channel_t      *channel,
   struct server_connection *conn;
   ares__llist_node_t       *node;
   int                       type = is_tcp ? SOCK_STREAM : SOCK_DGRAM;
-#ifdef __OpenBSD__
-  if ((is_tcp && server->tcp_port == 53) ||
-      (!is_tcp && server->udp_port == 53)) {
-    type |= SOCK_DNS;
-  }
-#endif
 
   switch (server->addr.family) {
     case AF_INET:
diff --git a/deps/cares/src/lib/ares__threads.c b/deps/cares/src/lib/ares__threads.c
index f6de8c698e373d..39d98d2244e8b0 100644
--- a/deps/cares/src/lib/ares__threads.c
+++ b/deps/cares/src/lib/ares__threads.c
@@ -537,12 +537,12 @@ void ares__channel_threading_destroy(ares_channel_t *channel)
   channel->cond_empty = NULL;
 }
 
-void ares__channel_lock(ares_channel_t *channel)
+void ares__channel_lock(const ares_channel_t *channel)
 {
   ares__thread_mutex_lock(channel->lock);
 }
 
-void ares__channel_unlock(ares_channel_t *channel)
+void ares__channel_unlock(const ares_channel_t *channel)
 {
   ares__thread_mutex_unlock(channel->lock);
 }
@@ -585,6 +585,12 @@ ares_status_t ares_queue_wait_empty(ares_channel_t *channel, int timeout_ms)
         status =
           ares__thread_cond_timedwait(channel->cond_empty, channel->lock, tms);
       }
+
+      /* If there was a timeout, don't loop.  Otherwise, make sure this wasn't
+       * a spurious wakeup by looping and checking the condition. */
+      if (status == ARES_ETIMEOUT) {
+        break;
+      }
     }
   }
   ares__thread_mutex_unlock(channel->lock);
diff --git a/deps/cares/src/lib/ares_destroy.c b/deps/cares/src/lib/ares_destroy.c
index 6965b601e76e07..672f8b06184255 100644
--- a/deps/cares/src/lib/ares_destroy.c
+++ b/deps/cares/src/lib/ares_destroy.c
@@ -31,6 +31,7 @@
 
 #include "ares.h"
 #include "ares_private.h"
+#include "ares_event.h"
 
 void ares_destroy(ares_channel_t *channel)
 {
@@ -41,6 +42,22 @@ void ares_destroy(ares_channel_t *channel)
     return;
   }
 
+  /* Disable configuration change monitoring */
+  if (channel->optmask & ARES_OPT_EVENT_THREAD) {
+    ares_event_thread_t *e = channel->sock_state_cb_data;
+    if (e && e->configchg) {
+      ares_event_configchg_destroy(e->configchg);
+      e->configchg = NULL;
+    }
+  }
+
+  /* Wait for reinit thread to exit if there was one pending */
+  if (channel->reinit_thread != NULL) {
+    void *rv;
+    ares__thread_join(channel->reinit_thread, &rv);
+    channel->reinit_thread = NULL;
+  }
+
   /* Lock because callbacks will be triggered */
   ares__channel_lock(channel);
 
diff --git a/deps/cares/src/lib/ares_dns_mapping.c b/deps/cares/src/lib/ares_dns_mapping.c
index 2b463fe83128a7..a877f9991d2140 100644
--- a/deps/cares/src/lib/ares_dns_mapping.c
+++ b/deps/cares/src/lib/ares_dns_mapping.c
@@ -606,12 +606,12 @@ ares_bool_t ares_dns_class_fromstr(ares_dns_class_t *qclass, const char *str)
     const char      *name;
     ares_dns_class_t qclass;
   } list[] = {
-    {"IN",    ARES_CLASS_IN    },
-    { "CH",   ARES_CLASS_CHAOS },
-    { "HS",   ARES_CLASS_HESOID},
-    { "NONE", ARES_CLASS_NONE  },
-    { "ANY",  ARES_CLASS_ANY   },
-    { NULL,   0                }
+    { "IN",   ARES_CLASS_IN     },
+    { "CH",   ARES_CLASS_CHAOS  },
+    { "HS",   ARES_CLASS_HESOID },
+    { "NONE", ARES_CLASS_NONE   },
+    { "ANY",  ARES_CLASS_ANY    },
+    { NULL,   0                 }
   };
 
   if (qclass == NULL || str == NULL) {
@@ -636,26 +636,26 @@ ares_bool_t ares_dns_rec_type_fromstr(ares_dns_rec_type_t *qtype,
     const char         *name;
     ares_dns_rec_type_t type;
   } list[] = {
-    {"A",       ARES_REC_TYPE_A     },
-    { "NS",     ARES_REC_TYPE_NS    },
-    { "CNAME",  ARES_REC_TYPE_CNAME },
-    { "SOA",    ARES_REC_TYPE_SOA   },
-    { "PTR",    ARES_REC_TYPE_PTR   },
-    { "HINFO",  ARES_REC_TYPE_HINFO },
-    { "MX",     ARES_REC_TYPE_MX    },
-    { "TXT",    ARES_REC_TYPE_TXT   },
-    { "AAAA",   ARES_REC_TYPE_AAAA  },
-    { "SRV",    ARES_REC_TYPE_SRV   },
-    { "NAPTR",  ARES_REC_TYPE_NAPTR },
-    { "OPT",    ARES_REC_TYPE_OPT   },
-    { "TLSA",   ARES_REC_TYPE_TLSA  },
-    { "SVCB",   ARES_REC_TYPE_SVCB  },
-    { "HTTPS",  ARES_REC_TYPE_HTTPS },
-    { "ANY",    ARES_REC_TYPE_ANY   },
-    { "URI",    ARES_REC_TYPE_URI   },
-    { "CAA",    ARES_REC_TYPE_CAA   },
-    { "RAW_RR", ARES_REC_TYPE_RAW_RR},
-    { NULL,     0                   }
+    { "A",      ARES_REC_TYPE_A      },
+    { "NS",     ARES_REC_TYPE_NS     },
+    { "CNAME",  ARES_REC_TYPE_CNAME  },
+    { "SOA",    ARES_REC_TYPE_SOA    },
+    { "PTR",    ARES_REC_TYPE_PTR    },
+    { "HINFO",  ARES_REC_TYPE_HINFO  },
+    { "MX",     ARES_REC_TYPE_MX     },
+    { "TXT",    ARES_REC_TYPE_TXT    },
+    { "AAAA",   ARES_REC_TYPE_AAAA   },
+    { "SRV",    ARES_REC_TYPE_SRV    },
+    { "NAPTR",  ARES_REC_TYPE_NAPTR  },
+    { "OPT",    ARES_REC_TYPE_OPT    },
+    { "TLSA",   ARES_REC_TYPE_TLSA   },
+    { "SVCB",   ARES_REC_TYPE_SVCB   },
+    { "HTTPS",  ARES_REC_TYPE_HTTPS  },
+    { "ANY",    ARES_REC_TYPE_ANY    },
+    { "URI",    ARES_REC_TYPE_URI    },
+    { "CAA",    ARES_REC_TYPE_CAA    },
+    { "RAW_RR", ARES_REC_TYPE_RAW_RR },
+    { NULL,     0                    }
   };
 
   if (qtype == NULL || str == NULL) {
diff --git a/deps/cares/src/lib/ares_dns_name.c b/deps/cares/src/lib/ares_dns_name.c
index f4085ab2cb9d85..85e26cd25b57fe 100644
--- a/deps/cares/src/lib/ares_dns_name.c
+++ b/deps/cares/src/lib/ares_dns_name.c
@@ -362,6 +362,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
 {
   const ares_nameoffset_t *off = NULL;
   size_t                   name_len;
+  size_t                   orig_name_len;
   size_t                   pos = ares__buf_len(buf);
   ares_dns_labels_t        labels;
   char                     name_copy[512];
@@ -375,7 +376,8 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
 
   /* NOTE: due to possible escaping, name_copy buffer is > 256 to allow for
    *       this */
-  name_len = ares_strcpy(name_copy, name, sizeof(name_copy));
+  name_len      = ares_strcpy(name_copy, name, sizeof(name_copy));
+  orig_name_len = name_len;
 
   /* Find longest match */
   if (list != NULL) {
@@ -388,7 +390,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
   }
 
   /* Output labels */
-  if (off == NULL || off->name_len != name_len) {
+  if (off == NULL || off->name_len != orig_name_len) {
     size_t i;
 
     status = ares_split_dns_name(&labels, validate_hostname, name_copy);
@@ -432,7 +434,7 @@ ares_status_t ares__dns_name_write(ares__buf_t *buf, ares__llist_t **list,
 
   /* Store pointer for future jumps as long as its not an exact match for
    * a prior entry */
-  if (list != NULL && (off == NULL || off->name_len != name_len) &&
+  if (list != NULL && (off == NULL || off->name_len != orig_name_len) &&
       name_len > 0) {
     status = ares__nameoffset_create(list, name /* not truncated copy! */, pos);
     if (status != ARES_SUCCESS) {
diff --git a/deps/cares/src/lib/ares_event.h b/deps/cares/src/lib/ares_event.h
index 23e9637924ba07..f5d044d2a6ca19 100644
--- a/deps/cares/src/lib/ares_event.h
+++ b/deps/cares/src/lib/ares_event.h
@@ -79,6 +79,14 @@ typedef struct {
   size_t (*wait)(ares_event_thread_t *e, unsigned long timeout_ms);
 } ares_event_sys_t;
 
+struct ares_event_configchg;
+typedef struct ares_event_configchg ares_event_configchg_t;
+
+ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
+                                        ares_event_thread_t     *e);
+
+void          ares_event_configchg_destroy(ares_event_configchg_t *configchg);
+
 struct ares_event_thread {
   /*! Whether the event thread should be online or not.  Checked on every wake
    *  event before sleeping. */
@@ -94,13 +102,18 @@ struct ares_event_thread {
    *  thread other than the event thread itself. The event thread will then
    *  be woken then process these updates itself */
   ares__llist_t          *ev_updates;
-  /*! Registered event handles. */
-  ares__htable_asvp_t    *ev_handles;
+  /*! Registered socket event handles */
+  ares__htable_asvp_t    *ev_sock_handles;
+  /*! Registered custom event handles. Typically used for external triggering.
+   */
+  ares__htable_vpvp_t    *ev_cust_handles;
   /*! Pointer to the event handle which is used to signal and wake the event
    *  thread itself.  This is needed to be able to do things like update the
    *  file descriptors being waited on and to wake the event subsystem during
    *  shutdown */
   ares_event_t           *ev_signal;
+  /*! Handle for configuration change monitoring */
+  ares_event_configchg_t *configchg;
   /* Event subsystem callbacks */
   const ares_event_sys_t *ev_sys;
   /* Event subsystem private data */
@@ -124,7 +137,8 @@ struct ares_event_thread {
  *                           Non-socket events cannot be removed, and must have
  *                           ARES_EVENT_FLAG_OTHER set.
  *  \param[in]  cb           Callback to call when
- *                           event is triggered. Required. Not allowed to be
+ *                           event is triggered. Required if flags is not
+ *                           ARES_EVENT_FLAG_NONE. Not allowed to be
  *                           changed, ignored on modification.
  *  \param[in]  fd           File descriptor/socket to monitor. May
  *                           be ARES_SOCKET_BAD if not monitoring file
diff --git a/deps/cares/src/lib/ares_event_configchg.c b/deps/cares/src/lib/ares_event_configchg.c
new file mode 100644
index 00000000000000..dc6e465652a773
--- /dev/null
+++ b/deps/cares/src/lib/ares_event_configchg.c
@@ -0,0 +1,565 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 Brad House
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * SPDX-License-Identifier: MIT
+ */
+#include "ares_setup.h"
+#include "ares.h"
+#include "ares_private.h"
+#include "ares_event.h"
+
+static void ares_event_configchg_reload(ares_event_thread_t *e)
+{
+  ares_reinit(e->channel);
+}
+
+#ifdef __linux__
+
+#  include 
+
+struct ares_event_configchg {
+  int                  inotify_fd;
+  ares_event_thread_t *e;
+};
+
+void ares_event_configchg_destroy(ares_event_configchg_t *configchg)
+{
+  if (configchg == NULL) {
+    return;
+  }
+
+  /* Tell event system to stop monitoring for changes.  This will cause the
+   * cleanup to be called */
+  ares_event_update(NULL, configchg->e, ARES_EVENT_FLAG_NONE, NULL,
+                    configchg->inotify_fd, NULL, NULL, NULL);
+}
+
+static void ares_event_configchg_free(void *data)
+{
+  ares_event_configchg_t *configchg = data;
+  if (configchg == NULL) {
+    return;
+  }
+
+  if (configchg->inotify_fd >= 0) {
+    close(configchg->inotify_fd);
+    configchg->inotify_fd = -1;
+  }
+
+  ares_free(configchg);
+}
+
+static void ares_event_configchg_cb(ares_event_thread_t *e, ares_socket_t fd,
+                                    void *data, ares_event_flags_t flags)
+{
+  ares_event_configchg_t *configchg = data;
+
+  /* Some systems cannot read integer variables if they are not
+   * properly aligned. On other systems, incorrect alignment may
+   * decrease performance. Hence, the buffer used for reading from
+   * the inotify file descriptor should have the same alignment as
+   * struct inotify_event. */
+  unsigned char           buf[4096]
+    __attribute__((aligned(__alignof__(struct inotify_event))));
+  const struct inotify_event *event;
+  ssize_t                     len;
+  ares_bool_t                 triggered = ARES_FALSE;
+
+  (void)fd;
+  (void)flags;
+
+  while (1) {
+    const unsigned char *ptr;
+
+    len = read(configchg->inotify_fd, buf, sizeof(buf));
+    if (len <= 0) {
+      break;
+    }
+
+    /* Loop over all events in the buffer. Says kernel will check the buffer
+     * size provided, so I assume it won't ever return partial events. */
+    for (ptr  = buf; ptr < buf + len;
+         ptr += sizeof(struct inotify_event) + event->len) {
+      event = (const struct inotify_event *)ptr;
+
+      if (event->len == 0 || ares_strlen(event->name) == 0) {
+        continue;
+      }
+
+      if (strcasecmp(event->name, "resolv.conf") == 0 ||
+          strcasecmp(event->name, "nsswitch.conf") == 0) {
+        triggered = ARES_TRUE;
+      }
+    }
+  }
+
+  /* Only process after all events are read.  No need to process more often as
+   * we don't want to reload the config back to back */
+  if (triggered) {
+    ares_event_configchg_reload(e);
+  }
+}
+
+ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
+                                        ares_event_thread_t     *e)
+{
+  ares_status_t           status = ARES_SUCCESS;
+  ares_event_configchg_t *c;
+
+  (void)e;
+
+  /* Not used by this implementation */
+  *configchg = NULL;
+
+  c = ares_malloc_zero(sizeof(*c));
+  if (c == NULL) {
+    return ARES_ENOMEM;
+  }
+
+  c->e          = e;
+  c->inotify_fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);
+  if (c->inotify_fd == -1) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+  /* We need to monitor /etc/resolv.conf, /etc/nsswitch.conf */
+  if (inotify_add_watch(c->inotify_fd, "/etc",
+                        IN_CREATE | IN_MODIFY | IN_MOVED_TO | IN_ONLYDIR) ==
+      -1) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+  status =
+    ares_event_update(NULL, e, ARES_EVENT_FLAG_READ, ares_event_configchg_cb,
+                      c->inotify_fd, c, ares_event_configchg_free, NULL);
+
+done:
+  if (status != ARES_SUCCESS) {
+    ares_event_configchg_free(c);
+  }
+  return status;
+}
+
+#elif defined(_WIN32)
+
+#  include 
+#  include 
+#  include 
+#  include 
+
+struct ares_event_configchg {
+  HANDLE               ifchg_hnd;
+  ares_event_thread_t *e;
+};
+
+void ares_event_configchg_destroy(ares_event_configchg_t *configchg)
+{
+#  ifdef __WATCOMC__
+  /* Not supported */
+#  else
+  if (configchg == NULL) {
+    return;
+  }
+
+  if (configchg->ifchg_hnd != NULL) {
+    CancelMibChangeNotify2(configchg->ifchg_hnd);
+    configchg->ifchg_hnd = NULL;
+  }
+
+  ares_free(configchg);
+#  endif
+}
+
+#  ifndef __WATCOMC__
+static void ares_event_configchg_cb(PVOID                 CallerContext,
+                                    PMIB_IPINTERFACE_ROW  Row,
+                                    MIB_NOTIFICATION_TYPE NotificationType)
+{
+  ares_event_configchg_t *configchg = CallerContext;
+  (void)Row;
+  (void)NotificationType;
+  ares_event_configchg_reload(configchg->e);
+}
+#  endif
+
+
+ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
+                                        ares_event_thread_t     *e)
+{
+#  ifdef __WATCOMC__
+  return ARES_ENOTIMP;
+#  else
+  ares_status_t status = ARES_SUCCESS;
+
+  *configchg = ares_malloc_zero(sizeof(**configchg));
+  if (*configchg == NULL) {
+    return ARES_ENOMEM;
+  }
+
+  (*configchg)->e = e;
+
+  /* NOTE: If a user goes into the control panel and changes the network
+   *       adapter DNS addresses manually, this will NOT trigger a notification.
+   *       We've also tried listening on NotifyUnicastIpAddressChange(), but
+   *       that didn't get triggered either.
+   */
+
+  if (NotifyIpInterfaceChange(
+        AF_UNSPEC, (PIPINTERFACE_CHANGE_CALLBACK)ares_event_configchg_cb,
+        *configchg, FALSE, &(*configchg)->ifchg_hnd) != NO_ERROR) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+done:
+  if (status != ARES_SUCCESS) {
+    ares_event_configchg_destroy(*configchg);
+    *configchg = NULL;
+  }
+
+  return status;
+#  endif
+}
+
+#elif defined(__APPLE__)
+
+#  include 
+#  include 
+#  include 
+#  include 
+
+struct ares_event_configchg {
+  int fd;
+  int token;
+};
+
+void ares_event_configchg_destroy(ares_event_configchg_t *configchg)
+{
+  (void)configchg;
+
+  /* Cleanup happens automatically */
+}
+
+static void ares_event_configchg_free(void *data)
+{
+  ares_event_configchg_t *configchg = data;
+  if (configchg == NULL) {
+    return;
+  }
+
+  if (configchg->fd >= 0) {
+    notify_cancel(configchg->token);
+    /* automatically closes fd */
+    configchg->fd = -1;
+  }
+
+  ares_free(configchg);
+}
+
+static void ares_event_configchg_cb(ares_event_thread_t *e, ares_socket_t fd,
+                                    void *data, ares_event_flags_t flags)
+{
+  ares_event_configchg_t *configchg = data;
+  ares_bool_t             triggered = ARES_FALSE;
+
+  (void)fd;
+  (void)flags;
+
+  while (1) {
+    int     t = 0;
+    ssize_t len;
+
+    len = read(configchg->fd, &t, sizeof(t));
+
+    if (len < (ssize_t)sizeof(t)) {
+      break;
+    }
+
+    /* Token is read in network byte order (yeah, docs don't mention this) */
+    t = (int)ntohl(t);
+
+    if (t != configchg->token) {
+      continue;
+    }
+
+    triggered = ARES_TRUE;
+  }
+
+  /* Only process after all events are read.  No need to process more often as
+   * we don't want to reload the config back to back */
+  if (triggered) {
+    ares_event_configchg_reload(e);
+  }
+}
+
+ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
+                                        ares_event_thread_t     *e)
+{
+  ares_status_t status                               = ARES_SUCCESS;
+  void         *handle                               = NULL;
+  const char *(*pdns_configuration_notify_key)(void) = NULL;
+  const char *notify_key                             = NULL;
+  int         flags;
+
+  *configchg = ares_malloc_zero(sizeof(**configchg));
+  if (*configchg == NULL) {
+    return ARES_ENOMEM;
+  }
+
+  /* Load symbol as it isn't normally public */
+  handle = dlopen("/usr/lib/libSystem.dylib", RTLD_LAZY | RTLD_NOLOAD);
+  if (handle == NULL) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+  pdns_configuration_notify_key = dlsym(handle, "dns_configuration_notify_key");
+
+  if (pdns_configuration_notify_key == NULL) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+  notify_key = pdns_configuration_notify_key();
+  if (notify_key == NULL) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+  if (notify_register_file_descriptor(notify_key, &(*configchg)->fd, 0,
+                                      &(*configchg)->token) !=
+      NOTIFY_STATUS_OK) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+  /* Set file descriptor to non-blocking */
+  flags = fcntl((*configchg)->fd, F_GETFL, 0);
+  fcntl((*configchg)->fd, F_SETFL, flags | O_NONBLOCK);
+
+  /* Register file descriptor with event subsystem */
+  status = ares_event_update(NULL, e, ARES_EVENT_FLAG_READ,
+                             ares_event_configchg_cb, (*configchg)->fd,
+                             *configchg, ares_event_configchg_free, NULL);
+
+done:
+  if (status != ARES_SUCCESS) {
+    ares_event_configchg_free(*configchg);
+    *configchg = NULL;
+  }
+
+  if (handle) {
+    dlclose(handle);
+  }
+
+  return status;
+}
+
+#elif defined(HAVE_STAT)
+#  ifdef HAVE_SYS_TYPES_H
+#    include 
+#  endif
+#  ifdef HAVE_SYS_STAT_H
+#    include 
+#  endif
+
+typedef struct {
+  size_t size;
+  time_t mtime;
+} fileinfo_t;
+
+struct ares_event_configchg {
+  ares_bool_t           isup;
+  ares__thread_t       *thread;
+  ares__htable_strvp_t *filestat;
+  ares__thread_mutex_t *lock;
+  ares__thread_cond_t  *wake;
+  const char           *resolvconf_path;
+  ares_event_thread_t  *e;
+};
+
+static ares_status_t config_change_check(ares__htable_strvp_t *filestat,
+                                         const char           *resolvconf_path)
+{
+  size_t      i;
+  const char *configfiles[] = { resolvconf_path, "/etc/nsswitch.conf",
+                                "/etc/netsvc.conf", "/etc/svc.conf", NULL };
+  ares_bool_t changed       = ARES_FALSE;
+
+  for (i = 0; configfiles[i] != NULL; i++) {
+    fileinfo_t *fi = ares__htable_strvp_get_direct(filestat, configfiles[i]);
+    struct stat st;
+
+    if (stat(configfiles[i], &st) == 0) {
+      if (fi == NULL) {
+        fi = ares_malloc_zero(sizeof(*fi));
+        if (fi == NULL) {
+          return ARES_ENOMEM;
+        }
+        if (!ares__htable_strvp_insert(filestat, configfiles[i], fi)) {
+          ares_free(fi);
+          return ARES_ENOMEM;
+        }
+      }
+      if (fi->size != (size_t)st.st_size || fi->mtime != (time_t)st.st_mtime) {
+        changed = ARES_TRUE;
+      }
+      fi->size  = (size_t)st.st_size;
+      fi->mtime = (time_t)st.st_mtime;
+    } else if (fi != NULL) {
+      /* File no longer exists, remove */
+      ares__htable_strvp_remove(filestat, configfiles[i]);
+      changed = ARES_TRUE;
+    }
+  }
+
+  if (changed) {
+    return ARES_SUCCESS;
+  }
+  return ARES_ENOTFOUND;
+}
+
+static void *ares_event_configchg_thread(void *arg)
+{
+  ares_event_configchg_t *c = arg;
+
+  ares__thread_mutex_lock(c->lock);
+  while (c->isup) {
+    ares_status_t status;
+
+    if (ares__thread_cond_timedwait(c->wake, c->lock, 30000) != ARES_ETIMEOUT) {
+      continue;
+    }
+
+    /* make sure status didn't change even though we got a timeout */
+    if (!c->isup) {
+      break;
+    }
+
+    status = config_change_check(c->filestat, c->resolvconf_path);
+    if (status == ARES_SUCCESS) {
+      ares_event_configchg_reload(c->e);
+    }
+  }
+
+  ares__thread_mutex_unlock(c->lock);
+  return NULL;
+}
+
+ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
+                                        ares_event_thread_t     *e)
+{
+  ares_status_t           status = ARES_SUCCESS;
+  ares_event_configchg_t *c      = NULL;
+
+  *configchg = NULL;
+
+  c = ares_malloc_zero(sizeof(*c));
+  if (c == NULL) {
+    status = ARES_ENOMEM;
+    goto done;
+  }
+
+  c->e = e;
+
+  c->filestat = ares__htable_strvp_create(ares_free);
+  if (c->filestat == NULL) {
+    status = ARES_ENOMEM;
+    goto done;
+  }
+
+  c->wake = ares__thread_cond_create();
+  if (c->wake == NULL) {
+    status = ARES_ENOMEM;
+    goto done;
+  }
+
+  c->resolvconf_path = c->e->channel->resolvconf_path;
+  if (c->resolvconf_path == NULL) {
+    c->resolvconf_path = PATH_RESOLV_CONF;
+  }
+
+  status = config_change_check(c->filestat, c->resolvconf_path);
+  if (status == ARES_ENOMEM) {
+    goto done;
+  }
+
+  c->isup = ARES_TRUE;
+  status  = ares__thread_create(&c->thread, ares_event_configchg_thread, c);
+
+done:
+  if (status != ARES_SUCCESS) {
+    ares_event_configchg_destroy(c);
+  } else {
+    *configchg = c;
+  }
+  return status;
+}
+
+void ares_event_configchg_destroy(ares_event_configchg_t *configchg)
+{
+  if (configchg == NULL) {
+    return;
+  }
+
+  if (configchg->lock) {
+    ares__thread_mutex_lock(configchg->lock);
+  }
+
+  configchg->isup = ARES_FALSE;
+  if (configchg->wake) {
+    ares__thread_cond_signal(configchg->wake);
+  }
+
+  if (configchg->lock) {
+    ares__thread_mutex_unlock(configchg->lock);
+  }
+
+  if (configchg->thread) {
+    void *rv = NULL;
+    ares__thread_join(configchg->thread, &rv);
+  }
+
+  ares__thread_mutex_destroy(configchg->lock);
+  ares__thread_cond_destroy(configchg->wake);
+  ares__htable_strvp_destroy(configchg->filestat);
+  ares_free(configchg);
+}
+
+#else
+
+ares_status_t ares_event_configchg_init(ares_event_configchg_t **configchg,
+                                        ares_event_thread_t     *e)
+{
+  /* No ability */
+  return ARES_ENOTIMP;
+}
+
+void ares_event_configchg_destroy(ares_event_configchg_t *configchg)
+{
+  /* No-op */
+}
+
+#endif
diff --git a/deps/cares/src/lib/ares_event_epoll.c b/deps/cares/src/lib/ares_event_epoll.c
index 9d3c097f8e4346..78cbbc368c8ef0 100644
--- a/deps/cares/src/lib/ares_event_epoll.c
+++ b/deps/cares/src/lib/ares_event_epoll.c
@@ -167,7 +167,7 @@ static size_t ares_evsys_epoll_wait(ares_event_thread_t *e,
     ares_event_t      *ev;
     ares_event_flags_t flags = 0;
 
-    ev = ares__htable_asvp_get_direct(e->ev_handles,
+    ev = ares__htable_asvp_get_direct(e->ev_sock_handles,
                                       (ares_socket_t)events[i].data.fd);
     if (ev == NULL || ev->cb == NULL) {
       continue;
diff --git a/deps/cares/src/lib/ares_event_kqueue.c b/deps/cares/src/lib/ares_event_kqueue.c
index 944c4b003bc5a4..7e2c60abf518d8 100644
--- a/deps/cares/src/lib/ares_event_kqueue.c
+++ b/deps/cares/src/lib/ares_event_kqueue.c
@@ -218,7 +218,7 @@ static size_t ares_evsys_kqueue_wait(ares_event_thread_t *e,
     ares_event_t      *ev;
     ares_event_flags_t flags = 0;
 
-    ev = ares__htable_asvp_get_direct(e->ev_handles,
+    ev = ares__htable_asvp_get_direct(e->ev_sock_handles,
                                       (ares_socket_t)events[i].ident);
     if (ev == NULL || ev->cb == NULL) {
       continue;
diff --git a/deps/cares/src/lib/ares_event_poll.c b/deps/cares/src/lib/ares_event_poll.c
index 33b1d6dfd58ec7..a06c6e3fc410a4 100644
--- a/deps/cares/src/lib/ares_event_poll.c
+++ b/deps/cares/src/lib/ares_event_poll.c
@@ -69,7 +69,7 @@ static size_t ares_evsys_poll_wait(ares_event_thread_t *e,
                                    unsigned long        timeout_ms)
 {
   size_t         num_fds = 0;
-  ares_socket_t *fdlist  = ares__htable_asvp_keys(e->ev_handles, &num_fds);
+  ares_socket_t *fdlist  = ares__htable_asvp_keys(e->ev_sock_handles, &num_fds);
   struct pollfd *pollfd  = NULL;
   int            rv;
   size_t         cnt = 0;
@@ -82,7 +82,7 @@ static size_t ares_evsys_poll_wait(ares_event_thread_t *e,
     }
     for (i = 0; i < num_fds; i++) {
       const ares_event_t *ev =
-        ares__htable_asvp_get_direct(e->ev_handles, fdlist[i]);
+        ares__htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
       pollfd[i].fd = ev->fd;
       if (ev->flags & ARES_EVENT_FLAG_READ) {
         pollfd[i].events |= POLLIN;
@@ -109,7 +109,7 @@ static size_t ares_evsys_poll_wait(ares_event_thread_t *e,
 
     cnt++;
 
-    ev = ares__htable_asvp_get_direct(e->ev_handles, pollfd[i].fd);
+    ev = ares__htable_asvp_get_direct(e->ev_sock_handles, pollfd[i].fd);
     if (ev == NULL || ev->cb == NULL) {
       continue;
     }
diff --git a/deps/cares/src/lib/ares_event_select.c b/deps/cares/src/lib/ares_event_select.c
index 4823e808f10df6..57a4271ea7da25 100644
--- a/deps/cares/src/lib/ares_event_select.c
+++ b/deps/cares/src/lib/ares_event_select.c
@@ -23,6 +23,12 @@
  *
  * SPDX-License-Identifier: MIT
  */
+
+/* Some systems might default to something low like 256 (NetBSD), lets define
+ * this to assist.  Really, no one should be using select, but lets be safe
+ * anyhow */
+#define FD_SETSIZE 4096
+
 #include "ares_setup.h"
 #include "ares.h"
 #include "ares_private.h"
@@ -71,7 +77,7 @@ static size_t ares_evsys_select_wait(ares_event_thread_t *e,
                                      unsigned long        timeout_ms)
 {
   size_t          num_fds = 0;
-  ares_socket_t  *fdlist  = ares__htable_asvp_keys(e->ev_handles, &num_fds);
+  ares_socket_t  *fdlist = ares__htable_asvp_keys(e->ev_sock_handles, &num_fds);
   int             rv;
   size_t          cnt = 0;
   size_t          i;
@@ -86,7 +92,7 @@ static size_t ares_evsys_select_wait(ares_event_thread_t *e,
 
   for (i = 0; i < num_fds; i++) {
     const ares_event_t *ev =
-      ares__htable_asvp_get_direct(e->ev_handles, fdlist[i]);
+      ares__htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
     if (ev->flags & ARES_EVENT_FLAG_READ) {
       FD_SET(ev->fd, &read_fds);
     }
@@ -110,7 +116,7 @@ static size_t ares_evsys_select_wait(ares_event_thread_t *e,
       ares_event_t      *ev;
       ares_event_flags_t flags = 0;
 
-      ev = ares__htable_asvp_get_direct(e->ev_handles, fdlist[i]);
+      ev = ares__htable_asvp_get_direct(e->ev_sock_handles, fdlist[i]);
       if (ev == NULL || ev->cb == NULL) {
         continue;
       }
diff --git a/deps/cares/src/lib/ares_event_thread.c b/deps/cares/src/lib/ares_event_thread.c
index 6dd7b502a35745..d9d904f29ba943 100644
--- a/deps/cares/src/lib/ares_event_thread.c
+++ b/deps/cares/src/lib/ares_event_thread.c
@@ -89,7 +89,12 @@ ares_status_t ares_event_update(ares_event_t **event, ares_event_thread_t *e,
 {
   ares_event_t *ev = NULL;
 
-  if (e == NULL || cb == NULL) {
+  if (e == NULL) {
+    return ARES_EFORMERR;
+  }
+
+  /* Callback must be specified if not a removal event. */
+  if (flags != ARES_EVENT_FLAG_NONE && cb == NULL) {
     return ARES_EFORMERR;
   }
 
@@ -211,8 +216,13 @@ static void ares_event_process_updates(ares_event_thread_t *e)
    * list */
   while ((node = ares__llist_node_first(e->ev_updates)) != NULL) {
     ares_event_t *newev = ares__llist_node_claim(node);
-    ares_event_t *oldev =
-      ares__htable_asvp_get_direct(e->ev_handles, newev->fd);
+    ares_event_t *oldev;
+
+    if (newev->fd == ARES_SOCKET_BAD) {
+      oldev = ares__htable_vpvp_get_direct(e->ev_cust_handles, newev->data);
+    } else {
+      oldev = ares__htable_asvp_get_direct(e->ev_sock_handles, newev->fd);
+    }
 
     /* Adding new */
     if (oldev == NULL) {
@@ -225,7 +235,11 @@ static void ares_event_process_updates(ares_event_thread_t *e)
         newev->e = NULL;
         ares_event_destroy_cb(newev);
       } else {
-        ares__htable_asvp_insert(e->ev_handles, newev->fd, newev);
+        if (newev->fd == ARES_SOCKET_BAD) {
+          ares__htable_vpvp_insert(e->ev_cust_handles, newev->data, newev);
+        } else {
+          ares__htable_asvp_insert(e->ev_sock_handles, newev->fd, newev);
+        }
       }
       continue;
     }
@@ -234,7 +248,11 @@ static void ares_event_process_updates(ares_event_thread_t *e)
     if (newev->flags == ARES_EVENT_FLAG_NONE) {
       /* the callback for the removal will call e->ev_sys->event_del(e, event)
        */
-      ares__htable_asvp_remove(e->ev_handles, newev->fd);
+      if (newev->fd == ARES_SOCKET_BAD) {
+        ares__htable_vpvp_remove(e->ev_cust_handles, newev->data);
+      } else {
+        ares__htable_asvp_remove(e->ev_sock_handles, newev->fd);
+      }
       ares_free(newev);
       continue;
     }
@@ -306,10 +324,13 @@ static void ares_event_thread_destroy_int(ares_event_thread_t *e)
   ares__llist_destroy(e->ev_updates);
   e->ev_updates = NULL;
 
-  ares__htable_asvp_destroy(e->ev_handles);
-  e->ev_handles = NULL;
+  ares__htable_asvp_destroy(e->ev_sock_handles);
+  e->ev_sock_handles = NULL;
+
+  ares__htable_vpvp_destroy(e->ev_cust_handles);
+  e->ev_cust_handles = NULL;
 
-  if (e->ev_sys->destroy) {
+  if (e->ev_sys && e->ev_sys->destroy) {
     e->ev_sys->destroy(e);
   }
 
@@ -409,8 +430,14 @@ ares_status_t ares_event_thread_init(ares_channel_t *channel)
     return ARES_ENOMEM;
   }
 
-  e->ev_handles = ares__htable_asvp_create(ares_event_destroy_cb);
-  if (e->ev_handles == NULL) {
+  e->ev_sock_handles = ares__htable_asvp_create(ares_event_destroy_cb);
+  if (e->ev_sock_handles == NULL) {
+    ares_event_thread_destroy_int(e);
+    return ARES_ENOMEM;
+  }
+
+  e->ev_cust_handles = ares__htable_vpvp_create(NULL, ares_event_destroy_cb);
+  if (e->ev_cust_handles == NULL) {
     ares_event_thread_destroy_int(e);
     return ARES_ENOMEM;
   }
diff --git a/deps/cares/src/lib/ares_fds.c b/deps/cares/src/lib/ares_fds.c
index e726d4f012879a..e39823304a70ae 100644
--- a/deps/cares/src/lib/ares_fds.c
+++ b/deps/cares/src/lib/ares_fds.c
@@ -30,7 +30,7 @@
 #include "ares.h"
 #include "ares_private.h"
 
-int ares_fds(ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds)
+int ares_fds(const ares_channel_t *channel, fd_set *read_fds, fd_set *write_fds)
 {
   ares_socket_t       nfds;
   ares__slist_node_t *snode;
diff --git a/deps/cares/src/lib/ares_getnameinfo.c b/deps/cares/src/lib/ares_getnameinfo.c
index 8889e9eec6fe51..d4cf58ea516535 100644
--- a/deps/cares/src/lib/ares_getnameinfo.c
+++ b/deps/cares/src/lib/ares_getnameinfo.c
@@ -98,11 +98,12 @@ static void  ares_getnameinfo_int(ares_channel_t        *channel,
   unsigned int               flags = (unsigned int)flags_int;
 
   /* Validate socket address family and length */
-  if ((sa->sa_family == AF_INET) && (salen == sizeof(struct sockaddr_in))) {
+  if (sa && sa->sa_family == AF_INET &&
+      salen >= (ares_socklen_t)sizeof(struct sockaddr_in)) {
     addr = CARES_INADDR_CAST(struct sockaddr_in *, sa);
     port = addr->sin_port;
-  } else if ((sa->sa_family == AF_INET6) &&
-             (salen == sizeof(struct sockaddr_in6))) {
+  } else if (sa && sa->sa_family == AF_INET6 &&
+             salen >= (ares_socklen_t)sizeof(struct sockaddr_in6)) {
     addr6 = CARES_INADDR_CAST(struct sockaddr_in6 *, sa);
     port  = addr6->sin6_port;
   } else {
@@ -142,7 +143,7 @@ static void  ares_getnameinfo_int(ares_channel_t        *channel,
         callback(arg, ARES_EBADFLAGS, 0, NULL, NULL);
         return;
       }
-      if (salen == sizeof(struct sockaddr_in6)) {
+      if (sa->sa_family == AF_INET6) {
         ares_inet_ntop(AF_INET6, &addr6->sin6_addr, ipbuf, IPBUFSIZ);
         /* If the system supports scope IDs, use it */
 #ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
@@ -158,9 +159,8 @@ static void  ares_getnameinfo_int(ares_channel_t        *channel,
       }
       callback(arg, ARES_SUCCESS, 0, ipbuf, service);
       return;
-    }
-    /* This is where a DNS lookup becomes necessary */
-    else {
+    } else {
+      /* This is where a DNS lookup becomes necessary */
       niquery = ares_malloc(sizeof(struct nameinfo_query));
       if (!niquery) {
         callback(arg, ARES_ENOMEM, 0, NULL, NULL);
diff --git a/deps/cares/src/lib/ares_getsock.c b/deps/cares/src/lib/ares_getsock.c
index 0353bad6391e28..b64c075572dec5 100644
--- a/deps/cares/src/lib/ares_getsock.c
+++ b/deps/cares/src/lib/ares_getsock.c
@@ -29,7 +29,7 @@
 #include "ares.h"
 #include "ares_private.h"
 
-int ares_getsock(ares_channel_t *channel, ares_socket_t *socks,
+int ares_getsock(const ares_channel_t *channel, ares_socket_t *socks,
                  int numsocks) /* size of the 'socks' array */
 {
   ares__slist_node_t *snode;
diff --git a/deps/cares/src/lib/ares_init.c b/deps/cares/src/lib/ares_init.c
index 28a509ea48a5af..518abd545345b5 100644
--- a/deps/cares/src/lib/ares_init.c
+++ b/deps/cares/src/lib/ares_init.c
@@ -65,6 +65,7 @@
 #include "ares_inet_net_pton.h"
 #include "ares_platform.h"
 #include "ares_private.h"
+#include "ares_event.h"
 
 #ifdef WATT32
 #  undef WIN32 /* Redefined in MingW/MSVC headers */
@@ -256,6 +257,12 @@ static ares_status_t init_by_defaults(ares_channel_t *channel)
     }
   }
 
+  /* Set default fields for server failover behavior */
+  if (!(channel->optmask & ARES_OPT_SERVER_FAILOVER)) {
+    channel->server_retry_chance = DEFAULT_SERVER_RETRY_CHANCE;
+    channel->server_retry_delay  = DEFAULT_SERVER_RETRY_DELAY;
+  }
+
 error:
   if (hostname) {
     ares_free(hostname);
@@ -373,10 +380,21 @@ int ares_init_options(ares_channel_t           **channelptr,
 
   /* Initialize the event thread */
   if (channel->optmask & ARES_OPT_EVENT_THREAD) {
+    ares_event_thread_t *e = NULL;
+
     status = ares_event_thread_init(channel);
     if (status != ARES_SUCCESS) {
       goto done;
     }
+
+    /* Initialize monitor for configuration changes.  In some rare cases,
+     * ARES_ENOTIMP may occur (OpenWatcom), ignore this. */
+    e      = channel->sock_state_cb_data;
+    status = ares_event_configchg_init(&e->configchg, e);
+    if (status != ARES_SUCCESS && status != ARES_ENOTIMP) {
+      goto done;
+    }
+    status = ARES_SUCCESS;
   }
 
 done:
@@ -389,35 +407,78 @@ int ares_init_options(ares_channel_t           **channelptr,
   return ARES_SUCCESS;
 }
 
-ares_status_t ares_reinit(ares_channel_t *channel)
+static void *ares_reinit_thread(void *arg)
 {
-  ares_status_t status;
-
-  if (channel == NULL) {
-    return ARES_EFORMERR;
-  }
-
-  ares__channel_lock(channel);
+  ares_channel_t *channel = arg;
+  ares_status_t   status;
 
+  /* ares__init_by_sysconfig() will lock when applying the config, but not
+   * when retrieving. */
   status = ares__init_by_sysconfig(channel);
   if (status != ARES_SUCCESS) {
     DEBUGF(fprintf(stderr, "Error: init_by_sysconfig failed: %s\n",
                    ares_strerror(status)));
   }
 
+  ares__channel_lock(channel);
+
   /* Flush cached queries on reinit */
-  if (channel->qcache) {
+  if (status == ARES_SUCCESS && channel->qcache) {
     ares__qcache_flush(channel->qcache);
   }
 
+  channel->reinit_pending = ARES_FALSE;
   ares__channel_unlock(channel);
 
+  return NULL;
+}
+
+ares_status_t ares_reinit(ares_channel_t *channel)
+{
+  ares_status_t status = ARES_SUCCESS;
+
+  if (channel == NULL) {
+    return ARES_EFORMERR;
+  }
+
+  ares__channel_lock(channel);
+
+  /* If a reinit is already in process, lets not do it again */
+  if (channel->reinit_pending) {
+    ares__channel_unlock(channel);
+    return ARES_SUCCESS;
+  }
+  channel->reinit_pending = ARES_TRUE;
+  ares__channel_unlock(channel);
+
+  if (ares_threadsafety()) {
+    /* clean up the prior reinit process's thread.  We know the thread isn't
+     * running since reinit_pending was false */
+    if (channel->reinit_thread != NULL) {
+      void *rv;
+      ares__thread_join(channel->reinit_thread, &rv);
+      channel->reinit_thread = NULL;
+    }
+
+    /* Spawn a new thread */
+    status =
+      ares__thread_create(&channel->reinit_thread, ares_reinit_thread, channel);
+    if (status != ARES_SUCCESS) {
+      ares__channel_lock(channel);
+      channel->reinit_pending = ARES_FALSE;
+      ares__channel_unlock(channel);
+    }
+  } else {
+    /* Threading support not available, call directly */
+    ares_reinit_thread(channel);
+  }
+
   return status;
 }
 
 /* ares_dup() duplicates a channel handle with all its options and returns a
    new channel handle */
-int ares_dup(ares_channel_t **dest, ares_channel_t *src)
+int ares_dup(ares_channel_t **dest, const ares_channel_t *src)
 {
   struct ares_options opts;
   ares_status_t       rc;
@@ -450,12 +511,14 @@ int ares_dup(ares_channel_t **dest, ares_channel_t *src)
 
   /* Now clone the options that ares_save_options() doesn't support, but are
    * user-provided */
-  (*dest)->sock_create_cb      = src->sock_create_cb;
-  (*dest)->sock_create_cb_data = src->sock_create_cb_data;
-  (*dest)->sock_config_cb      = src->sock_config_cb;
-  (*dest)->sock_config_cb_data = src->sock_config_cb_data;
-  (*dest)->sock_funcs          = src->sock_funcs;
-  (*dest)->sock_func_cb_data   = src->sock_func_cb_data;
+  (*dest)->sock_create_cb       = src->sock_create_cb;
+  (*dest)->sock_create_cb_data  = src->sock_create_cb_data;
+  (*dest)->sock_config_cb       = src->sock_config_cb;
+  (*dest)->sock_config_cb_data  = src->sock_config_cb_data;
+  (*dest)->sock_funcs           = src->sock_funcs;
+  (*dest)->sock_func_cb_data    = src->sock_func_cb_data;
+  (*dest)->server_state_cb      = src->server_state_cb;
+  (*dest)->server_state_cb_data = src->server_state_cb_data;
 
   ares_strcpy((*dest)->local_dev_name, src->local_dev_name,
               sizeof((*dest)->local_dev_name));
diff --git a/deps/cares/src/lib/ares_ipv6.h b/deps/cares/src/lib/ares_ipv6.h
index 28d7851ff3f051..e7e0b6d3a5e60c 100644
--- a/deps/cares/src/lib/ares_ipv6.h
+++ b/deps/cares/src/lib/ares_ipv6.h
@@ -31,6 +31,15 @@
 #  include 
 #endif
 
+#if defined(USE_WINSOCK)
+#  if defined(HAVE_IPHLPAPI_H)
+#    include 
+#  endif
+#  if defined(HAVE_NETIOAPI_H)
+#    include 
+#  endif
+#endif
+
 #ifndef HAVE_PF_INET6
 #  define PF_INET6 AF_INET6
 #endif
diff --git a/deps/cares/src/lib/ares_options.c b/deps/cares/src/lib/ares_options.c
index adc3e062ac437e..6f50f2e4981354 100644
--- a/deps/cares/src/lib/ares_options.c
+++ b/deps/cares/src/lib/ares_options.c
@@ -53,8 +53,8 @@ void ares_destroy_options(struct ares_options *options)
   ares_free(options->hosts_path);
 }
 
-static struct in_addr *ares_save_opt_servers(ares_channel_t *channel,
-                                             int            *nservers)
+static struct in_addr *ares_save_opt_servers(const ares_channel_t *channel,
+                                             int                  *nservers)
 {
   ares__slist_node_t *snode;
   struct in_addr     *out =
@@ -82,8 +82,8 @@ static struct in_addr *ares_save_opt_servers(ares_channel_t *channel,
 }
 
 /* Save options from initialized channel */
-int ares_save_options(ares_channel_t *channel, struct ares_options *options,
-                      int *optmask)
+int ares_save_options(const ares_channel_t *channel,
+                      struct ares_options *options, int *optmask)
 {
   size_t i;
 
@@ -229,6 +229,12 @@ int ares_save_options(ares_channel_t *channel, struct ares_options *options,
     options->evsys = channel->evsys;
   }
 
+  /* Set options for server failover behavior */
+  if (channel->optmask & ARES_OPT_SERVER_FAILOVER) {
+    options->server_failover_opts.retry_chance = channel->server_retry_chance;
+    options->server_failover_opts.retry_delay  = channel->server_retry_delay;
+  }
+
   *optmask = (int)channel->optmask;
 
   return ARES_SUCCESS;
@@ -474,6 +480,12 @@ ares_status_t ares__init_by_options(ares_channel_t            *channel,
     }
   }
 
+  /* Set fields for server failover behavior */
+  if (optmask & ARES_OPT_SERVER_FAILOVER) {
+    channel->server_retry_chance = options->server_failover_opts.retry_chance;
+    channel->server_retry_delay  = options->server_failover_opts.retry_delay;
+  }
+
   channel->optmask = (unsigned int)optmask;
 
   return ARES_SUCCESS;
diff --git a/deps/cares/src/lib/ares_platform.c b/deps/cares/src/lib/ares_platform.c
index 0727ae001c8432..58a50198713da8 100644
--- a/deps/cares/src/lib/ares_platform.c
+++ b/deps/cares/src/lib/ares_platform.c
@@ -101,10901 +101,10901 @@ struct pvt_servent {
 
 static struct pvt_servent IANAports[] = {
 #  ifdef USE_IANA_WELL_KNOWN_PORTS
-  {"tcpmux",           { NULL }, 1,     "tcp" },
-  { "tcpmux",          { NULL }, 1,     "udp" },
-  { "compressnet",     { NULL }, 2,     "tcp" },
-  { "compressnet",     { NULL }, 2,     "udp" },
-  { "compressnet",     { NULL }, 3,     "tcp" },
-  { "compressnet",     { NULL }, 3,     "udp" },
-  { "rje",             { NULL }, 5,     "tcp" },
-  { "rje",             { NULL }, 5,     "udp" },
-  { "echo",            { NULL }, 7,     "tcp" },
-  { "echo",            { NULL }, 7,     "udp" },
-  { "discard",         { NULL }, 9,     "tcp" },
-  { "discard",         { NULL }, 9,     "udp" },
-  { "discard",         { NULL }, 9,     "sctp"},
-  { "discard",         { NULL }, 9,     "dccp"},
-  { "systat",          { NULL }, 11,    "tcp" },
-  { "systat",          { NULL }, 11,    "udp" },
-  { "daytime",         { NULL }, 13,    "tcp" },
-  { "daytime",         { NULL }, 13,    "udp" },
-  { "qotd",            { NULL }, 17,    "tcp" },
-  { "qotd",            { NULL }, 17,    "udp" },
-  { "msp",             { NULL }, 18,    "tcp" },
-  { "msp",             { NULL }, 18,    "udp" },
-  { "chargen",         { NULL }, 19,    "tcp" },
-  { "chargen",         { NULL }, 19,    "udp" },
-  { "ftp-data",        { NULL }, 20,    "tcp" },
-  { "ftp-data",        { NULL }, 20,    "udp" },
-  { "ftp-data",        { NULL }, 20,    "sctp"},
-  { "ftp",             { NULL }, 21,    "tcp" },
-  { "ftp",             { NULL }, 21,    "udp" },
-  { "ftp",             { NULL }, 21,    "sctp"},
-  { "ssh",             { NULL }, 22,    "tcp" },
-  { "ssh",             { NULL }, 22,    "udp" },
-  { "ssh",             { NULL }, 22,    "sctp"},
-  { "telnet",          { NULL }, 23,    "tcp" },
-  { "telnet",          { NULL }, 23,    "udp" },
-  { "smtp",            { NULL }, 25,    "tcp" },
-  { "smtp",            { NULL }, 25,    "udp" },
-  { "nsw-fe",          { NULL }, 27,    "tcp" },
-  { "nsw-fe",          { NULL }, 27,    "udp" },
-  { "msg-icp",         { NULL }, 29,    "tcp" },
-  { "msg-icp",         { NULL }, 29,    "udp" },
-  { "msg-auth",        { NULL }, 31,    "tcp" },
-  { "msg-auth",        { NULL }, 31,    "udp" },
-  { "dsp",             { NULL }, 33,    "tcp" },
-  { "dsp",             { NULL }, 33,    "udp" },
-  { "time",            { NULL }, 37,    "tcp" },
-  { "time",            { NULL }, 37,    "udp" },
-  { "rap",             { NULL }, 38,    "tcp" },
-  { "rap",             { NULL }, 38,    "udp" },
-  { "rlp",             { NULL }, 39,    "tcp" },
-  { "rlp",             { NULL }, 39,    "udp" },
-  { "graphics",        { NULL }, 41,    "tcp" },
-  { "graphics",        { NULL }, 41,    "udp" },
-  { "name",            { NULL }, 42,    "tcp" },
-  { "name",            { NULL }, 42,    "udp" },
-  { "nameserver",      { NULL }, 42,    "tcp" },
-  { "nameserver",      { NULL }, 42,    "udp" },
-  { "nicname",         { NULL }, 43,    "tcp" },
-  { "nicname",         { NULL }, 43,    "udp" },
-  { "mpm-flags",       { NULL }, 44,    "tcp" },
-  { "mpm-flags",       { NULL }, 44,    "udp" },
-  { "mpm",             { NULL }, 45,    "tcp" },
-  { "mpm",             { NULL }, 45,    "udp" },
-  { "mpm-snd",         { NULL }, 46,    "tcp" },
-  { "mpm-snd",         { NULL }, 46,    "udp" },
-  { "ni-ftp",          { NULL }, 47,    "tcp" },
-  { "ni-ftp",          { NULL }, 47,    "udp" },
-  { "auditd",          { NULL }, 48,    "tcp" },
-  { "auditd",          { NULL }, 48,    "udp" },
-  { "tacacs",          { NULL }, 49,    "tcp" },
-  { "tacacs",          { NULL }, 49,    "udp" },
-  { "re-mail-ck",      { NULL }, 50,    "tcp" },
-  { "re-mail-ck",      { NULL }, 50,    "udp" },
-  { "la-maint",        { NULL }, 51,    "tcp" },
-  { "la-maint",        { NULL }, 51,    "udp" },
-  { "xns-time",        { NULL }, 52,    "tcp" },
-  { "xns-time",        { NULL }, 52,    "udp" },
-  { "domain",          { NULL }, 53,    "tcp" },
-  { "domain",          { NULL }, 53,    "udp" },
-  { "xns-ch",          { NULL }, 54,    "tcp" },
-  { "xns-ch",          { NULL }, 54,    "udp" },
-  { "isi-gl",          { NULL }, 55,    "tcp" },
-  { "isi-gl",          { NULL }, 55,    "udp" },
-  { "xns-auth",        { NULL }, 56,    "tcp" },
-  { "xns-auth",        { NULL }, 56,    "udp" },
-  { "xns-mail",        { NULL }, 58,    "tcp" },
-  { "xns-mail",        { NULL }, 58,    "udp" },
-  { "ni-mail",         { NULL }, 61,    "tcp" },
-  { "ni-mail",         { NULL }, 61,    "udp" },
-  { "acas",            { NULL }, 62,    "tcp" },
-  { "acas",            { NULL }, 62,    "udp" },
-  { "whois++",         { NULL }, 63,    "tcp" },
-  { "whois++",         { NULL }, 63,    "udp" },
-  { "covia",           { NULL }, 64,    "tcp" },
-  { "covia",           { NULL }, 64,    "udp" },
-  { "tacacs-ds",       { NULL }, 65,    "tcp" },
-  { "tacacs-ds",       { NULL }, 65,    "udp" },
-  { "sql*net",         { NULL }, 66,    "tcp" },
-  { "sql*net",         { NULL }, 66,    "udp" },
-  { "bootps",          { NULL }, 67,    "tcp" },
-  { "bootps",          { NULL }, 67,    "udp" },
-  { "bootpc",          { NULL }, 68,    "tcp" },
-  { "bootpc",          { NULL }, 68,    "udp" },
-  { "tftp",            { NULL }, 69,    "tcp" },
-  { "tftp",            { NULL }, 69,    "udp" },
-  { "gopher",          { NULL }, 70,    "tcp" },
-  { "gopher",          { NULL }, 70,    "udp" },
-  { "netrjs-1",        { NULL }, 71,    "tcp" },
-  { "netrjs-1",        { NULL }, 71,    "udp" },
-  { "netrjs-2",        { NULL }, 72,    "tcp" },
-  { "netrjs-2",        { NULL }, 72,    "udp" },
-  { "netrjs-3",        { NULL }, 73,    "tcp" },
-  { "netrjs-3",        { NULL }, 73,    "udp" },
-  { "netrjs-4",        { NULL }, 74,    "tcp" },
-  { "netrjs-4",        { NULL }, 74,    "udp" },
-  { "deos",            { NULL }, 76,    "tcp" },
-  { "deos",            { NULL }, 76,    "udp" },
-  { "vettcp",          { NULL }, 78,    "tcp" },
-  { "vettcp",          { NULL }, 78,    "udp" },
-  { "finger",          { NULL }, 79,    "tcp" },
-  { "finger",          { NULL }, 79,    "udp" },
-  { "http",            { NULL }, 80,    "tcp" },
-  { "http",            { NULL }, 80,    "udp" },
-  { "www",             { NULL }, 80,    "tcp" },
-  { "www",             { NULL }, 80,    "udp" },
-  { "www-http",        { NULL }, 80,    "tcp" },
-  { "www-http",        { NULL }, 80,    "udp" },
-  { "http",            { NULL }, 80,    "sctp"},
-  { "xfer",            { NULL }, 82,    "tcp" },
-  { "xfer",            { NULL }, 82,    "udp" },
-  { "mit-ml-dev",      { NULL }, 83,    "tcp" },
-  { "mit-ml-dev",      { NULL }, 83,    "udp" },
-  { "ctf",             { NULL }, 84,    "tcp" },
-  { "ctf",             { NULL }, 84,    "udp" },
-  { "mit-ml-dev",      { NULL }, 85,    "tcp" },
-  { "mit-ml-dev",      { NULL }, 85,    "udp" },
-  { "mfcobol",         { NULL }, 86,    "tcp" },
-  { "mfcobol",         { NULL }, 86,    "udp" },
-  { "kerberos",        { NULL }, 88,    "tcp" },
-  { "kerberos",        { NULL }, 88,    "udp" },
-  { "su-mit-tg",       { NULL }, 89,    "tcp" },
-  { "su-mit-tg",       { NULL }, 89,    "udp" },
-  { "dnsix",           { NULL }, 90,    "tcp" },
-  { "dnsix",           { NULL }, 90,    "udp" },
-  { "mit-dov",         { NULL }, 91,    "tcp" },
-  { "mit-dov",         { NULL }, 91,    "udp" },
-  { "npp",             { NULL }, 92,    "tcp" },
-  { "npp",             { NULL }, 92,    "udp" },
-  { "dcp",             { NULL }, 93,    "tcp" },
-  { "dcp",             { NULL }, 93,    "udp" },
-  { "objcall",         { NULL }, 94,    "tcp" },
-  { "objcall",         { NULL }, 94,    "udp" },
-  { "supdup",          { NULL }, 95,    "tcp" },
-  { "supdup",          { NULL }, 95,    "udp" },
-  { "dixie",           { NULL }, 96,    "tcp" },
-  { "dixie",           { NULL }, 96,    "udp" },
-  { "swift-rvf",       { NULL }, 97,    "tcp" },
-  { "swift-rvf",       { NULL }, 97,    "udp" },
-  { "tacnews",         { NULL }, 98,    "tcp" },
-  { "tacnews",         { NULL }, 98,    "udp" },
-  { "metagram",        { NULL }, 99,    "tcp" },
-  { "metagram",        { NULL }, 99,    "udp" },
-  { "newacct",         { NULL }, 100,   "tcp" },
-  { "hostname",        { NULL }, 101,   "tcp" },
-  { "hostname",        { NULL }, 101,   "udp" },
-  { "iso-tsap",        { NULL }, 102,   "tcp" },
-  { "iso-tsap",        { NULL }, 102,   "udp" },
-  { "gppitnp",         { NULL }, 103,   "tcp" },
-  { "gppitnp",         { NULL }, 103,   "udp" },
-  { "acr-nema",        { NULL }, 104,   "tcp" },
-  { "acr-nema",        { NULL }, 104,   "udp" },
-  { "cso",             { NULL }, 105,   "tcp" },
-  { "cso",             { NULL }, 105,   "udp" },
-  { "csnet-ns",        { NULL }, 105,   "tcp" },
-  { "csnet-ns",        { NULL }, 105,   "udp" },
-  { "3com-tsmux",      { NULL }, 106,   "tcp" },
-  { "3com-tsmux",      { NULL }, 106,   "udp" },
-  { "rtelnet",         { NULL }, 107,   "tcp" },
-  { "rtelnet",         { NULL }, 107,   "udp" },
-  { "snagas",          { NULL }, 108,   "tcp" },
-  { "snagas",          { NULL }, 108,   "udp" },
-  { "pop2",            { NULL }, 109,   "tcp" },
-  { "pop2",            { NULL }, 109,   "udp" },
-  { "pop3",            { NULL }, 110,   "tcp" },
-  { "pop3",            { NULL }, 110,   "udp" },
-  { "sunrpc",          { NULL }, 111,   "tcp" },
-  { "sunrpc",          { NULL }, 111,   "udp" },
-  { "mcidas",          { NULL }, 112,   "tcp" },
-  { "mcidas",          { NULL }, 112,   "udp" },
-  { "ident",           { NULL }, 113,   "tcp" },
-  { "auth",            { NULL }, 113,   "tcp" },
-  { "auth",            { NULL }, 113,   "udp" },
-  { "sftp",            { NULL }, 115,   "tcp" },
-  { "sftp",            { NULL }, 115,   "udp" },
-  { "ansanotify",      { NULL }, 116,   "tcp" },
-  { "ansanotify",      { NULL }, 116,   "udp" },
-  { "uucp-path",       { NULL }, 117,   "tcp" },
-  { "uucp-path",       { NULL }, 117,   "udp" },
-  { "sqlserv",         { NULL }, 118,   "tcp" },
-  { "sqlserv",         { NULL }, 118,   "udp" },
-  { "nntp",            { NULL }, 119,   "tcp" },
-  { "nntp",            { NULL }, 119,   "udp" },
-  { "cfdptkt",         { NULL }, 120,   "tcp" },
-  { "cfdptkt",         { NULL }, 120,   "udp" },
-  { "erpc",            { NULL }, 121,   "tcp" },
-  { "erpc",            { NULL }, 121,   "udp" },
-  { "smakynet",        { NULL }, 122,   "tcp" },
-  { "smakynet",        { NULL }, 122,   "udp" },
-  { "ntp",             { NULL }, 123,   "tcp" },
-  { "ntp",             { NULL }, 123,   "udp" },
-  { "ansatrader",      { NULL }, 124,   "tcp" },
-  { "ansatrader",      { NULL }, 124,   "udp" },
-  { "locus-map",       { NULL }, 125,   "tcp" },
-  { "locus-map",       { NULL }, 125,   "udp" },
-  { "nxedit",          { NULL }, 126,   "tcp" },
-  { "nxedit",          { NULL }, 126,   "udp" },
-  { "locus-con",       { NULL }, 127,   "tcp" },
-  { "locus-con",       { NULL }, 127,   "udp" },
-  { "gss-xlicen",      { NULL }, 128,   "tcp" },
-  { "gss-xlicen",      { NULL }, 128,   "udp" },
-  { "pwdgen",          { NULL }, 129,   "tcp" },
-  { "pwdgen",          { NULL }, 129,   "udp" },
-  { "cisco-fna",       { NULL }, 130,   "tcp" },
-  { "cisco-fna",       { NULL }, 130,   "udp" },
-  { "cisco-tna",       { NULL }, 131,   "tcp" },
-  { "cisco-tna",       { NULL }, 131,   "udp" },
-  { "cisco-sys",       { NULL }, 132,   "tcp" },
-  { "cisco-sys",       { NULL }, 132,   "udp" },
-  { "statsrv",         { NULL }, 133,   "tcp" },
-  { "statsrv",         { NULL }, 133,   "udp" },
-  { "ingres-net",      { NULL }, 134,   "tcp" },
-  { "ingres-net",      { NULL }, 134,   "udp" },
-  { "epmap",           { NULL }, 135,   "tcp" },
-  { "epmap",           { NULL }, 135,   "udp" },
-  { "profile",         { NULL }, 136,   "tcp" },
-  { "profile",         { NULL }, 136,   "udp" },
-  { "netbios-ns",      { NULL }, 137,   "tcp" },
-  { "netbios-ns",      { NULL }, 137,   "udp" },
-  { "netbios-dgm",     { NULL }, 138,   "tcp" },
-  { "netbios-dgm",     { NULL }, 138,   "udp" },
-  { "netbios-ssn",     { NULL }, 139,   "tcp" },
-  { "netbios-ssn",     { NULL }, 139,   "udp" },
-  { "emfis-data",      { NULL }, 140,   "tcp" },
-  { "emfis-data",      { NULL }, 140,   "udp" },
-  { "emfis-cntl",      { NULL }, 141,   "tcp" },
-  { "emfis-cntl",      { NULL }, 141,   "udp" },
-  { "bl-idm",          { NULL }, 142,   "tcp" },
-  { "bl-idm",          { NULL }, 142,   "udp" },
-  { "imap",            { NULL }, 143,   "tcp" },
-  { "imap",            { NULL }, 143,   "udp" },
-  { "uma",             { NULL }, 144,   "tcp" },
-  { "uma",             { NULL }, 144,   "udp" },
-  { "uaac",            { NULL }, 145,   "tcp" },
-  { "uaac",            { NULL }, 145,   "udp" },
-  { "iso-tp0",         { NULL }, 146,   "tcp" },
-  { "iso-tp0",         { NULL }, 146,   "udp" },
-  { "iso-ip",          { NULL }, 147,   "tcp" },
-  { "iso-ip",          { NULL }, 147,   "udp" },
-  { "jargon",          { NULL }, 148,   "tcp" },
-  { "jargon",          { NULL }, 148,   "udp" },
-  { "aed-512",         { NULL }, 149,   "tcp" },
-  { "aed-512",         { NULL }, 149,   "udp" },
-  { "sql-net",         { NULL }, 150,   "tcp" },
-  { "sql-net",         { NULL }, 150,   "udp" },
-  { "hems",            { NULL }, 151,   "tcp" },
-  { "hems",            { NULL }, 151,   "udp" },
-  { "bftp",            { NULL }, 152,   "tcp" },
-  { "bftp",            { NULL }, 152,   "udp" },
-  { "sgmp",            { NULL }, 153,   "tcp" },
-  { "sgmp",            { NULL }, 153,   "udp" },
-  { "netsc-prod",      { NULL }, 154,   "tcp" },
-  { "netsc-prod",      { NULL }, 154,   "udp" },
-  { "netsc-dev",       { NULL }, 155,   "tcp" },
-  { "netsc-dev",       { NULL }, 155,   "udp" },
-  { "sqlsrv",          { NULL }, 156,   "tcp" },
-  { "sqlsrv",          { NULL }, 156,   "udp" },
-  { "knet-cmp",        { NULL }, 157,   "tcp" },
-  { "knet-cmp",        { NULL }, 157,   "udp" },
-  { "pcmail-srv",      { NULL }, 158,   "tcp" },
-  { "pcmail-srv",      { NULL }, 158,   "udp" },
-  { "nss-routing",     { NULL }, 159,   "tcp" },
-  { "nss-routing",     { NULL }, 159,   "udp" },
-  { "sgmp-traps",      { NULL }, 160,   "tcp" },
-  { "sgmp-traps",      { NULL }, 160,   "udp" },
-  { "snmp",            { NULL }, 161,   "tcp" },
-  { "snmp",            { NULL }, 161,   "udp" },
-  { "snmptrap",        { NULL }, 162,   "tcp" },
-  { "snmptrap",        { NULL }, 162,   "udp" },
-  { "cmip-man",        { NULL }, 163,   "tcp" },
-  { "cmip-man",        { NULL }, 163,   "udp" },
-  { "cmip-agent",      { NULL }, 164,   "tcp" },
-  { "cmip-agent",      { NULL }, 164,   "udp" },
-  { "xns-courier",     { NULL }, 165,   "tcp" },
-  { "xns-courier",     { NULL }, 165,   "udp" },
-  { "s-net",           { NULL }, 166,   "tcp" },
-  { "s-net",           { NULL }, 166,   "udp" },
-  { "namp",            { NULL }, 167,   "tcp" },
-  { "namp",            { NULL }, 167,   "udp" },
-  { "rsvd",            { NULL }, 168,   "tcp" },
-  { "rsvd",            { NULL }, 168,   "udp" },
-  { "send",            { NULL }, 169,   "tcp" },
-  { "send",            { NULL }, 169,   "udp" },
-  { "print-srv",       { NULL }, 170,   "tcp" },
-  { "print-srv",       { NULL }, 170,   "udp" },
-  { "multiplex",       { NULL }, 171,   "tcp" },
-  { "multiplex",       { NULL }, 171,   "udp" },
-  { "cl/1",            { NULL }, 172,   "tcp" },
-  { "cl/1",            { NULL }, 172,   "udp" },
-  { "xyplex-mux",      { NULL }, 173,   "tcp" },
-  { "xyplex-mux",      { NULL }, 173,   "udp" },
-  { "mailq",           { NULL }, 174,   "tcp" },
-  { "mailq",           { NULL }, 174,   "udp" },
-  { "vmnet",           { NULL }, 175,   "tcp" },
-  { "vmnet",           { NULL }, 175,   "udp" },
-  { "genrad-mux",      { NULL }, 176,   "tcp" },
-  { "genrad-mux",      { NULL }, 176,   "udp" },
-  { "xdmcp",           { NULL }, 177,   "tcp" },
-  { "xdmcp",           { NULL }, 177,   "udp" },
-  { "nextstep",        { NULL }, 178,   "tcp" },
-  { "nextstep",        { NULL }, 178,   "udp" },
-  { "bgp",             { NULL }, 179,   "tcp" },
-  { "bgp",             { NULL }, 179,   "udp" },
-  { "bgp",             { NULL }, 179,   "sctp"},
-  { "ris",             { NULL }, 180,   "tcp" },
-  { "ris",             { NULL }, 180,   "udp" },
-  { "unify",           { NULL }, 181,   "tcp" },
-  { "unify",           { NULL }, 181,   "udp" },
-  { "audit",           { NULL }, 182,   "tcp" },
-  { "audit",           { NULL }, 182,   "udp" },
-  { "ocbinder",        { NULL }, 183,   "tcp" },
-  { "ocbinder",        { NULL }, 183,   "udp" },
-  { "ocserver",        { NULL }, 184,   "tcp" },
-  { "ocserver",        { NULL }, 184,   "udp" },
-  { "remote-kis",      { NULL }, 185,   "tcp" },
-  { "remote-kis",      { NULL }, 185,   "udp" },
-  { "kis",             { NULL }, 186,   "tcp" },
-  { "kis",             { NULL }, 186,   "udp" },
-  { "aci",             { NULL }, 187,   "tcp" },
-  { "aci",             { NULL }, 187,   "udp" },
-  { "mumps",           { NULL }, 188,   "tcp" },
-  { "mumps",           { NULL }, 188,   "udp" },
-  { "qft",             { NULL }, 189,   "tcp" },
-  { "qft",             { NULL }, 189,   "udp" },
-  { "gacp",            { NULL }, 190,   "tcp" },
-  { "gacp",            { NULL }, 190,   "udp" },
-  { "prospero",        { NULL }, 191,   "tcp" },
-  { "prospero",        { NULL }, 191,   "udp" },
-  { "osu-nms",         { NULL }, 192,   "tcp" },
-  { "osu-nms",         { NULL }, 192,   "udp" },
-  { "srmp",            { NULL }, 193,   "tcp" },
-  { "srmp",            { NULL }, 193,   "udp" },
-  { "irc",             { NULL }, 194,   "tcp" },
-  { "irc",             { NULL }, 194,   "udp" },
-  { "dn6-nlm-aud",     { NULL }, 195,   "tcp" },
-  { "dn6-nlm-aud",     { NULL }, 195,   "udp" },
-  { "dn6-smm-red",     { NULL }, 196,   "tcp" },
-  { "dn6-smm-red",     { NULL }, 196,   "udp" },
-  { "dls",             { NULL }, 197,   "tcp" },
-  { "dls",             { NULL }, 197,   "udp" },
-  { "dls-mon",         { NULL }, 198,   "tcp" },
-  { "dls-mon",         { NULL }, 198,   "udp" },
-  { "smux",            { NULL }, 199,   "tcp" },
-  { "smux",            { NULL }, 199,   "udp" },
-  { "src",             { NULL }, 200,   "tcp" },
-  { "src",             { NULL }, 200,   "udp" },
-  { "at-rtmp",         { NULL }, 201,   "tcp" },
-  { "at-rtmp",         { NULL }, 201,   "udp" },
-  { "at-nbp",          { NULL }, 202,   "tcp" },
-  { "at-nbp",          { NULL }, 202,   "udp" },
-  { "at-3",            { NULL }, 203,   "tcp" },
-  { "at-3",            { NULL }, 203,   "udp" },
-  { "at-echo",         { NULL }, 204,   "tcp" },
-  { "at-echo",         { NULL }, 204,   "udp" },
-  { "at-5",            { NULL }, 205,   "tcp" },
-  { "at-5",            { NULL }, 205,   "udp" },
-  { "at-zis",          { NULL }, 206,   "tcp" },
-  { "at-zis",          { NULL }, 206,   "udp" },
-  { "at-7",            { NULL }, 207,   "tcp" },
-  { "at-7",            { NULL }, 207,   "udp" },
-  { "at-8",            { NULL }, 208,   "tcp" },
-  { "at-8",            { NULL }, 208,   "udp" },
-  { "qmtp",            { NULL }, 209,   "tcp" },
-  { "qmtp",            { NULL }, 209,   "udp" },
-  { "z39.50",          { NULL }, 210,   "tcp" },
-  { "z39.50",          { NULL }, 210,   "udp" },
-  { "914c/g",          { NULL }, 211,   "tcp" },
-  { "914c/g",          { NULL }, 211,   "udp" },
-  { "anet",            { NULL }, 212,   "tcp" },
-  { "anet",            { NULL }, 212,   "udp" },
-  { "ipx",             { NULL }, 213,   "tcp" },
-  { "ipx",             { NULL }, 213,   "udp" },
-  { "vmpwscs",         { NULL }, 214,   "tcp" },
-  { "vmpwscs",         { NULL }, 214,   "udp" },
-  { "softpc",          { NULL }, 215,   "tcp" },
-  { "softpc",          { NULL }, 215,   "udp" },
-  { "CAIlic",          { NULL }, 216,   "tcp" },
-  { "CAIlic",          { NULL }, 216,   "udp" },
-  { "dbase",           { NULL }, 217,   "tcp" },
-  { "dbase",           { NULL }, 217,   "udp" },
-  { "mpp",             { NULL }, 218,   "tcp" },
-  { "mpp",             { NULL }, 218,   "udp" },
-  { "uarps",           { NULL }, 219,   "tcp" },
-  { "uarps",           { NULL }, 219,   "udp" },
-  { "imap3",           { NULL }, 220,   "tcp" },
-  { "imap3",           { NULL }, 220,   "udp" },
-  { "fln-spx",         { NULL }, 221,   "tcp" },
-  { "fln-spx",         { NULL }, 221,   "udp" },
-  { "rsh-spx",         { NULL }, 222,   "tcp" },
-  { "rsh-spx",         { NULL }, 222,   "udp" },
-  { "cdc",             { NULL }, 223,   "tcp" },
-  { "cdc",             { NULL }, 223,   "udp" },
-  { "masqdialer",      { NULL }, 224,   "tcp" },
-  { "masqdialer",      { NULL }, 224,   "udp" },
-  { "direct",          { NULL }, 242,   "tcp" },
-  { "direct",          { NULL }, 242,   "udp" },
-  { "sur-meas",        { NULL }, 243,   "tcp" },
-  { "sur-meas",        { NULL }, 243,   "udp" },
-  { "inbusiness",      { NULL }, 244,   "tcp" },
-  { "inbusiness",      { NULL }, 244,   "udp" },
-  { "link",            { NULL }, 245,   "tcp" },
-  { "link",            { NULL }, 245,   "udp" },
-  { "dsp3270",         { NULL }, 246,   "tcp" },
-  { "dsp3270",         { NULL }, 246,   "udp" },
-  { "subntbcst_tftp",  { NULL }, 247,   "tcp" },
-  { "subntbcst_tftp",  { NULL }, 247,   "udp" },
-  { "bhfhs",           { NULL }, 248,   "tcp" },
-  { "bhfhs",           { NULL }, 248,   "udp" },
-  { "rap",             { NULL }, 256,   "tcp" },
-  { "rap",             { NULL }, 256,   "udp" },
-  { "set",             { NULL }, 257,   "tcp" },
-  { "set",             { NULL }, 257,   "udp" },
-  { "esro-gen",        { NULL }, 259,   "tcp" },
-  { "esro-gen",        { NULL }, 259,   "udp" },
-  { "openport",        { NULL }, 260,   "tcp" },
-  { "openport",        { NULL }, 260,   "udp" },
-  { "nsiiops",         { NULL }, 261,   "tcp" },
-  { "nsiiops",         { NULL }, 261,   "udp" },
-  { "arcisdms",        { NULL }, 262,   "tcp" },
-  { "arcisdms",        { NULL }, 262,   "udp" },
-  { "hdap",            { NULL }, 263,   "tcp" },
-  { "hdap",            { NULL }, 263,   "udp" },
-  { "bgmp",            { NULL }, 264,   "tcp" },
-  { "bgmp",            { NULL }, 264,   "udp" },
-  { "x-bone-ctl",      { NULL }, 265,   "tcp" },
-  { "x-bone-ctl",      { NULL }, 265,   "udp" },
-  { "sst",             { NULL }, 266,   "tcp" },
-  { "sst",             { NULL }, 266,   "udp" },
-  { "td-service",      { NULL }, 267,   "tcp" },
-  { "td-service",      { NULL }, 267,   "udp" },
-  { "td-replica",      { NULL }, 268,   "tcp" },
-  { "td-replica",      { NULL }, 268,   "udp" },
-  { "manet",           { NULL }, 269,   "tcp" },
-  { "manet",           { NULL }, 269,   "udp" },
-  { "gist",            { NULL }, 270,   "udp" },
-  { "http-mgmt",       { NULL }, 280,   "tcp" },
-  { "http-mgmt",       { NULL }, 280,   "udp" },
-  { "personal-link",   { NULL }, 281,   "tcp" },
-  { "personal-link",   { NULL }, 281,   "udp" },
-  { "cableport-ax",    { NULL }, 282,   "tcp" },
-  { "cableport-ax",    { NULL }, 282,   "udp" },
-  { "rescap",          { NULL }, 283,   "tcp" },
-  { "rescap",          { NULL }, 283,   "udp" },
-  { "corerjd",         { NULL }, 284,   "tcp" },
-  { "corerjd",         { NULL }, 284,   "udp" },
-  { "fxp",             { NULL }, 286,   "tcp" },
-  { "fxp",             { NULL }, 286,   "udp" },
-  { "k-block",         { NULL }, 287,   "tcp" },
-  { "k-block",         { NULL }, 287,   "udp" },
-  { "novastorbakcup",  { NULL }, 308,   "tcp" },
-  { "novastorbakcup",  { NULL }, 308,   "udp" },
-  { "entrusttime",     { NULL }, 309,   "tcp" },
-  { "entrusttime",     { NULL }, 309,   "udp" },
-  { "bhmds",           { NULL }, 310,   "tcp" },
-  { "bhmds",           { NULL }, 310,   "udp" },
-  { "asip-webadmin",   { NULL }, 311,   "tcp" },
-  { "asip-webadmin",   { NULL }, 311,   "udp" },
-  { "vslmp",           { NULL }, 312,   "tcp" },
-  { "vslmp",           { NULL }, 312,   "udp" },
-  { "magenta-logic",   { NULL }, 313,   "tcp" },
-  { "magenta-logic",   { NULL }, 313,   "udp" },
-  { "opalis-robot",    { NULL }, 314,   "tcp" },
-  { "opalis-robot",    { NULL }, 314,   "udp" },
-  { "dpsi",            { NULL }, 315,   "tcp" },
-  { "dpsi",            { NULL }, 315,   "udp" },
-  { "decauth",         { NULL }, 316,   "tcp" },
-  { "decauth",         { NULL }, 316,   "udp" },
-  { "zannet",          { NULL }, 317,   "tcp" },
-  { "zannet",          { NULL }, 317,   "udp" },
-  { "pkix-timestamp",  { NULL }, 318,   "tcp" },
-  { "pkix-timestamp",  { NULL }, 318,   "udp" },
-  { "ptp-event",       { NULL }, 319,   "tcp" },
-  { "ptp-event",       { NULL }, 319,   "udp" },
-  { "ptp-general",     { NULL }, 320,   "tcp" },
-  { "ptp-general",     { NULL }, 320,   "udp" },
-  { "pip",             { NULL }, 321,   "tcp" },
-  { "pip",             { NULL }, 321,   "udp" },
-  { "rtsps",           { NULL }, 322,   "tcp" },
-  { "rtsps",           { NULL }, 322,   "udp" },
-  { "texar",           { NULL }, 333,   "tcp" },
-  { "texar",           { NULL }, 333,   "udp" },
-  { "pdap",            { NULL }, 344,   "tcp" },
-  { "pdap",            { NULL }, 344,   "udp" },
-  { "pawserv",         { NULL }, 345,   "tcp" },
-  { "pawserv",         { NULL }, 345,   "udp" },
-  { "zserv",           { NULL }, 346,   "tcp" },
-  { "zserv",           { NULL }, 346,   "udp" },
-  { "fatserv",         { NULL }, 347,   "tcp" },
-  { "fatserv",         { NULL }, 347,   "udp" },
-  { "csi-sgwp",        { NULL }, 348,   "tcp" },
-  { "csi-sgwp",        { NULL }, 348,   "udp" },
-  { "mftp",            { NULL }, 349,   "tcp" },
-  { "mftp",            { NULL }, 349,   "udp" },
-  { "matip-type-a",    { NULL }, 350,   "tcp" },
-  { "matip-type-a",    { NULL }, 350,   "udp" },
-  { "matip-type-b",    { NULL }, 351,   "tcp" },
-  { "matip-type-b",    { NULL }, 351,   "udp" },
-  { "bhoetty",         { NULL }, 351,   "tcp" },
-  { "bhoetty",         { NULL }, 351,   "udp" },
-  { "dtag-ste-sb",     { NULL }, 352,   "tcp" },
-  { "dtag-ste-sb",     { NULL }, 352,   "udp" },
-  { "bhoedap4",        { NULL }, 352,   "tcp" },
-  { "bhoedap4",        { NULL }, 352,   "udp" },
-  { "ndsauth",         { NULL }, 353,   "tcp" },
-  { "ndsauth",         { NULL }, 353,   "udp" },
-  { "bh611",           { NULL }, 354,   "tcp" },
-  { "bh611",           { NULL }, 354,   "udp" },
-  { "datex-asn",       { NULL }, 355,   "tcp" },
-  { "datex-asn",       { NULL }, 355,   "udp" },
-  { "cloanto-net-1",   { NULL }, 356,   "tcp" },
-  { "cloanto-net-1",   { NULL }, 356,   "udp" },
-  { "bhevent",         { NULL }, 357,   "tcp" },
-  { "bhevent",         { NULL }, 357,   "udp" },
-  { "shrinkwrap",      { NULL }, 358,   "tcp" },
-  { "shrinkwrap",      { NULL }, 358,   "udp" },
-  { "nsrmp",           { NULL }, 359,   "tcp" },
-  { "nsrmp",           { NULL }, 359,   "udp" },
-  { "scoi2odialog",    { NULL }, 360,   "tcp" },
-  { "scoi2odialog",    { NULL }, 360,   "udp" },
-  { "semantix",        { NULL }, 361,   "tcp" },
-  { "semantix",        { NULL }, 361,   "udp" },
-  { "srssend",         { NULL }, 362,   "tcp" },
-  { "srssend",         { NULL }, 362,   "udp" },
-  { "rsvp_tunnel",     { NULL }, 363,   "tcp" },
-  { "rsvp_tunnel",     { NULL }, 363,   "udp" },
-  { "aurora-cmgr",     { NULL }, 364,   "tcp" },
-  { "aurora-cmgr",     { NULL }, 364,   "udp" },
-  { "dtk",             { NULL }, 365,   "tcp" },
-  { "dtk",             { NULL }, 365,   "udp" },
-  { "odmr",            { NULL }, 366,   "tcp" },
-  { "odmr",            { NULL }, 366,   "udp" },
-  { "mortgageware",    { NULL }, 367,   "tcp" },
-  { "mortgageware",    { NULL }, 367,   "udp" },
-  { "qbikgdp",         { NULL }, 368,   "tcp" },
-  { "qbikgdp",         { NULL }, 368,   "udp" },
-  { "rpc2portmap",     { NULL }, 369,   "tcp" },
-  { "rpc2portmap",     { NULL }, 369,   "udp" },
-  { "codaauth2",       { NULL }, 370,   "tcp" },
-  { "codaauth2",       { NULL }, 370,   "udp" },
-  { "clearcase",       { NULL }, 371,   "tcp" },
-  { "clearcase",       { NULL }, 371,   "udp" },
-  { "ulistproc",       { NULL }, 372,   "tcp" },
-  { "ulistproc",       { NULL }, 372,   "udp" },
-  { "legent-1",        { NULL }, 373,   "tcp" },
-  { "legent-1",        { NULL }, 373,   "udp" },
-  { "legent-2",        { NULL }, 374,   "tcp" },
-  { "legent-2",        { NULL }, 374,   "udp" },
-  { "hassle",          { NULL }, 375,   "tcp" },
-  { "hassle",          { NULL }, 375,   "udp" },
-  { "nip",             { NULL }, 376,   "tcp" },
-  { "nip",             { NULL }, 376,   "udp" },
-  { "tnETOS",          { NULL }, 377,   "tcp" },
-  { "tnETOS",          { NULL }, 377,   "udp" },
-  { "dsETOS",          { NULL }, 378,   "tcp" },
-  { "dsETOS",          { NULL }, 378,   "udp" },
-  { "is99c",           { NULL }, 379,   "tcp" },
-  { "is99c",           { NULL }, 379,   "udp" },
-  { "is99s",           { NULL }, 380,   "tcp" },
-  { "is99s",           { NULL }, 380,   "udp" },
-  { "hp-collector",    { NULL }, 381,   "tcp" },
-  { "hp-collector",    { NULL }, 381,   "udp" },
-  { "hp-managed-node", { NULL }, 382,   "tcp" },
-  { "hp-managed-node", { NULL }, 382,   "udp" },
-  { "hp-alarm-mgr",    { NULL }, 383,   "tcp" },
-  { "hp-alarm-mgr",    { NULL }, 383,   "udp" },
-  { "arns",            { NULL }, 384,   "tcp" },
-  { "arns",            { NULL }, 384,   "udp" },
-  { "ibm-app",         { NULL }, 385,   "tcp" },
-  { "ibm-app",         { NULL }, 385,   "udp" },
-  { "asa",             { NULL }, 386,   "tcp" },
-  { "asa",             { NULL }, 386,   "udp" },
-  { "aurp",            { NULL }, 387,   "tcp" },
-  { "aurp",            { NULL }, 387,   "udp" },
-  { "unidata-ldm",     { NULL }, 388,   "tcp" },
-  { "unidata-ldm",     { NULL }, 388,   "udp" },
-  { "ldap",            { NULL }, 389,   "tcp" },
-  { "ldap",            { NULL }, 389,   "udp" },
-  { "uis",             { NULL }, 390,   "tcp" },
-  { "uis",             { NULL }, 390,   "udp" },
-  { "synotics-relay",  { NULL }, 391,   "tcp" },
-  { "synotics-relay",  { NULL }, 391,   "udp" },
-  { "synotics-broker", { NULL }, 392,   "tcp" },
-  { "synotics-broker", { NULL }, 392,   "udp" },
-  { "meta5",           { NULL }, 393,   "tcp" },
-  { "meta5",           { NULL }, 393,   "udp" },
-  { "embl-ndt",        { NULL }, 394,   "tcp" },
-  { "embl-ndt",        { NULL }, 394,   "udp" },
-  { "netcp",           { NULL }, 395,   "tcp" },
-  { "netcp",           { NULL }, 395,   "udp" },
-  { "netware-ip",      { NULL }, 396,   "tcp" },
-  { "netware-ip",      { NULL }, 396,   "udp" },
-  { "mptn",            { NULL }, 397,   "tcp" },
-  { "mptn",            { NULL }, 397,   "udp" },
-  { "kryptolan",       { NULL }, 398,   "tcp" },
-  { "kryptolan",       { NULL }, 398,   "udp" },
-  { "iso-tsap-c2",     { NULL }, 399,   "tcp" },
-  { "iso-tsap-c2",     { NULL }, 399,   "udp" },
-  { "osb-sd",          { NULL }, 400,   "tcp" },
-  { "osb-sd",          { NULL }, 400,   "udp" },
-  { "ups",             { NULL }, 401,   "tcp" },
-  { "ups",             { NULL }, 401,   "udp" },
-  { "genie",           { NULL }, 402,   "tcp" },
-  { "genie",           { NULL }, 402,   "udp" },
-  { "decap",           { NULL }, 403,   "tcp" },
-  { "decap",           { NULL }, 403,   "udp" },
-  { "nced",            { NULL }, 404,   "tcp" },
-  { "nced",            { NULL }, 404,   "udp" },
-  { "ncld",            { NULL }, 405,   "tcp" },
-  { "ncld",            { NULL }, 405,   "udp" },
-  { "imsp",            { NULL }, 406,   "tcp" },
-  { "imsp",            { NULL }, 406,   "udp" },
-  { "timbuktu",        { NULL }, 407,   "tcp" },
-  { "timbuktu",        { NULL }, 407,   "udp" },
-  { "prm-sm",          { NULL }, 408,   "tcp" },
-  { "prm-sm",          { NULL }, 408,   "udp" },
-  { "prm-nm",          { NULL }, 409,   "tcp" },
-  { "prm-nm",          { NULL }, 409,   "udp" },
-  { "decladebug",      { NULL }, 410,   "tcp" },
-  { "decladebug",      { NULL }, 410,   "udp" },
-  { "rmt",             { NULL }, 411,   "tcp" },
-  { "rmt",             { NULL }, 411,   "udp" },
-  { "synoptics-trap",  { NULL }, 412,   "tcp" },
-  { "synoptics-trap",  { NULL }, 412,   "udp" },
-  { "smsp",            { NULL }, 413,   "tcp" },
-  { "smsp",            { NULL }, 413,   "udp" },
-  { "infoseek",        { NULL }, 414,   "tcp" },
-  { "infoseek",        { NULL }, 414,   "udp" },
-  { "bnet",            { NULL }, 415,   "tcp" },
-  { "bnet",            { NULL }, 415,   "udp" },
-  { "silverplatter",   { NULL }, 416,   "tcp" },
-  { "silverplatter",   { NULL }, 416,   "udp" },
-  { "onmux",           { NULL }, 417,   "tcp" },
-  { "onmux",           { NULL }, 417,   "udp" },
-  { "hyper-g",         { NULL }, 418,   "tcp" },
-  { "hyper-g",         { NULL }, 418,   "udp" },
-  { "ariel1",          { NULL }, 419,   "tcp" },
-  { "ariel1",          { NULL }, 419,   "udp" },
-  { "smpte",           { NULL }, 420,   "tcp" },
-  { "smpte",           { NULL }, 420,   "udp" },
-  { "ariel2",          { NULL }, 421,   "tcp" },
-  { "ariel2",          { NULL }, 421,   "udp" },
-  { "ariel3",          { NULL }, 422,   "tcp" },
-  { "ariel3",          { NULL }, 422,   "udp" },
-  { "opc-job-start",   { NULL }, 423,   "tcp" },
-  { "opc-job-start",   { NULL }, 423,   "udp" },
-  { "opc-job-track",   { NULL }, 424,   "tcp" },
-  { "opc-job-track",   { NULL }, 424,   "udp" },
-  { "icad-el",         { NULL }, 425,   "tcp" },
-  { "icad-el",         { NULL }, 425,   "udp" },
-  { "smartsdp",        { NULL }, 426,   "tcp" },
-  { "smartsdp",        { NULL }, 426,   "udp" },
-  { "svrloc",          { NULL }, 427,   "tcp" },
-  { "svrloc",          { NULL }, 427,   "udp" },
-  { "ocs_cmu",         { NULL }, 428,   "tcp" },
-  { "ocs_cmu",         { NULL }, 428,   "udp" },
-  { "ocs_amu",         { NULL }, 429,   "tcp" },
-  { "ocs_amu",         { NULL }, 429,   "udp" },
-  { "utmpsd",          { NULL }, 430,   "tcp" },
-  { "utmpsd",          { NULL }, 430,   "udp" },
-  { "utmpcd",          { NULL }, 431,   "tcp" },
-  { "utmpcd",          { NULL }, 431,   "udp" },
-  { "iasd",            { NULL }, 432,   "tcp" },
-  { "iasd",            { NULL }, 432,   "udp" },
-  { "nnsp",            { NULL }, 433,   "tcp" },
-  { "nnsp",            { NULL }, 433,   "udp" },
-  { "mobileip-agent",  { NULL }, 434,   "tcp" },
-  { "mobileip-agent",  { NULL }, 434,   "udp" },
-  { "mobilip-mn",      { NULL }, 435,   "tcp" },
-  { "mobilip-mn",      { NULL }, 435,   "udp" },
-  { "dna-cml",         { NULL }, 436,   "tcp" },
-  { "dna-cml",         { NULL }, 436,   "udp" },
-  { "comscm",          { NULL }, 437,   "tcp" },
-  { "comscm",          { NULL }, 437,   "udp" },
-  { "dsfgw",           { NULL }, 438,   "tcp" },
-  { "dsfgw",           { NULL }, 438,   "udp" },
-  { "dasp",            { NULL }, 439,   "tcp" },
-  { "dasp",            { NULL }, 439,   "udp" },
-  { "sgcp",            { NULL }, 440,   "tcp" },
-  { "sgcp",            { NULL }, 440,   "udp" },
-  { "decvms-sysmgt",   { NULL }, 441,   "tcp" },
-  { "decvms-sysmgt",   { NULL }, 441,   "udp" },
-  { "cvc_hostd",       { NULL }, 442,   "tcp" },
-  { "cvc_hostd",       { NULL }, 442,   "udp" },
-  { "https",           { NULL }, 443,   "tcp" },
-  { "https",           { NULL }, 443,   "udp" },
-  { "https",           { NULL }, 443,   "sctp"},
-  { "snpp",            { NULL }, 444,   "tcp" },
-  { "snpp",            { NULL }, 444,   "udp" },
-  { "microsoft-ds",    { NULL }, 445,   "tcp" },
-  { "microsoft-ds",    { NULL }, 445,   "udp" },
-  { "ddm-rdb",         { NULL }, 446,   "tcp" },
-  { "ddm-rdb",         { NULL }, 446,   "udp" },
-  { "ddm-dfm",         { NULL }, 447,   "tcp" },
-  { "ddm-dfm",         { NULL }, 447,   "udp" },
-  { "ddm-ssl",         { NULL }, 448,   "tcp" },
-  { "ddm-ssl",         { NULL }, 448,   "udp" },
-  { "as-servermap",    { NULL }, 449,   "tcp" },
-  { "as-servermap",    { NULL }, 449,   "udp" },
-  { "tserver",         { NULL }, 450,   "tcp" },
-  { "tserver",         { NULL }, 450,   "udp" },
-  { "sfs-smp-net",     { NULL }, 451,   "tcp" },
-  { "sfs-smp-net",     { NULL }, 451,   "udp" },
-  { "sfs-config",      { NULL }, 452,   "tcp" },
-  { "sfs-config",      { NULL }, 452,   "udp" },
-  { "creativeserver",  { NULL }, 453,   "tcp" },
-  { "creativeserver",  { NULL }, 453,   "udp" },
-  { "contentserver",   { NULL }, 454,   "tcp" },
-  { "contentserver",   { NULL }, 454,   "udp" },
-  { "creativepartnr",  { NULL }, 455,   "tcp" },
-  { "creativepartnr",  { NULL }, 455,   "udp" },
-  { "macon-tcp",       { NULL }, 456,   "tcp" },
-  { "macon-udp",       { NULL }, 456,   "udp" },
-  { "scohelp",         { NULL }, 457,   "tcp" },
-  { "scohelp",         { NULL }, 457,   "udp" },
-  { "appleqtc",        { NULL }, 458,   "tcp" },
-  { "appleqtc",        { NULL }, 458,   "udp" },
-  { "ampr-rcmd",       { NULL }, 459,   "tcp" },
-  { "ampr-rcmd",       { NULL }, 459,   "udp" },
-  { "skronk",          { NULL }, 460,   "tcp" },
-  { "skronk",          { NULL }, 460,   "udp" },
-  { "datasurfsrv",     { NULL }, 461,   "tcp" },
-  { "datasurfsrv",     { NULL }, 461,   "udp" },
-  { "datasurfsrvsec",  { NULL }, 462,   "tcp" },
-  { "datasurfsrvsec",  { NULL }, 462,   "udp" },
-  { "alpes",           { NULL }, 463,   "tcp" },
-  { "alpes",           { NULL }, 463,   "udp" },
-  { "kpasswd",         { NULL }, 464,   "tcp" },
-  { "kpasswd",         { NULL }, 464,   "udp" },
-  { "urd",             { NULL }, 465,   "tcp" },
-  { "igmpv3lite",      { NULL }, 465,   "udp" },
-  { "digital-vrc",     { NULL }, 466,   "tcp" },
-  { "digital-vrc",     { NULL }, 466,   "udp" },
-  { "mylex-mapd",      { NULL }, 467,   "tcp" },
-  { "mylex-mapd",      { NULL }, 467,   "udp" },
-  { "photuris",        { NULL }, 468,   "tcp" },
-  { "photuris",        { NULL }, 468,   "udp" },
-  { "rcp",             { NULL }, 469,   "tcp" },
-  { "rcp",             { NULL }, 469,   "udp" },
-  { "scx-proxy",       { NULL }, 470,   "tcp" },
-  { "scx-proxy",       { NULL }, 470,   "udp" },
-  { "mondex",          { NULL }, 471,   "tcp" },
-  { "mondex",          { NULL }, 471,   "udp" },
-  { "ljk-login",       { NULL }, 472,   "tcp" },
-  { "ljk-login",       { NULL }, 472,   "udp" },
-  { "hybrid-pop",      { NULL }, 473,   "tcp" },
-  { "hybrid-pop",      { NULL }, 473,   "udp" },
-  { "tn-tl-w1",        { NULL }, 474,   "tcp" },
-  { "tn-tl-w2",        { NULL }, 474,   "udp" },
-  { "tcpnethaspsrv",   { NULL }, 475,   "tcp" },
-  { "tcpnethaspsrv",   { NULL }, 475,   "udp" },
-  { "tn-tl-fd1",       { NULL }, 476,   "tcp" },
-  { "tn-tl-fd1",       { NULL }, 476,   "udp" },
-  { "ss7ns",           { NULL }, 477,   "tcp" },
-  { "ss7ns",           { NULL }, 477,   "udp" },
-  { "spsc",            { NULL }, 478,   "tcp" },
-  { "spsc",            { NULL }, 478,   "udp" },
-  { "iafserver",       { NULL }, 479,   "tcp" },
-  { "iafserver",       { NULL }, 479,   "udp" },
-  { "iafdbase",        { NULL }, 480,   "tcp" },
-  { "iafdbase",        { NULL }, 480,   "udp" },
-  { "ph",              { NULL }, 481,   "tcp" },
-  { "ph",              { NULL }, 481,   "udp" },
-  { "bgs-nsi",         { NULL }, 482,   "tcp" },
-  { "bgs-nsi",         { NULL }, 482,   "udp" },
-  { "ulpnet",          { NULL }, 483,   "tcp" },
-  { "ulpnet",          { NULL }, 483,   "udp" },
-  { "integra-sme",     { NULL }, 484,   "tcp" },
-  { "integra-sme",     { NULL }, 484,   "udp" },
-  { "powerburst",      { NULL }, 485,   "tcp" },
-  { "powerburst",      { NULL }, 485,   "udp" },
-  { "avian",           { NULL }, 486,   "tcp" },
-  { "avian",           { NULL }, 486,   "udp" },
-  { "saft",            { NULL }, 487,   "tcp" },
-  { "saft",            { NULL }, 487,   "udp" },
-  { "gss-http",        { NULL }, 488,   "tcp" },
-  { "gss-http",        { NULL }, 488,   "udp" },
-  { "nest-protocol",   { NULL }, 489,   "tcp" },
-  { "nest-protocol",   { NULL }, 489,   "udp" },
-  { "micom-pfs",       { NULL }, 490,   "tcp" },
-  { "micom-pfs",       { NULL }, 490,   "udp" },
-  { "go-login",        { NULL }, 491,   "tcp" },
-  { "go-login",        { NULL }, 491,   "udp" },
-  { "ticf-1",          { NULL }, 492,   "tcp" },
-  { "ticf-1",          { NULL }, 492,   "udp" },
-  { "ticf-2",          { NULL }, 493,   "tcp" },
-  { "ticf-2",          { NULL }, 493,   "udp" },
-  { "pov-ray",         { NULL }, 494,   "tcp" },
-  { "pov-ray",         { NULL }, 494,   "udp" },
-  { "intecourier",     { NULL }, 495,   "tcp" },
-  { "intecourier",     { NULL }, 495,   "udp" },
-  { "pim-rp-disc",     { NULL }, 496,   "tcp" },
-  { "pim-rp-disc",     { NULL }, 496,   "udp" },
-  { "dantz",           { NULL }, 497,   "tcp" },
-  { "dantz",           { NULL }, 497,   "udp" },
-  { "siam",            { NULL }, 498,   "tcp" },
-  { "siam",            { NULL }, 498,   "udp" },
-  { "iso-ill",         { NULL }, 499,   "tcp" },
-  { "iso-ill",         { NULL }, 499,   "udp" },
-  { "isakmp",          { NULL }, 500,   "tcp" },
-  { "isakmp",          { NULL }, 500,   "udp" },
-  { "stmf",            { NULL }, 501,   "tcp" },
-  { "stmf",            { NULL }, 501,   "udp" },
-  { "asa-appl-proto",  { NULL }, 502,   "tcp" },
-  { "asa-appl-proto",  { NULL }, 502,   "udp" },
-  { "intrinsa",        { NULL }, 503,   "tcp" },
-  { "intrinsa",        { NULL }, 503,   "udp" },
-  { "citadel",         { NULL }, 504,   "tcp" },
-  { "citadel",         { NULL }, 504,   "udp" },
-  { "mailbox-lm",      { NULL }, 505,   "tcp" },
-  { "mailbox-lm",      { NULL }, 505,   "udp" },
-  { "ohimsrv",         { NULL }, 506,   "tcp" },
-  { "ohimsrv",         { NULL }, 506,   "udp" },
-  { "crs",             { NULL }, 507,   "tcp" },
-  { "crs",             { NULL }, 507,   "udp" },
-  { "xvttp",           { NULL }, 508,   "tcp" },
-  { "xvttp",           { NULL }, 508,   "udp" },
-  { "snare",           { NULL }, 509,   "tcp" },
-  { "snare",           { NULL }, 509,   "udp" },
-  { "fcp",             { NULL }, 510,   "tcp" },
-  { "fcp",             { NULL }, 510,   "udp" },
-  { "passgo",          { NULL }, 511,   "tcp" },
-  { "passgo",          { NULL }, 511,   "udp" },
-  { "exec",            { NULL }, 512,   "tcp" },
-  { "comsat",          { NULL }, 512,   "udp" },
-  { "biff",            { NULL }, 512,   "udp" },
-  { "login",           { NULL }, 513,   "tcp" },
-  { "who",             { NULL }, 513,   "udp" },
-  { "shell",           { NULL }, 514,   "tcp" },
-  { "syslog",          { NULL }, 514,   "udp" },
-  { "printer",         { NULL }, 515,   "tcp" },
-  { "printer",         { NULL }, 515,   "udp" },
-  { "videotex",        { NULL }, 516,   "tcp" },
-  { "videotex",        { NULL }, 516,   "udp" },
-  { "talk",            { NULL }, 517,   "tcp" },
-  { "talk",            { NULL }, 517,   "udp" },
-  { "ntalk",           { NULL }, 518,   "tcp" },
-  { "ntalk",           { NULL }, 518,   "udp" },
-  { "utime",           { NULL }, 519,   "tcp" },
-  { "utime",           { NULL }, 519,   "udp" },
-  { "efs",             { NULL }, 520,   "tcp" },
-  { "router",          { NULL }, 520,   "udp" },
-  { "ripng",           { NULL }, 521,   "tcp" },
-  { "ripng",           { NULL }, 521,   "udp" },
-  { "ulp",             { NULL }, 522,   "tcp" },
-  { "ulp",             { NULL }, 522,   "udp" },
-  { "ibm-db2",         { NULL }, 523,   "tcp" },
-  { "ibm-db2",         { NULL }, 523,   "udp" },
-  { "ncp",             { NULL }, 524,   "tcp" },
-  { "ncp",             { NULL }, 524,   "udp" },
-  { "timed",           { NULL }, 525,   "tcp" },
-  { "timed",           { NULL }, 525,   "udp" },
-  { "tempo",           { NULL }, 526,   "tcp" },
-  { "tempo",           { NULL }, 526,   "udp" },
-  { "stx",             { NULL }, 527,   "tcp" },
-  { "stx",             { NULL }, 527,   "udp" },
-  { "custix",          { NULL }, 528,   "tcp" },
-  { "custix",          { NULL }, 528,   "udp" },
-  { "irc-serv",        { NULL }, 529,   "tcp" },
-  { "irc-serv",        { NULL }, 529,   "udp" },
-  { "courier",         { NULL }, 530,   "tcp" },
-  { "courier",         { NULL }, 530,   "udp" },
-  { "conference",      { NULL }, 531,   "tcp" },
-  { "conference",      { NULL }, 531,   "udp" },
-  { "netnews",         { NULL }, 532,   "tcp" },
-  { "netnews",         { NULL }, 532,   "udp" },
-  { "netwall",         { NULL }, 533,   "tcp" },
-  { "netwall",         { NULL }, 533,   "udp" },
-  { "windream",        { NULL }, 534,   "tcp" },
-  { "windream",        { NULL }, 534,   "udp" },
-  { "iiop",            { NULL }, 535,   "tcp" },
-  { "iiop",            { NULL }, 535,   "udp" },
-  { "opalis-rdv",      { NULL }, 536,   "tcp" },
-  { "opalis-rdv",      { NULL }, 536,   "udp" },
-  { "nmsp",            { NULL }, 537,   "tcp" },
-  { "nmsp",            { NULL }, 537,   "udp" },
-  { "gdomap",          { NULL }, 538,   "tcp" },
-  { "gdomap",          { NULL }, 538,   "udp" },
-  { "apertus-ldp",     { NULL }, 539,   "tcp" },
-  { "apertus-ldp",     { NULL }, 539,   "udp" },
-  { "uucp",            { NULL }, 540,   "tcp" },
-  { "uucp",            { NULL }, 540,   "udp" },
-  { "uucp-rlogin",     { NULL }, 541,   "tcp" },
-  { "uucp-rlogin",     { NULL }, 541,   "udp" },
-  { "commerce",        { NULL }, 542,   "tcp" },
-  { "commerce",        { NULL }, 542,   "udp" },
-  { "klogin",          { NULL }, 543,   "tcp" },
-  { "klogin",          { NULL }, 543,   "udp" },
-  { "kshell",          { NULL }, 544,   "tcp" },
-  { "kshell",          { NULL }, 544,   "udp" },
-  { "appleqtcsrvr",    { NULL }, 545,   "tcp" },
-  { "appleqtcsrvr",    { NULL }, 545,   "udp" },
-  { "dhcpv6-client",   { NULL }, 546,   "tcp" },
-  { "dhcpv6-client",   { NULL }, 546,   "udp" },
-  { "dhcpv6-server",   { NULL }, 547,   "tcp" },
-  { "dhcpv6-server",   { NULL }, 547,   "udp" },
-  { "afpovertcp",      { NULL }, 548,   "tcp" },
-  { "afpovertcp",      { NULL }, 548,   "udp" },
-  { "idfp",            { NULL }, 549,   "tcp" },
-  { "idfp",            { NULL }, 549,   "udp" },
-  { "new-rwho",        { NULL }, 550,   "tcp" },
-  { "new-rwho",        { NULL }, 550,   "udp" },
-  { "cybercash",       { NULL }, 551,   "tcp" },
-  { "cybercash",       { NULL }, 551,   "udp" },
-  { "devshr-nts",      { NULL }, 552,   "tcp" },
-  { "devshr-nts",      { NULL }, 552,   "udp" },
-  { "pirp",            { NULL }, 553,   "tcp" },
-  { "pirp",            { NULL }, 553,   "udp" },
-  { "rtsp",            { NULL }, 554,   "tcp" },
-  { "rtsp",            { NULL }, 554,   "udp" },
-  { "dsf",             { NULL }, 555,   "tcp" },
-  { "dsf",             { NULL }, 555,   "udp" },
-  { "remotefs",        { NULL }, 556,   "tcp" },
-  { "remotefs",        { NULL }, 556,   "udp" },
-  { "openvms-sysipc",  { NULL }, 557,   "tcp" },
-  { "openvms-sysipc",  { NULL }, 557,   "udp" },
-  { "sdnskmp",         { NULL }, 558,   "tcp" },
-  { "sdnskmp",         { NULL }, 558,   "udp" },
-  { "teedtap",         { NULL }, 559,   "tcp" },
-  { "teedtap",         { NULL }, 559,   "udp" },
-  { "rmonitor",        { NULL }, 560,   "tcp" },
-  { "rmonitor",        { NULL }, 560,   "udp" },
-  { "monitor",         { NULL }, 561,   "tcp" },
-  { "monitor",         { NULL }, 561,   "udp" },
-  { "chshell",         { NULL }, 562,   "tcp" },
-  { "chshell",         { NULL }, 562,   "udp" },
-  { "nntps",           { NULL }, 563,   "tcp" },
-  { "nntps",           { NULL }, 563,   "udp" },
-  { "9pfs",            { NULL }, 564,   "tcp" },
-  { "9pfs",            { NULL }, 564,   "udp" },
-  { "whoami",          { NULL }, 565,   "tcp" },
-  { "whoami",          { NULL }, 565,   "udp" },
-  { "streettalk",      { NULL }, 566,   "tcp" },
-  { "streettalk",      { NULL }, 566,   "udp" },
-  { "banyan-rpc",      { NULL }, 567,   "tcp" },
-  { "banyan-rpc",      { NULL }, 567,   "udp" },
-  { "ms-shuttle",      { NULL }, 568,   "tcp" },
-  { "ms-shuttle",      { NULL }, 568,   "udp" },
-  { "ms-rome",         { NULL }, 569,   "tcp" },
-  { "ms-rome",         { NULL }, 569,   "udp" },
-  { "meter",           { NULL }, 570,   "tcp" },
-  { "meter",           { NULL }, 570,   "udp" },
-  { "meter",           { NULL }, 571,   "tcp" },
-  { "meter",           { NULL }, 571,   "udp" },
-  { "sonar",           { NULL }, 572,   "tcp" },
-  { "sonar",           { NULL }, 572,   "udp" },
-  { "banyan-vip",      { NULL }, 573,   "tcp" },
-  { "banyan-vip",      { NULL }, 573,   "udp" },
-  { "ftp-agent",       { NULL }, 574,   "tcp" },
-  { "ftp-agent",       { NULL }, 574,   "udp" },
-  { "vemmi",           { NULL }, 575,   "tcp" },
-  { "vemmi",           { NULL }, 575,   "udp" },
-  { "ipcd",            { NULL }, 576,   "tcp" },
-  { "ipcd",            { NULL }, 576,   "udp" },
-  { "vnas",            { NULL }, 577,   "tcp" },
-  { "vnas",            { NULL }, 577,   "udp" },
-  { "ipdd",            { NULL }, 578,   "tcp" },
-  { "ipdd",            { NULL }, 578,   "udp" },
-  { "decbsrv",         { NULL }, 579,   "tcp" },
-  { "decbsrv",         { NULL }, 579,   "udp" },
-  { "sntp-heartbeat",  { NULL }, 580,   "tcp" },
-  { "sntp-heartbeat",  { NULL }, 580,   "udp" },
-  { "bdp",             { NULL }, 581,   "tcp" },
-  { "bdp",             { NULL }, 581,   "udp" },
-  { "scc-security",    { NULL }, 582,   "tcp" },
-  { "scc-security",    { NULL }, 582,   "udp" },
-  { "philips-vc",      { NULL }, 583,   "tcp" },
-  { "philips-vc",      { NULL }, 583,   "udp" },
-  { "keyserver",       { NULL }, 584,   "tcp" },
-  { "keyserver",       { NULL }, 584,   "udp" },
-  { "password-chg",    { NULL }, 586,   "tcp" },
-  { "password-chg",    { NULL }, 586,   "udp" },
-  { "submission",      { NULL }, 587,   "tcp" },
-  { "submission",      { NULL }, 587,   "udp" },
-  { "cal",             { NULL }, 588,   "tcp" },
-  { "cal",             { NULL }, 588,   "udp" },
-  { "eyelink",         { NULL }, 589,   "tcp" },
-  { "eyelink",         { NULL }, 589,   "udp" },
-  { "tns-cml",         { NULL }, 590,   "tcp" },
-  { "tns-cml",         { NULL }, 590,   "udp" },
-  { "http-alt",        { NULL }, 591,   "tcp" },
-  { "http-alt",        { NULL }, 591,   "udp" },
-  { "eudora-set",      { NULL }, 592,   "tcp" },
-  { "eudora-set",      { NULL }, 592,   "udp" },
-  { "http-rpc-epmap",  { NULL }, 593,   "tcp" },
-  { "http-rpc-epmap",  { NULL }, 593,   "udp" },
-  { "tpip",            { NULL }, 594,   "tcp" },
-  { "tpip",            { NULL }, 594,   "udp" },
-  { "cab-protocol",    { NULL }, 595,   "tcp" },
-  { "cab-protocol",    { NULL }, 595,   "udp" },
-  { "smsd",            { NULL }, 596,   "tcp" },
-  { "smsd",            { NULL }, 596,   "udp" },
-  { "ptcnameservice",  { NULL }, 597,   "tcp" },
-  { "ptcnameservice",  { NULL }, 597,   "udp" },
-  { "sco-websrvrmg3",  { NULL }, 598,   "tcp" },
-  { "sco-websrvrmg3",  { NULL }, 598,   "udp" },
-  { "acp",             { NULL }, 599,   "tcp" },
-  { "acp",             { NULL }, 599,   "udp" },
-  { "ipcserver",       { NULL }, 600,   "tcp" },
-  { "ipcserver",       { NULL }, 600,   "udp" },
-  { "syslog-conn",     { NULL }, 601,   "tcp" },
-  { "syslog-conn",     { NULL }, 601,   "udp" },
-  { "xmlrpc-beep",     { NULL }, 602,   "tcp" },
-  { "xmlrpc-beep",     { NULL }, 602,   "udp" },
-  { "idxp",            { NULL }, 603,   "tcp" },
-  { "idxp",            { NULL }, 603,   "udp" },
-  { "tunnel",          { NULL }, 604,   "tcp" },
-  { "tunnel",          { NULL }, 604,   "udp" },
-  { "soap-beep",       { NULL }, 605,   "tcp" },
-  { "soap-beep",       { NULL }, 605,   "udp" },
-  { "urm",             { NULL }, 606,   "tcp" },
-  { "urm",             { NULL }, 606,   "udp" },
-  { "nqs",             { NULL }, 607,   "tcp" },
-  { "nqs",             { NULL }, 607,   "udp" },
-  { "sift-uft",        { NULL }, 608,   "tcp" },
-  { "sift-uft",        { NULL }, 608,   "udp" },
-  { "npmp-trap",       { NULL }, 609,   "tcp" },
-  { "npmp-trap",       { NULL }, 609,   "udp" },
-  { "npmp-local",      { NULL }, 610,   "tcp" },
-  { "npmp-local",      { NULL }, 610,   "udp" },
-  { "npmp-gui",        { NULL }, 611,   "tcp" },
-  { "npmp-gui",        { NULL }, 611,   "udp" },
-  { "hmmp-ind",        { NULL }, 612,   "tcp" },
-  { "hmmp-ind",        { NULL }, 612,   "udp" },
-  { "hmmp-op",         { NULL }, 613,   "tcp" },
-  { "hmmp-op",         { NULL }, 613,   "udp" },
-  { "sshell",          { NULL }, 614,   "tcp" },
-  { "sshell",          { NULL }, 614,   "udp" },
-  { "sco-inetmgr",     { NULL }, 615,   "tcp" },
-  { "sco-inetmgr",     { NULL }, 615,   "udp" },
-  { "sco-sysmgr",      { NULL }, 616,   "tcp" },
-  { "sco-sysmgr",      { NULL }, 616,   "udp" },
-  { "sco-dtmgr",       { NULL }, 617,   "tcp" },
-  { "sco-dtmgr",       { NULL }, 617,   "udp" },
-  { "dei-icda",        { NULL }, 618,   "tcp" },
-  { "dei-icda",        { NULL }, 618,   "udp" },
-  { "compaq-evm",      { NULL }, 619,   "tcp" },
-  { "compaq-evm",      { NULL }, 619,   "udp" },
-  { "sco-websrvrmgr",  { NULL }, 620,   "tcp" },
-  { "sco-websrvrmgr",  { NULL }, 620,   "udp" },
-  { "escp-ip",         { NULL }, 621,   "tcp" },
-  { "escp-ip",         { NULL }, 621,   "udp" },
-  { "collaborator",    { NULL }, 622,   "tcp" },
-  { "collaborator",    { NULL }, 622,   "udp" },
-  { "oob-ws-http",     { NULL }, 623,   "tcp" },
-  { "asf-rmcp",        { NULL }, 623,   "udp" },
-  { "cryptoadmin",     { NULL }, 624,   "tcp" },
-  { "cryptoadmin",     { NULL }, 624,   "udp" },
-  { "dec_dlm",         { NULL }, 625,   "tcp" },
-  { "dec_dlm",         { NULL }, 625,   "udp" },
-  { "asia",            { NULL }, 626,   "tcp" },
-  { "asia",            { NULL }, 626,   "udp" },
-  { "passgo-tivoli",   { NULL }, 627,   "tcp" },
-  { "passgo-tivoli",   { NULL }, 627,   "udp" },
-  { "qmqp",            { NULL }, 628,   "tcp" },
-  { "qmqp",            { NULL }, 628,   "udp" },
-  { "3com-amp3",       { NULL }, 629,   "tcp" },
-  { "3com-amp3",       { NULL }, 629,   "udp" },
-  { "rda",             { NULL }, 630,   "tcp" },
-  { "rda",             { NULL }, 630,   "udp" },
-  { "ipp",             { NULL }, 631,   "tcp" },
-  { "ipp",             { NULL }, 631,   "udp" },
-  { "bmpp",            { NULL }, 632,   "tcp" },
-  { "bmpp",            { NULL }, 632,   "udp" },
-  { "servstat",        { NULL }, 633,   "tcp" },
-  { "servstat",        { NULL }, 633,   "udp" },
-  { "ginad",           { NULL }, 634,   "tcp" },
-  { "ginad",           { NULL }, 634,   "udp" },
-  { "rlzdbase",        { NULL }, 635,   "tcp" },
-  { "rlzdbase",        { NULL }, 635,   "udp" },
-  { "ldaps",           { NULL }, 636,   "tcp" },
-  { "ldaps",           { NULL }, 636,   "udp" },
-  { "lanserver",       { NULL }, 637,   "tcp" },
-  { "lanserver",       { NULL }, 637,   "udp" },
-  { "mcns-sec",        { NULL }, 638,   "tcp" },
-  { "mcns-sec",        { NULL }, 638,   "udp" },
-  { "msdp",            { NULL }, 639,   "tcp" },
-  { "msdp",            { NULL }, 639,   "udp" },
-  { "entrust-sps",     { NULL }, 640,   "tcp" },
-  { "entrust-sps",     { NULL }, 640,   "udp" },
-  { "repcmd",          { NULL }, 641,   "tcp" },
-  { "repcmd",          { NULL }, 641,   "udp" },
-  { "esro-emsdp",      { NULL }, 642,   "tcp" },
-  { "esro-emsdp",      { NULL }, 642,   "udp" },
-  { "sanity",          { NULL }, 643,   "tcp" },
-  { "sanity",          { NULL }, 643,   "udp" },
-  { "dwr",             { NULL }, 644,   "tcp" },
-  { "dwr",             { NULL }, 644,   "udp" },
-  { "pssc",            { NULL }, 645,   "tcp" },
-  { "pssc",            { NULL }, 645,   "udp" },
-  { "ldp",             { NULL }, 646,   "tcp" },
-  { "ldp",             { NULL }, 646,   "udp" },
-  { "dhcp-failover",   { NULL }, 647,   "tcp" },
-  { "dhcp-failover",   { NULL }, 647,   "udp" },
-  { "rrp",             { NULL }, 648,   "tcp" },
-  { "rrp",             { NULL }, 648,   "udp" },
-  { "cadview-3d",      { NULL }, 649,   "tcp" },
-  { "cadview-3d",      { NULL }, 649,   "udp" },
-  { "obex",            { NULL }, 650,   "tcp" },
-  { "obex",            { NULL }, 650,   "udp" },
-  { "ieee-mms",        { NULL }, 651,   "tcp" },
-  { "ieee-mms",        { NULL }, 651,   "udp" },
-  { "hello-port",      { NULL }, 652,   "tcp" },
-  { "hello-port",      { NULL }, 652,   "udp" },
-  { "repscmd",         { NULL }, 653,   "tcp" },
-  { "repscmd",         { NULL }, 653,   "udp" },
-  { "aodv",            { NULL }, 654,   "tcp" },
-  { "aodv",            { NULL }, 654,   "udp" },
-  { "tinc",            { NULL }, 655,   "tcp" },
-  { "tinc",            { NULL }, 655,   "udp" },
-  { "spmp",            { NULL }, 656,   "tcp" },
-  { "spmp",            { NULL }, 656,   "udp" },
-  { "rmc",             { NULL }, 657,   "tcp" },
-  { "rmc",             { NULL }, 657,   "udp" },
-  { "tenfold",         { NULL }, 658,   "tcp" },
-  { "tenfold",         { NULL }, 658,   "udp" },
-  { "mac-srvr-admin",  { NULL }, 660,   "tcp" },
-  { "mac-srvr-admin",  { NULL }, 660,   "udp" },
-  { "hap",             { NULL }, 661,   "tcp" },
-  { "hap",             { NULL }, 661,   "udp" },
-  { "pftp",            { NULL }, 662,   "tcp" },
-  { "pftp",            { NULL }, 662,   "udp" },
-  { "purenoise",       { NULL }, 663,   "tcp" },
-  { "purenoise",       { NULL }, 663,   "udp" },
-  { "oob-ws-https",    { NULL }, 664,   "tcp" },
-  { "asf-secure-rmcp", { NULL }, 664,   "udp" },
-  { "sun-dr",          { NULL }, 665,   "tcp" },
-  { "sun-dr",          { NULL }, 665,   "udp" },
-  { "mdqs",            { NULL }, 666,   "tcp" },
-  { "mdqs",            { NULL }, 666,   "udp" },
-  { "doom",            { NULL }, 666,   "tcp" },
-  { "doom",            { NULL }, 666,   "udp" },
-  { "disclose",        { NULL }, 667,   "tcp" },
-  { "disclose",        { NULL }, 667,   "udp" },
-  { "mecomm",          { NULL }, 668,   "tcp" },
-  { "mecomm",          { NULL }, 668,   "udp" },
-  { "meregister",      { NULL }, 669,   "tcp" },
-  { "meregister",      { NULL }, 669,   "udp" },
-  { "vacdsm-sws",      { NULL }, 670,   "tcp" },
-  { "vacdsm-sws",      { NULL }, 670,   "udp" },
-  { "vacdsm-app",      { NULL }, 671,   "tcp" },
-  { "vacdsm-app",      { NULL }, 671,   "udp" },
-  { "vpps-qua",        { NULL }, 672,   "tcp" },
-  { "vpps-qua",        { NULL }, 672,   "udp" },
-  { "cimplex",         { NULL }, 673,   "tcp" },
-  { "cimplex",         { NULL }, 673,   "udp" },
-  { "acap",            { NULL }, 674,   "tcp" },
-  { "acap",            { NULL }, 674,   "udp" },
-  { "dctp",            { NULL }, 675,   "tcp" },
-  { "dctp",            { NULL }, 675,   "udp" },
-  { "vpps-via",        { NULL }, 676,   "tcp" },
-  { "vpps-via",        { NULL }, 676,   "udp" },
-  { "vpp",             { NULL }, 677,   "tcp" },
-  { "vpp",             { NULL }, 677,   "udp" },
-  { "ggf-ncp",         { NULL }, 678,   "tcp" },
-  { "ggf-ncp",         { NULL }, 678,   "udp" },
-  { "mrm",             { NULL }, 679,   "tcp" },
-  { "mrm",             { NULL }, 679,   "udp" },
-  { "entrust-aaas",    { NULL }, 680,   "tcp" },
-  { "entrust-aaas",    { NULL }, 680,   "udp" },
-  { "entrust-aams",    { NULL }, 681,   "tcp" },
-  { "entrust-aams",    { NULL }, 681,   "udp" },
-  { "xfr",             { NULL }, 682,   "tcp" },
-  { "xfr",             { NULL }, 682,   "udp" },
-  { "corba-iiop",      { NULL }, 683,   "tcp" },
-  { "corba-iiop",      { NULL }, 683,   "udp" },
-  { "corba-iiop-ssl",  { NULL }, 684,   "tcp" },
-  { "corba-iiop-ssl",  { NULL }, 684,   "udp" },
-  { "mdc-portmapper",  { NULL }, 685,   "tcp" },
-  { "mdc-portmapper",  { NULL }, 685,   "udp" },
-  { "hcp-wismar",      { NULL }, 686,   "tcp" },
-  { "hcp-wismar",      { NULL }, 686,   "udp" },
-  { "asipregistry",    { NULL }, 687,   "tcp" },
-  { "asipregistry",    { NULL }, 687,   "udp" },
-  { "realm-rusd",      { NULL }, 688,   "tcp" },
-  { "realm-rusd",      { NULL }, 688,   "udp" },
-  { "nmap",            { NULL }, 689,   "tcp" },
-  { "nmap",            { NULL }, 689,   "udp" },
-  { "vatp",            { NULL }, 690,   "tcp" },
-  { "vatp",            { NULL }, 690,   "udp" },
-  { "msexch-routing",  { NULL }, 691,   "tcp" },
-  { "msexch-routing",  { NULL }, 691,   "udp" },
-  { "hyperwave-isp",   { NULL }, 692,   "tcp" },
-  { "hyperwave-isp",   { NULL }, 692,   "udp" },
-  { "connendp",        { NULL }, 693,   "tcp" },
-  { "connendp",        { NULL }, 693,   "udp" },
-  { "ha-cluster",      { NULL }, 694,   "tcp" },
-  { "ha-cluster",      { NULL }, 694,   "udp" },
-  { "ieee-mms-ssl",    { NULL }, 695,   "tcp" },
-  { "ieee-mms-ssl",    { NULL }, 695,   "udp" },
-  { "rushd",           { NULL }, 696,   "tcp" },
-  { "rushd",           { NULL }, 696,   "udp" },
-  { "uuidgen",         { NULL }, 697,   "tcp" },
-  { "uuidgen",         { NULL }, 697,   "udp" },
-  { "olsr",            { NULL }, 698,   "tcp" },
-  { "olsr",            { NULL }, 698,   "udp" },
-  { "accessnetwork",   { NULL }, 699,   "tcp" },
-  { "accessnetwork",   { NULL }, 699,   "udp" },
-  { "epp",             { NULL }, 700,   "tcp" },
-  { "epp",             { NULL }, 700,   "udp" },
-  { "lmp",             { NULL }, 701,   "tcp" },
-  { "lmp",             { NULL }, 701,   "udp" },
-  { "iris-beep",       { NULL }, 702,   "tcp" },
-  { "iris-beep",       { NULL }, 702,   "udp" },
-  { "elcsd",           { NULL }, 704,   "tcp" },
-  { "elcsd",           { NULL }, 704,   "udp" },
-  { "agentx",          { NULL }, 705,   "tcp" },
-  { "agentx",          { NULL }, 705,   "udp" },
-  { "silc",            { NULL }, 706,   "tcp" },
-  { "silc",            { NULL }, 706,   "udp" },
-  { "borland-dsj",     { NULL }, 707,   "tcp" },
-  { "borland-dsj",     { NULL }, 707,   "udp" },
-  { "entrust-kmsh",    { NULL }, 709,   "tcp" },
-  { "entrust-kmsh",    { NULL }, 709,   "udp" },
-  { "entrust-ash",     { NULL }, 710,   "tcp" },
-  { "entrust-ash",     { NULL }, 710,   "udp" },
-  { "cisco-tdp",       { NULL }, 711,   "tcp" },
-  { "cisco-tdp",       { NULL }, 711,   "udp" },
-  { "tbrpf",           { NULL }, 712,   "tcp" },
-  { "tbrpf",           { NULL }, 712,   "udp" },
-  { "iris-xpc",        { NULL }, 713,   "tcp" },
-  { "iris-xpc",        { NULL }, 713,   "udp" },
-  { "iris-xpcs",       { NULL }, 714,   "tcp" },
-  { "iris-xpcs",       { NULL }, 714,   "udp" },
-  { "iris-lwz",        { NULL }, 715,   "tcp" },
-  { "iris-lwz",        { NULL }, 715,   "udp" },
-  { "pana",            { NULL }, 716,   "udp" },
-  { "netviewdm1",      { NULL }, 729,   "tcp" },
-  { "netviewdm1",      { NULL }, 729,   "udp" },
-  { "netviewdm2",      { NULL }, 730,   "tcp" },
-  { "netviewdm2",      { NULL }, 730,   "udp" },
-  { "netviewdm3",      { NULL }, 731,   "tcp" },
-  { "netviewdm3",      { NULL }, 731,   "udp" },
-  { "netgw",           { NULL }, 741,   "tcp" },
-  { "netgw",           { NULL }, 741,   "udp" },
-  { "netrcs",          { NULL }, 742,   "tcp" },
-  { "netrcs",          { NULL }, 742,   "udp" },
-  { "flexlm",          { NULL }, 744,   "tcp" },
-  { "flexlm",          { NULL }, 744,   "udp" },
-  { "fujitsu-dev",     { NULL }, 747,   "tcp" },
-  { "fujitsu-dev",     { NULL }, 747,   "udp" },
-  { "ris-cm",          { NULL }, 748,   "tcp" },
-  { "ris-cm",          { NULL }, 748,   "udp" },
-  { "kerberos-adm",    { NULL }, 749,   "tcp" },
-  { "kerberos-adm",    { NULL }, 749,   "udp" },
-  { "rfile",           { NULL }, 750,   "tcp" },
-  { "loadav",          { NULL }, 750,   "udp" },
-  { "kerberos-iv",     { NULL }, 750,   "udp" },
-  { "pump",            { NULL }, 751,   "tcp" },
-  { "pump",            { NULL }, 751,   "udp" },
-  { "qrh",             { NULL }, 752,   "tcp" },
-  { "qrh",             { NULL }, 752,   "udp" },
-  { "rrh",             { NULL }, 753,   "tcp" },
-  { "rrh",             { NULL }, 753,   "udp" },
-  { "tell",            { NULL }, 754,   "tcp" },
-  { "tell",            { NULL }, 754,   "udp" },
-  { "nlogin",          { NULL }, 758,   "tcp" },
-  { "nlogin",          { NULL }, 758,   "udp" },
-  { "con",             { NULL }, 759,   "tcp" },
-  { "con",             { NULL }, 759,   "udp" },
-  { "ns",              { NULL }, 760,   "tcp" },
-  { "ns",              { NULL }, 760,   "udp" },
-  { "rxe",             { NULL }, 761,   "tcp" },
-  { "rxe",             { NULL }, 761,   "udp" },
-  { "quotad",          { NULL }, 762,   "tcp" },
-  { "quotad",          { NULL }, 762,   "udp" },
-  { "cycleserv",       { NULL }, 763,   "tcp" },
-  { "cycleserv",       { NULL }, 763,   "udp" },
-  { "omserv",          { NULL }, 764,   "tcp" },
-  { "omserv",          { NULL }, 764,   "udp" },
-  { "webster",         { NULL }, 765,   "tcp" },
-  { "webster",         { NULL }, 765,   "udp" },
-  { "phonebook",       { NULL }, 767,   "tcp" },
-  { "phonebook",       { NULL }, 767,   "udp" },
-  { "vid",             { NULL }, 769,   "tcp" },
-  { "vid",             { NULL }, 769,   "udp" },
-  { "cadlock",         { NULL }, 770,   "tcp" },
-  { "cadlock",         { NULL }, 770,   "udp" },
-  { "rtip",            { NULL }, 771,   "tcp" },
-  { "rtip",            { NULL }, 771,   "udp" },
-  { "cycleserv2",      { NULL }, 772,   "tcp" },
-  { "cycleserv2",      { NULL }, 772,   "udp" },
-  { "submit",          { NULL }, 773,   "tcp" },
-  { "notify",          { NULL }, 773,   "udp" },
-  { "rpasswd",         { NULL }, 774,   "tcp" },
-  { "acmaint_dbd",     { NULL }, 774,   "udp" },
-  { "entomb",          { NULL }, 775,   "tcp" },
-  { "acmaint_transd",  { NULL }, 775,   "udp" },
-  { "wpages",          { NULL }, 776,   "tcp" },
-  { "wpages",          { NULL }, 776,   "udp" },
-  { "multiling-http",  { NULL }, 777,   "tcp" },
-  { "multiling-http",  { NULL }, 777,   "udp" },
-  { "wpgs",            { NULL }, 780,   "tcp" },
-  { "wpgs",            { NULL }, 780,   "udp" },
-  { "mdbs_daemon",     { NULL }, 800,   "tcp" },
-  { "mdbs_daemon",     { NULL }, 800,   "udp" },
-  { "device",          { NULL }, 801,   "tcp" },
-  { "device",          { NULL }, 801,   "udp" },
-  { "fcp-udp",         { NULL }, 810,   "tcp" },
-  { "fcp-udp",         { NULL }, 810,   "udp" },
-  { "itm-mcell-s",     { NULL }, 828,   "tcp" },
-  { "itm-mcell-s",     { NULL }, 828,   "udp" },
-  { "pkix-3-ca-ra",    { NULL }, 829,   "tcp" },
-  { "pkix-3-ca-ra",    { NULL }, 829,   "udp" },
-  { "netconf-ssh",     { NULL }, 830,   "tcp" },
-  { "netconf-ssh",     { NULL }, 830,   "udp" },
-  { "netconf-beep",    { NULL }, 831,   "tcp" },
-  { "netconf-beep",    { NULL }, 831,   "udp" },
-  { "netconfsoaphttp", { NULL }, 832,   "tcp" },
-  { "netconfsoaphttp", { NULL }, 832,   "udp" },
-  { "netconfsoapbeep", { NULL }, 833,   "tcp" },
-  { "netconfsoapbeep", { NULL }, 833,   "udp" },
-  { "dhcp-failover2",  { NULL }, 847,   "tcp" },
-  { "dhcp-failover2",  { NULL }, 847,   "udp" },
-  { "gdoi",            { NULL }, 848,   "tcp" },
-  { "gdoi",            { NULL }, 848,   "udp" },
-  { "iscsi",           { NULL }, 860,   "tcp" },
-  { "iscsi",           { NULL }, 860,   "udp" },
-  { "owamp-control",   { NULL }, 861,   "tcp" },
-  { "owamp-control",   { NULL }, 861,   "udp" },
-  { "twamp-control",   { NULL }, 862,   "tcp" },
-  { "twamp-control",   { NULL }, 862,   "udp" },
-  { "rsync",           { NULL }, 873,   "tcp" },
-  { "rsync",           { NULL }, 873,   "udp" },
-  { "iclcnet-locate",  { NULL }, 886,   "tcp" },
-  { "iclcnet-locate",  { NULL }, 886,   "udp" },
-  { "iclcnet_svinfo",  { NULL }, 887,   "tcp" },
-  { "iclcnet_svinfo",  { NULL }, 887,   "udp" },
-  { "accessbuilder",   { NULL }, 888,   "tcp" },
-  { "accessbuilder",   { NULL }, 888,   "udp" },
-  { "cddbp",           { NULL }, 888,   "tcp" },
-  { "omginitialrefs",  { NULL }, 900,   "tcp" },
-  { "omginitialrefs",  { NULL }, 900,   "udp" },
-  { "smpnameres",      { NULL }, 901,   "tcp" },
-  { "smpnameres",      { NULL }, 901,   "udp" },
-  { "ideafarm-door",   { NULL }, 902,   "tcp" },
-  { "ideafarm-door",   { NULL }, 902,   "udp" },
-  { "ideafarm-panic",  { NULL }, 903,   "tcp" },
-  { "ideafarm-panic",  { NULL }, 903,   "udp" },
-  { "kink",            { NULL }, 910,   "tcp" },
-  { "kink",            { NULL }, 910,   "udp" },
-  { "xact-backup",     { NULL }, 911,   "tcp" },
-  { "xact-backup",     { NULL }, 911,   "udp" },
-  { "apex-mesh",       { NULL }, 912,   "tcp" },
-  { "apex-mesh",       { NULL }, 912,   "udp" },
-  { "apex-edge",       { NULL }, 913,   "tcp" },
-  { "apex-edge",       { NULL }, 913,   "udp" },
-  { "ftps-data",       { NULL }, 989,   "tcp" },
-  { "ftps-data",       { NULL }, 989,   "udp" },
-  { "ftps",            { NULL }, 990,   "tcp" },
-  { "ftps",            { NULL }, 990,   "udp" },
-  { "nas",             { NULL }, 991,   "tcp" },
-  { "nas",             { NULL }, 991,   "udp" },
-  { "telnets",         { NULL }, 992,   "tcp" },
-  { "telnets",         { NULL }, 992,   "udp" },
-  { "imaps",           { NULL }, 993,   "tcp" },
-  { "imaps",           { NULL }, 993,   "udp" },
-  { "ircs",            { NULL }, 994,   "tcp" },
-  { "ircs",            { NULL }, 994,   "udp" },
-  { "pop3s",           { NULL }, 995,   "tcp" },
-  { "pop3s",           { NULL }, 995,   "udp" },
-  { "vsinet",          { NULL }, 996,   "tcp" },
-  { "vsinet",          { NULL }, 996,   "udp" },
-  { "maitrd",          { NULL }, 997,   "tcp" },
-  { "maitrd",          { NULL }, 997,   "udp" },
-  { "busboy",          { NULL }, 998,   "tcp" },
-  { "puparp",          { NULL }, 998,   "udp" },
-  { "garcon",          { NULL }, 999,   "tcp" },
-  { "applix",          { NULL }, 999,   "udp" },
-  { "puprouter",       { NULL }, 999,   "tcp" },
-  { "puprouter",       { NULL }, 999,   "udp" },
-  { "cadlock2",        { NULL }, 1000,  "tcp" },
-  { "cadlock2",        { NULL }, 1000,  "udp" },
-  { "surf",            { NULL }, 1010,  "tcp" },
-  { "surf",            { NULL }, 1010,  "udp" },
-  { "exp1",            { NULL }, 1021,  "tcp" },
-  { "exp1",            { NULL }, 1021,  "udp" },
-  { "exp2",            { NULL }, 1022,  "tcp" },
-  { "exp2",            { NULL }, 1022,  "udp" },
+  { "tcpmux",          { NULL }, 1,     "tcp"  },
+  { "tcpmux",          { NULL }, 1,     "udp"  },
+  { "compressnet",     { NULL }, 2,     "tcp"  },
+  { "compressnet",     { NULL }, 2,     "udp"  },
+  { "compressnet",     { NULL }, 3,     "tcp"  },
+  { "compressnet",     { NULL }, 3,     "udp"  },
+  { "rje",             { NULL }, 5,     "tcp"  },
+  { "rje",             { NULL }, 5,     "udp"  },
+  { "echo",            { NULL }, 7,     "tcp"  },
+  { "echo",            { NULL }, 7,     "udp"  },
+  { "discard",         { NULL }, 9,     "tcp"  },
+  { "discard",         { NULL }, 9,     "udp"  },
+  { "discard",         { NULL }, 9,     "sctp" },
+  { "discard",         { NULL }, 9,     "dccp" },
+  { "systat",          { NULL }, 11,    "tcp"  },
+  { "systat",          { NULL }, 11,    "udp"  },
+  { "daytime",         { NULL }, 13,    "tcp"  },
+  { "daytime",         { NULL }, 13,    "udp"  },
+  { "qotd",            { NULL }, 17,    "tcp"  },
+  { "qotd",            { NULL }, 17,    "udp"  },
+  { "msp",             { NULL }, 18,    "tcp"  },
+  { "msp",             { NULL }, 18,    "udp"  },
+  { "chargen",         { NULL }, 19,    "tcp"  },
+  { "chargen",         { NULL }, 19,    "udp"  },
+  { "ftp-data",        { NULL }, 20,    "tcp"  },
+  { "ftp-data",        { NULL }, 20,    "udp"  },
+  { "ftp-data",        { NULL }, 20,    "sctp" },
+  { "ftp",             { NULL }, 21,    "tcp"  },
+  { "ftp",             { NULL }, 21,    "udp"  },
+  { "ftp",             { NULL }, 21,    "sctp" },
+  { "ssh",             { NULL }, 22,    "tcp"  },
+  { "ssh",             { NULL }, 22,    "udp"  },
+  { "ssh",             { NULL }, 22,    "sctp" },
+  { "telnet",          { NULL }, 23,    "tcp"  },
+  { "telnet",          { NULL }, 23,    "udp"  },
+  { "smtp",            { NULL }, 25,    "tcp"  },
+  { "smtp",            { NULL }, 25,    "udp"  },
+  { "nsw-fe",          { NULL }, 27,    "tcp"  },
+  { "nsw-fe",          { NULL }, 27,    "udp"  },
+  { "msg-icp",         { NULL }, 29,    "tcp"  },
+  { "msg-icp",         { NULL }, 29,    "udp"  },
+  { "msg-auth",        { NULL }, 31,    "tcp"  },
+  { "msg-auth",        { NULL }, 31,    "udp"  },
+  { "dsp",             { NULL }, 33,    "tcp"  },
+  { "dsp",             { NULL }, 33,    "udp"  },
+  { "time",            { NULL }, 37,    "tcp"  },
+  { "time",            { NULL }, 37,    "udp"  },
+  { "rap",             { NULL }, 38,    "tcp"  },
+  { "rap",             { NULL }, 38,    "udp"  },
+  { "rlp",             { NULL }, 39,    "tcp"  },
+  { "rlp",             { NULL }, 39,    "udp"  },
+  { "graphics",        { NULL }, 41,    "tcp"  },
+  { "graphics",        { NULL }, 41,    "udp"  },
+  { "name",            { NULL }, 42,    "tcp"  },
+  { "name",            { NULL }, 42,    "udp"  },
+  { "nameserver",      { NULL }, 42,    "tcp"  },
+  { "nameserver",      { NULL }, 42,    "udp"  },
+  { "nicname",         { NULL }, 43,    "tcp"  },
+  { "nicname",         { NULL }, 43,    "udp"  },
+  { "mpm-flags",       { NULL }, 44,    "tcp"  },
+  { "mpm-flags",       { NULL }, 44,    "udp"  },
+  { "mpm",             { NULL }, 45,    "tcp"  },
+  { "mpm",             { NULL }, 45,    "udp"  },
+  { "mpm-snd",         { NULL }, 46,    "tcp"  },
+  { "mpm-snd",         { NULL }, 46,    "udp"  },
+  { "ni-ftp",          { NULL }, 47,    "tcp"  },
+  { "ni-ftp",          { NULL }, 47,    "udp"  },
+  { "auditd",          { NULL }, 48,    "tcp"  },
+  { "auditd",          { NULL }, 48,    "udp"  },
+  { "tacacs",          { NULL }, 49,    "tcp"  },
+  { "tacacs",          { NULL }, 49,    "udp"  },
+  { "re-mail-ck",      { NULL }, 50,    "tcp"  },
+  { "re-mail-ck",      { NULL }, 50,    "udp"  },
+  { "la-maint",        { NULL }, 51,    "tcp"  },
+  { "la-maint",        { NULL }, 51,    "udp"  },
+  { "xns-time",        { NULL }, 52,    "tcp"  },
+  { "xns-time",        { NULL }, 52,    "udp"  },
+  { "domain",          { NULL }, 53,    "tcp"  },
+  { "domain",          { NULL }, 53,    "udp"  },
+  { "xns-ch",          { NULL }, 54,    "tcp"  },
+  { "xns-ch",          { NULL }, 54,    "udp"  },
+  { "isi-gl",          { NULL }, 55,    "tcp"  },
+  { "isi-gl",          { NULL }, 55,    "udp"  },
+  { "xns-auth",        { NULL }, 56,    "tcp"  },
+  { "xns-auth",        { NULL }, 56,    "udp"  },
+  { "xns-mail",        { NULL }, 58,    "tcp"  },
+  { "xns-mail",        { NULL }, 58,    "udp"  },
+  { "ni-mail",         { NULL }, 61,    "tcp"  },
+  { "ni-mail",         { NULL }, 61,    "udp"  },
+  { "acas",            { NULL }, 62,    "tcp"  },
+  { "acas",            { NULL }, 62,    "udp"  },
+  { "whois++",         { NULL }, 63,    "tcp"  },
+  { "whois++",         { NULL }, 63,    "udp"  },
+  { "covia",           { NULL }, 64,    "tcp"  },
+  { "covia",           { NULL }, 64,    "udp"  },
+  { "tacacs-ds",       { NULL }, 65,    "tcp"  },
+  { "tacacs-ds",       { NULL }, 65,    "udp"  },
+  { "sql*net",         { NULL }, 66,    "tcp"  },
+  { "sql*net",         { NULL }, 66,    "udp"  },
+  { "bootps",          { NULL }, 67,    "tcp"  },
+  { "bootps",          { NULL }, 67,    "udp"  },
+  { "bootpc",          { NULL }, 68,    "tcp"  },
+  { "bootpc",          { NULL }, 68,    "udp"  },
+  { "tftp",            { NULL }, 69,    "tcp"  },
+  { "tftp",            { NULL }, 69,    "udp"  },
+  { "gopher",          { NULL }, 70,    "tcp"  },
+  { "gopher",          { NULL }, 70,    "udp"  },
+  { "netrjs-1",        { NULL }, 71,    "tcp"  },
+  { "netrjs-1",        { NULL }, 71,    "udp"  },
+  { "netrjs-2",        { NULL }, 72,    "tcp"  },
+  { "netrjs-2",        { NULL }, 72,    "udp"  },
+  { "netrjs-3",        { NULL }, 73,    "tcp"  },
+  { "netrjs-3",        { NULL }, 73,    "udp"  },
+  { "netrjs-4",        { NULL }, 74,    "tcp"  },
+  { "netrjs-4",        { NULL }, 74,    "udp"  },
+  { "deos",            { NULL }, 76,    "tcp"  },
+  { "deos",            { NULL }, 76,    "udp"  },
+  { "vettcp",          { NULL }, 78,    "tcp"  },
+  { "vettcp",          { NULL }, 78,    "udp"  },
+  { "finger",          { NULL }, 79,    "tcp"  },
+  { "finger",          { NULL }, 79,    "udp"  },
+  { "http",            { NULL }, 80,    "tcp"  },
+  { "http",            { NULL }, 80,    "udp"  },
+  { "www",             { NULL }, 80,    "tcp"  },
+  { "www",             { NULL }, 80,    "udp"  },
+  { "www-http",        { NULL }, 80,    "tcp"  },
+  { "www-http",        { NULL }, 80,    "udp"  },
+  { "http",            { NULL }, 80,    "sctp" },
+  { "xfer",            { NULL }, 82,    "tcp"  },
+  { "xfer",            { NULL }, 82,    "udp"  },
+  { "mit-ml-dev",      { NULL }, 83,    "tcp"  },
+  { "mit-ml-dev",      { NULL }, 83,    "udp"  },
+  { "ctf",             { NULL }, 84,    "tcp"  },
+  { "ctf",             { NULL }, 84,    "udp"  },
+  { "mit-ml-dev",      { NULL }, 85,    "tcp"  },
+  { "mit-ml-dev",      { NULL }, 85,    "udp"  },
+  { "mfcobol",         { NULL }, 86,    "tcp"  },
+  { "mfcobol",         { NULL }, 86,    "udp"  },
+  { "kerberos",        { NULL }, 88,    "tcp"  },
+  { "kerberos",        { NULL }, 88,    "udp"  },
+  { "su-mit-tg",       { NULL }, 89,    "tcp"  },
+  { "su-mit-tg",       { NULL }, 89,    "udp"  },
+  { "dnsix",           { NULL }, 90,    "tcp"  },
+  { "dnsix",           { NULL }, 90,    "udp"  },
+  { "mit-dov",         { NULL }, 91,    "tcp"  },
+  { "mit-dov",         { NULL }, 91,    "udp"  },
+  { "npp",             { NULL }, 92,    "tcp"  },
+  { "npp",             { NULL }, 92,    "udp"  },
+  { "dcp",             { NULL }, 93,    "tcp"  },
+  { "dcp",             { NULL }, 93,    "udp"  },
+  { "objcall",         { NULL }, 94,    "tcp"  },
+  { "objcall",         { NULL }, 94,    "udp"  },
+  { "supdup",          { NULL }, 95,    "tcp"  },
+  { "supdup",          { NULL }, 95,    "udp"  },
+  { "dixie",           { NULL }, 96,    "tcp"  },
+  { "dixie",           { NULL }, 96,    "udp"  },
+  { "swift-rvf",       { NULL }, 97,    "tcp"  },
+  { "swift-rvf",       { NULL }, 97,    "udp"  },
+  { "tacnews",         { NULL }, 98,    "tcp"  },
+  { "tacnews",         { NULL }, 98,    "udp"  },
+  { "metagram",        { NULL }, 99,    "tcp"  },
+  { "metagram",        { NULL }, 99,    "udp"  },
+  { "newacct",         { NULL }, 100,   "tcp"  },
+  { "hostname",        { NULL }, 101,   "tcp"  },
+  { "hostname",        { NULL }, 101,   "udp"  },
+  { "iso-tsap",        { NULL }, 102,   "tcp"  },
+  { "iso-tsap",        { NULL }, 102,   "udp"  },
+  { "gppitnp",         { NULL }, 103,   "tcp"  },
+  { "gppitnp",         { NULL }, 103,   "udp"  },
+  { "acr-nema",        { NULL }, 104,   "tcp"  },
+  { "acr-nema",        { NULL }, 104,   "udp"  },
+  { "cso",             { NULL }, 105,   "tcp"  },
+  { "cso",             { NULL }, 105,   "udp"  },
+  { "csnet-ns",        { NULL }, 105,   "tcp"  },
+  { "csnet-ns",        { NULL }, 105,   "udp"  },
+  { "3com-tsmux",      { NULL }, 106,   "tcp"  },
+  { "3com-tsmux",      { NULL }, 106,   "udp"  },
+  { "rtelnet",         { NULL }, 107,   "tcp"  },
+  { "rtelnet",         { NULL }, 107,   "udp"  },
+  { "snagas",          { NULL }, 108,   "tcp"  },
+  { "snagas",          { NULL }, 108,   "udp"  },
+  { "pop2",            { NULL }, 109,   "tcp"  },
+  { "pop2",            { NULL }, 109,   "udp"  },
+  { "pop3",            { NULL }, 110,   "tcp"  },
+  { "pop3",            { NULL }, 110,   "udp"  },
+  { "sunrpc",          { NULL }, 111,   "tcp"  },
+  { "sunrpc",          { NULL }, 111,   "udp"  },
+  { "mcidas",          { NULL }, 112,   "tcp"  },
+  { "mcidas",          { NULL }, 112,   "udp"  },
+  { "ident",           { NULL }, 113,   "tcp"  },
+  { "auth",            { NULL }, 113,   "tcp"  },
+  { "auth",            { NULL }, 113,   "udp"  },
+  { "sftp",            { NULL }, 115,   "tcp"  },
+  { "sftp",            { NULL }, 115,   "udp"  },
+  { "ansanotify",      { NULL }, 116,   "tcp"  },
+  { "ansanotify",      { NULL }, 116,   "udp"  },
+  { "uucp-path",       { NULL }, 117,   "tcp"  },
+  { "uucp-path",       { NULL }, 117,   "udp"  },
+  { "sqlserv",         { NULL }, 118,   "tcp"  },
+  { "sqlserv",         { NULL }, 118,   "udp"  },
+  { "nntp",            { NULL }, 119,   "tcp"  },
+  { "nntp",            { NULL }, 119,   "udp"  },
+  { "cfdptkt",         { NULL }, 120,   "tcp"  },
+  { "cfdptkt",         { NULL }, 120,   "udp"  },
+  { "erpc",            { NULL }, 121,   "tcp"  },
+  { "erpc",            { NULL }, 121,   "udp"  },
+  { "smakynet",        { NULL }, 122,   "tcp"  },
+  { "smakynet",        { NULL }, 122,   "udp"  },
+  { "ntp",             { NULL }, 123,   "tcp"  },
+  { "ntp",             { NULL }, 123,   "udp"  },
+  { "ansatrader",      { NULL }, 124,   "tcp"  },
+  { "ansatrader",      { NULL }, 124,   "udp"  },
+  { "locus-map",       { NULL }, 125,   "tcp"  },
+  { "locus-map",       { NULL }, 125,   "udp"  },
+  { "nxedit",          { NULL }, 126,   "tcp"  },
+  { "nxedit",          { NULL }, 126,   "udp"  },
+  { "locus-con",       { NULL }, 127,   "tcp"  },
+  { "locus-con",       { NULL }, 127,   "udp"  },
+  { "gss-xlicen",      { NULL }, 128,   "tcp"  },
+  { "gss-xlicen",      { NULL }, 128,   "udp"  },
+  { "pwdgen",          { NULL }, 129,   "tcp"  },
+  { "pwdgen",          { NULL }, 129,   "udp"  },
+  { "cisco-fna",       { NULL }, 130,   "tcp"  },
+  { "cisco-fna",       { NULL }, 130,   "udp"  },
+  { "cisco-tna",       { NULL }, 131,   "tcp"  },
+  { "cisco-tna",       { NULL }, 131,   "udp"  },
+  { "cisco-sys",       { NULL }, 132,   "tcp"  },
+  { "cisco-sys",       { NULL }, 132,   "udp"  },
+  { "statsrv",         { NULL }, 133,   "tcp"  },
+  { "statsrv",         { NULL }, 133,   "udp"  },
+  { "ingres-net",      { NULL }, 134,   "tcp"  },
+  { "ingres-net",      { NULL }, 134,   "udp"  },
+  { "epmap",           { NULL }, 135,   "tcp"  },
+  { "epmap",           { NULL }, 135,   "udp"  },
+  { "profile",         { NULL }, 136,   "tcp"  },
+  { "profile",         { NULL }, 136,   "udp"  },
+  { "netbios-ns",      { NULL }, 137,   "tcp"  },
+  { "netbios-ns",      { NULL }, 137,   "udp"  },
+  { "netbios-dgm",     { NULL }, 138,   "tcp"  },
+  { "netbios-dgm",     { NULL }, 138,   "udp"  },
+  { "netbios-ssn",     { NULL }, 139,   "tcp"  },
+  { "netbios-ssn",     { NULL }, 139,   "udp"  },
+  { "emfis-data",      { NULL }, 140,   "tcp"  },
+  { "emfis-data",      { NULL }, 140,   "udp"  },
+  { "emfis-cntl",      { NULL }, 141,   "tcp"  },
+  { "emfis-cntl",      { NULL }, 141,   "udp"  },
+  { "bl-idm",          { NULL }, 142,   "tcp"  },
+  { "bl-idm",          { NULL }, 142,   "udp"  },
+  { "imap",            { NULL }, 143,   "tcp"  },
+  { "imap",            { NULL }, 143,   "udp"  },
+  { "uma",             { NULL }, 144,   "tcp"  },
+  { "uma",             { NULL }, 144,   "udp"  },
+  { "uaac",            { NULL }, 145,   "tcp"  },
+  { "uaac",            { NULL }, 145,   "udp"  },
+  { "iso-tp0",         { NULL }, 146,   "tcp"  },
+  { "iso-tp0",         { NULL }, 146,   "udp"  },
+  { "iso-ip",          { NULL }, 147,   "tcp"  },
+  { "iso-ip",          { NULL }, 147,   "udp"  },
+  { "jargon",          { NULL }, 148,   "tcp"  },
+  { "jargon",          { NULL }, 148,   "udp"  },
+  { "aed-512",         { NULL }, 149,   "tcp"  },
+  { "aed-512",         { NULL }, 149,   "udp"  },
+  { "sql-net",         { NULL }, 150,   "tcp"  },
+  { "sql-net",         { NULL }, 150,   "udp"  },
+  { "hems",            { NULL }, 151,   "tcp"  },
+  { "hems",            { NULL }, 151,   "udp"  },
+  { "bftp",            { NULL }, 152,   "tcp"  },
+  { "bftp",            { NULL }, 152,   "udp"  },
+  { "sgmp",            { NULL }, 153,   "tcp"  },
+  { "sgmp",            { NULL }, 153,   "udp"  },
+  { "netsc-prod",      { NULL }, 154,   "tcp"  },
+  { "netsc-prod",      { NULL }, 154,   "udp"  },
+  { "netsc-dev",       { NULL }, 155,   "tcp"  },
+  { "netsc-dev",       { NULL }, 155,   "udp"  },
+  { "sqlsrv",          { NULL }, 156,   "tcp"  },
+  { "sqlsrv",          { NULL }, 156,   "udp"  },
+  { "knet-cmp",        { NULL }, 157,   "tcp"  },
+  { "knet-cmp",        { NULL }, 157,   "udp"  },
+  { "pcmail-srv",      { NULL }, 158,   "tcp"  },
+  { "pcmail-srv",      { NULL }, 158,   "udp"  },
+  { "nss-routing",     { NULL }, 159,   "tcp"  },
+  { "nss-routing",     { NULL }, 159,   "udp"  },
+  { "sgmp-traps",      { NULL }, 160,   "tcp"  },
+  { "sgmp-traps",      { NULL }, 160,   "udp"  },
+  { "snmp",            { NULL }, 161,   "tcp"  },
+  { "snmp",            { NULL }, 161,   "udp"  },
+  { "snmptrap",        { NULL }, 162,   "tcp"  },
+  { "snmptrap",        { NULL }, 162,   "udp"  },
+  { "cmip-man",        { NULL }, 163,   "tcp"  },
+  { "cmip-man",        { NULL }, 163,   "udp"  },
+  { "cmip-agent",      { NULL }, 164,   "tcp"  },
+  { "cmip-agent",      { NULL }, 164,   "udp"  },
+  { "xns-courier",     { NULL }, 165,   "tcp"  },
+  { "xns-courier",     { NULL }, 165,   "udp"  },
+  { "s-net",           { NULL }, 166,   "tcp"  },
+  { "s-net",           { NULL }, 166,   "udp"  },
+  { "namp",            { NULL }, 167,   "tcp"  },
+  { "namp",            { NULL }, 167,   "udp"  },
+  { "rsvd",            { NULL }, 168,   "tcp"  },
+  { "rsvd",            { NULL }, 168,   "udp"  },
+  { "send",            { NULL }, 169,   "tcp"  },
+  { "send",            { NULL }, 169,   "udp"  },
+  { "print-srv",       { NULL }, 170,   "tcp"  },
+  { "print-srv",       { NULL }, 170,   "udp"  },
+  { "multiplex",       { NULL }, 171,   "tcp"  },
+  { "multiplex",       { NULL }, 171,   "udp"  },
+  { "cl/1",            { NULL }, 172,   "tcp"  },
+  { "cl/1",            { NULL }, 172,   "udp"  },
+  { "xyplex-mux",      { NULL }, 173,   "tcp"  },
+  { "xyplex-mux",      { NULL }, 173,   "udp"  },
+  { "mailq",           { NULL }, 174,   "tcp"  },
+  { "mailq",           { NULL }, 174,   "udp"  },
+  { "vmnet",           { NULL }, 175,   "tcp"  },
+  { "vmnet",           { NULL }, 175,   "udp"  },
+  { "genrad-mux",      { NULL }, 176,   "tcp"  },
+  { "genrad-mux",      { NULL }, 176,   "udp"  },
+  { "xdmcp",           { NULL }, 177,   "tcp"  },
+  { "xdmcp",           { NULL }, 177,   "udp"  },
+  { "nextstep",        { NULL }, 178,   "tcp"  },
+  { "nextstep",        { NULL }, 178,   "udp"  },
+  { "bgp",             { NULL }, 179,   "tcp"  },
+  { "bgp",             { NULL }, 179,   "udp"  },
+  { "bgp",             { NULL }, 179,   "sctp" },
+  { "ris",             { NULL }, 180,   "tcp"  },
+  { "ris",             { NULL }, 180,   "udp"  },
+  { "unify",           { NULL }, 181,   "tcp"  },
+  { "unify",           { NULL }, 181,   "udp"  },
+  { "audit",           { NULL }, 182,   "tcp"  },
+  { "audit",           { NULL }, 182,   "udp"  },
+  { "ocbinder",        { NULL }, 183,   "tcp"  },
+  { "ocbinder",        { NULL }, 183,   "udp"  },
+  { "ocserver",        { NULL }, 184,   "tcp"  },
+  { "ocserver",        { NULL }, 184,   "udp"  },
+  { "remote-kis",      { NULL }, 185,   "tcp"  },
+  { "remote-kis",      { NULL }, 185,   "udp"  },
+  { "kis",             { NULL }, 186,   "tcp"  },
+  { "kis",             { NULL }, 186,   "udp"  },
+  { "aci",             { NULL }, 187,   "tcp"  },
+  { "aci",             { NULL }, 187,   "udp"  },
+  { "mumps",           { NULL }, 188,   "tcp"  },
+  { "mumps",           { NULL }, 188,   "udp"  },
+  { "qft",             { NULL }, 189,   "tcp"  },
+  { "qft",             { NULL }, 189,   "udp"  },
+  { "gacp",            { NULL }, 190,   "tcp"  },
+  { "gacp",            { NULL }, 190,   "udp"  },
+  { "prospero",        { NULL }, 191,   "tcp"  },
+  { "prospero",        { NULL }, 191,   "udp"  },
+  { "osu-nms",         { NULL }, 192,   "tcp"  },
+  { "osu-nms",         { NULL }, 192,   "udp"  },
+  { "srmp",            { NULL }, 193,   "tcp"  },
+  { "srmp",            { NULL }, 193,   "udp"  },
+  { "irc",             { NULL }, 194,   "tcp"  },
+  { "irc",             { NULL }, 194,   "udp"  },
+  { "dn6-nlm-aud",     { NULL }, 195,   "tcp"  },
+  { "dn6-nlm-aud",     { NULL }, 195,   "udp"  },
+  { "dn6-smm-red",     { NULL }, 196,   "tcp"  },
+  { "dn6-smm-red",     { NULL }, 196,   "udp"  },
+  { "dls",             { NULL }, 197,   "tcp"  },
+  { "dls",             { NULL }, 197,   "udp"  },
+  { "dls-mon",         { NULL }, 198,   "tcp"  },
+  { "dls-mon",         { NULL }, 198,   "udp"  },
+  { "smux",            { NULL }, 199,   "tcp"  },
+  { "smux",            { NULL }, 199,   "udp"  },
+  { "src",             { NULL }, 200,   "tcp"  },
+  { "src",             { NULL }, 200,   "udp"  },
+  { "at-rtmp",         { NULL }, 201,   "tcp"  },
+  { "at-rtmp",         { NULL }, 201,   "udp"  },
+  { "at-nbp",          { NULL }, 202,   "tcp"  },
+  { "at-nbp",          { NULL }, 202,   "udp"  },
+  { "at-3",            { NULL }, 203,   "tcp"  },
+  { "at-3",            { NULL }, 203,   "udp"  },
+  { "at-echo",         { NULL }, 204,   "tcp"  },
+  { "at-echo",         { NULL }, 204,   "udp"  },
+  { "at-5",            { NULL }, 205,   "tcp"  },
+  { "at-5",            { NULL }, 205,   "udp"  },
+  { "at-zis",          { NULL }, 206,   "tcp"  },
+  { "at-zis",          { NULL }, 206,   "udp"  },
+  { "at-7",            { NULL }, 207,   "tcp"  },
+  { "at-7",            { NULL }, 207,   "udp"  },
+  { "at-8",            { NULL }, 208,   "tcp"  },
+  { "at-8",            { NULL }, 208,   "udp"  },
+  { "qmtp",            { NULL }, 209,   "tcp"  },
+  { "qmtp",            { NULL }, 209,   "udp"  },
+  { "z39.50",          { NULL }, 210,   "tcp"  },
+  { "z39.50",          { NULL }, 210,   "udp"  },
+  { "914c/g",          { NULL }, 211,   "tcp"  },
+  { "914c/g",          { NULL }, 211,   "udp"  },
+  { "anet",            { NULL }, 212,   "tcp"  },
+  { "anet",            { NULL }, 212,   "udp"  },
+  { "ipx",             { NULL }, 213,   "tcp"  },
+  { "ipx",             { NULL }, 213,   "udp"  },
+  { "vmpwscs",         { NULL }, 214,   "tcp"  },
+  { "vmpwscs",         { NULL }, 214,   "udp"  },
+  { "softpc",          { NULL }, 215,   "tcp"  },
+  { "softpc",          { NULL }, 215,   "udp"  },
+  { "CAIlic",          { NULL }, 216,   "tcp"  },
+  { "CAIlic",          { NULL }, 216,   "udp"  },
+  { "dbase",           { NULL }, 217,   "tcp"  },
+  { "dbase",           { NULL }, 217,   "udp"  },
+  { "mpp",             { NULL }, 218,   "tcp"  },
+  { "mpp",             { NULL }, 218,   "udp"  },
+  { "uarps",           { NULL }, 219,   "tcp"  },
+  { "uarps",           { NULL }, 219,   "udp"  },
+  { "imap3",           { NULL }, 220,   "tcp"  },
+  { "imap3",           { NULL }, 220,   "udp"  },
+  { "fln-spx",         { NULL }, 221,   "tcp"  },
+  { "fln-spx",         { NULL }, 221,   "udp"  },
+  { "rsh-spx",         { NULL }, 222,   "tcp"  },
+  { "rsh-spx",         { NULL }, 222,   "udp"  },
+  { "cdc",             { NULL }, 223,   "tcp"  },
+  { "cdc",             { NULL }, 223,   "udp"  },
+  { "masqdialer",      { NULL }, 224,   "tcp"  },
+  { "masqdialer",      { NULL }, 224,   "udp"  },
+  { "direct",          { NULL }, 242,   "tcp"  },
+  { "direct",          { NULL }, 242,   "udp"  },
+  { "sur-meas",        { NULL }, 243,   "tcp"  },
+  { "sur-meas",        { NULL }, 243,   "udp"  },
+  { "inbusiness",      { NULL }, 244,   "tcp"  },
+  { "inbusiness",      { NULL }, 244,   "udp"  },
+  { "link",            { NULL }, 245,   "tcp"  },
+  { "link",            { NULL }, 245,   "udp"  },
+  { "dsp3270",         { NULL }, 246,   "tcp"  },
+  { "dsp3270",         { NULL }, 246,   "udp"  },
+  { "subntbcst_tftp",  { NULL }, 247,   "tcp"  },
+  { "subntbcst_tftp",  { NULL }, 247,   "udp"  },
+  { "bhfhs",           { NULL }, 248,   "tcp"  },
+  { "bhfhs",           { NULL }, 248,   "udp"  },
+  { "rap",             { NULL }, 256,   "tcp"  },
+  { "rap",             { NULL }, 256,   "udp"  },
+  { "set",             { NULL }, 257,   "tcp"  },
+  { "set",             { NULL }, 257,   "udp"  },
+  { "esro-gen",        { NULL }, 259,   "tcp"  },
+  { "esro-gen",        { NULL }, 259,   "udp"  },
+  { "openport",        { NULL }, 260,   "tcp"  },
+  { "openport",        { NULL }, 260,   "udp"  },
+  { "nsiiops",         { NULL }, 261,   "tcp"  },
+  { "nsiiops",         { NULL }, 261,   "udp"  },
+  { "arcisdms",        { NULL }, 262,   "tcp"  },
+  { "arcisdms",        { NULL }, 262,   "udp"  },
+  { "hdap",            { NULL }, 263,   "tcp"  },
+  { "hdap",            { NULL }, 263,   "udp"  },
+  { "bgmp",            { NULL }, 264,   "tcp"  },
+  { "bgmp",            { NULL }, 264,   "udp"  },
+  { "x-bone-ctl",      { NULL }, 265,   "tcp"  },
+  { "x-bone-ctl",      { NULL }, 265,   "udp"  },
+  { "sst",             { NULL }, 266,   "tcp"  },
+  { "sst",             { NULL }, 266,   "udp"  },
+  { "td-service",      { NULL }, 267,   "tcp"  },
+  { "td-service",      { NULL }, 267,   "udp"  },
+  { "td-replica",      { NULL }, 268,   "tcp"  },
+  { "td-replica",      { NULL }, 268,   "udp"  },
+  { "manet",           { NULL }, 269,   "tcp"  },
+  { "manet",           { NULL }, 269,   "udp"  },
+  { "gist",            { NULL }, 270,   "udp"  },
+  { "http-mgmt",       { NULL }, 280,   "tcp"  },
+  { "http-mgmt",       { NULL }, 280,   "udp"  },
+  { "personal-link",   { NULL }, 281,   "tcp"  },
+  { "personal-link",   { NULL }, 281,   "udp"  },
+  { "cableport-ax",    { NULL }, 282,   "tcp"  },
+  { "cableport-ax",    { NULL }, 282,   "udp"  },
+  { "rescap",          { NULL }, 283,   "tcp"  },
+  { "rescap",          { NULL }, 283,   "udp"  },
+  { "corerjd",         { NULL }, 284,   "tcp"  },
+  { "corerjd",         { NULL }, 284,   "udp"  },
+  { "fxp",             { NULL }, 286,   "tcp"  },
+  { "fxp",             { NULL }, 286,   "udp"  },
+  { "k-block",         { NULL }, 287,   "tcp"  },
+  { "k-block",         { NULL }, 287,   "udp"  },
+  { "novastorbakcup",  { NULL }, 308,   "tcp"  },
+  { "novastorbakcup",  { NULL }, 308,   "udp"  },
+  { "entrusttime",     { NULL }, 309,   "tcp"  },
+  { "entrusttime",     { NULL }, 309,   "udp"  },
+  { "bhmds",           { NULL }, 310,   "tcp"  },
+  { "bhmds",           { NULL }, 310,   "udp"  },
+  { "asip-webadmin",   { NULL }, 311,   "tcp"  },
+  { "asip-webadmin",   { NULL }, 311,   "udp"  },
+  { "vslmp",           { NULL }, 312,   "tcp"  },
+  { "vslmp",           { NULL }, 312,   "udp"  },
+  { "magenta-logic",   { NULL }, 313,   "tcp"  },
+  { "magenta-logic",   { NULL }, 313,   "udp"  },
+  { "opalis-robot",    { NULL }, 314,   "tcp"  },
+  { "opalis-robot",    { NULL }, 314,   "udp"  },
+  { "dpsi",            { NULL }, 315,   "tcp"  },
+  { "dpsi",            { NULL }, 315,   "udp"  },
+  { "decauth",         { NULL }, 316,   "tcp"  },
+  { "decauth",         { NULL }, 316,   "udp"  },
+  { "zannet",          { NULL }, 317,   "tcp"  },
+  { "zannet",          { NULL }, 317,   "udp"  },
+  { "pkix-timestamp",  { NULL }, 318,   "tcp"  },
+  { "pkix-timestamp",  { NULL }, 318,   "udp"  },
+  { "ptp-event",       { NULL }, 319,   "tcp"  },
+  { "ptp-event",       { NULL }, 319,   "udp"  },
+  { "ptp-general",     { NULL }, 320,   "tcp"  },
+  { "ptp-general",     { NULL }, 320,   "udp"  },
+  { "pip",             { NULL }, 321,   "tcp"  },
+  { "pip",             { NULL }, 321,   "udp"  },
+  { "rtsps",           { NULL }, 322,   "tcp"  },
+  { "rtsps",           { NULL }, 322,   "udp"  },
+  { "texar",           { NULL }, 333,   "tcp"  },
+  { "texar",           { NULL }, 333,   "udp"  },
+  { "pdap",            { NULL }, 344,   "tcp"  },
+  { "pdap",            { NULL }, 344,   "udp"  },
+  { "pawserv",         { NULL }, 345,   "tcp"  },
+  { "pawserv",         { NULL }, 345,   "udp"  },
+  { "zserv",           { NULL }, 346,   "tcp"  },
+  { "zserv",           { NULL }, 346,   "udp"  },
+  { "fatserv",         { NULL }, 347,   "tcp"  },
+  { "fatserv",         { NULL }, 347,   "udp"  },
+  { "csi-sgwp",        { NULL }, 348,   "tcp"  },
+  { "csi-sgwp",        { NULL }, 348,   "udp"  },
+  { "mftp",            { NULL }, 349,   "tcp"  },
+  { "mftp",            { NULL }, 349,   "udp"  },
+  { "matip-type-a",    { NULL }, 350,   "tcp"  },
+  { "matip-type-a",    { NULL }, 350,   "udp"  },
+  { "matip-type-b",    { NULL }, 351,   "tcp"  },
+  { "matip-type-b",    { NULL }, 351,   "udp"  },
+  { "bhoetty",         { NULL }, 351,   "tcp"  },
+  { "bhoetty",         { NULL }, 351,   "udp"  },
+  { "dtag-ste-sb",     { NULL }, 352,   "tcp"  },
+  { "dtag-ste-sb",     { NULL }, 352,   "udp"  },
+  { "bhoedap4",        { NULL }, 352,   "tcp"  },
+  { "bhoedap4",        { NULL }, 352,   "udp"  },
+  { "ndsauth",         { NULL }, 353,   "tcp"  },
+  { "ndsauth",         { NULL }, 353,   "udp"  },
+  { "bh611",           { NULL }, 354,   "tcp"  },
+  { "bh611",           { NULL }, 354,   "udp"  },
+  { "datex-asn",       { NULL }, 355,   "tcp"  },
+  { "datex-asn",       { NULL }, 355,   "udp"  },
+  { "cloanto-net-1",   { NULL }, 356,   "tcp"  },
+  { "cloanto-net-1",   { NULL }, 356,   "udp"  },
+  { "bhevent",         { NULL }, 357,   "tcp"  },
+  { "bhevent",         { NULL }, 357,   "udp"  },
+  { "shrinkwrap",      { NULL }, 358,   "tcp"  },
+  { "shrinkwrap",      { NULL }, 358,   "udp"  },
+  { "nsrmp",           { NULL }, 359,   "tcp"  },
+  { "nsrmp",           { NULL }, 359,   "udp"  },
+  { "scoi2odialog",    { NULL }, 360,   "tcp"  },
+  { "scoi2odialog",    { NULL }, 360,   "udp"  },
+  { "semantix",        { NULL }, 361,   "tcp"  },
+  { "semantix",        { NULL }, 361,   "udp"  },
+  { "srssend",         { NULL }, 362,   "tcp"  },
+  { "srssend",         { NULL }, 362,   "udp"  },
+  { "rsvp_tunnel",     { NULL }, 363,   "tcp"  },
+  { "rsvp_tunnel",     { NULL }, 363,   "udp"  },
+  { "aurora-cmgr",     { NULL }, 364,   "tcp"  },
+  { "aurora-cmgr",     { NULL }, 364,   "udp"  },
+  { "dtk",             { NULL }, 365,   "tcp"  },
+  { "dtk",             { NULL }, 365,   "udp"  },
+  { "odmr",            { NULL }, 366,   "tcp"  },
+  { "odmr",            { NULL }, 366,   "udp"  },
+  { "mortgageware",    { NULL }, 367,   "tcp"  },
+  { "mortgageware",    { NULL }, 367,   "udp"  },
+  { "qbikgdp",         { NULL }, 368,   "tcp"  },
+  { "qbikgdp",         { NULL }, 368,   "udp"  },
+  { "rpc2portmap",     { NULL }, 369,   "tcp"  },
+  { "rpc2portmap",     { NULL }, 369,   "udp"  },
+  { "codaauth2",       { NULL }, 370,   "tcp"  },
+  { "codaauth2",       { NULL }, 370,   "udp"  },
+  { "clearcase",       { NULL }, 371,   "tcp"  },
+  { "clearcase",       { NULL }, 371,   "udp"  },
+  { "ulistproc",       { NULL }, 372,   "tcp"  },
+  { "ulistproc",       { NULL }, 372,   "udp"  },
+  { "legent-1",        { NULL }, 373,   "tcp"  },
+  { "legent-1",        { NULL }, 373,   "udp"  },
+  { "legent-2",        { NULL }, 374,   "tcp"  },
+  { "legent-2",        { NULL }, 374,   "udp"  },
+  { "hassle",          { NULL }, 375,   "tcp"  },
+  { "hassle",          { NULL }, 375,   "udp"  },
+  { "nip",             { NULL }, 376,   "tcp"  },
+  { "nip",             { NULL }, 376,   "udp"  },
+  { "tnETOS",          { NULL }, 377,   "tcp"  },
+  { "tnETOS",          { NULL }, 377,   "udp"  },
+  { "dsETOS",          { NULL }, 378,   "tcp"  },
+  { "dsETOS",          { NULL }, 378,   "udp"  },
+  { "is99c",           { NULL }, 379,   "tcp"  },
+  { "is99c",           { NULL }, 379,   "udp"  },
+  { "is99s",           { NULL }, 380,   "tcp"  },
+  { "is99s",           { NULL }, 380,   "udp"  },
+  { "hp-collector",    { NULL }, 381,   "tcp"  },
+  { "hp-collector",    { NULL }, 381,   "udp"  },
+  { "hp-managed-node", { NULL }, 382,   "tcp"  },
+  { "hp-managed-node", { NULL }, 382,   "udp"  },
+  { "hp-alarm-mgr",    { NULL }, 383,   "tcp"  },
+  { "hp-alarm-mgr",    { NULL }, 383,   "udp"  },
+  { "arns",            { NULL }, 384,   "tcp"  },
+  { "arns",            { NULL }, 384,   "udp"  },
+  { "ibm-app",         { NULL }, 385,   "tcp"  },
+  { "ibm-app",         { NULL }, 385,   "udp"  },
+  { "asa",             { NULL }, 386,   "tcp"  },
+  { "asa",             { NULL }, 386,   "udp"  },
+  { "aurp",            { NULL }, 387,   "tcp"  },
+  { "aurp",            { NULL }, 387,   "udp"  },
+  { "unidata-ldm",     { NULL }, 388,   "tcp"  },
+  { "unidata-ldm",     { NULL }, 388,   "udp"  },
+  { "ldap",            { NULL }, 389,   "tcp"  },
+  { "ldap",            { NULL }, 389,   "udp"  },
+  { "uis",             { NULL }, 390,   "tcp"  },
+  { "uis",             { NULL }, 390,   "udp"  },
+  { "synotics-relay",  { NULL }, 391,   "tcp"  },
+  { "synotics-relay",  { NULL }, 391,   "udp"  },
+  { "synotics-broker", { NULL }, 392,   "tcp"  },
+  { "synotics-broker", { NULL }, 392,   "udp"  },
+  { "meta5",           { NULL }, 393,   "tcp"  },
+  { "meta5",           { NULL }, 393,   "udp"  },
+  { "embl-ndt",        { NULL }, 394,   "tcp"  },
+  { "embl-ndt",        { NULL }, 394,   "udp"  },
+  { "netcp",           { NULL }, 395,   "tcp"  },
+  { "netcp",           { NULL }, 395,   "udp"  },
+  { "netware-ip",      { NULL }, 396,   "tcp"  },
+  { "netware-ip",      { NULL }, 396,   "udp"  },
+  { "mptn",            { NULL }, 397,   "tcp"  },
+  { "mptn",            { NULL }, 397,   "udp"  },
+  { "kryptolan",       { NULL }, 398,   "tcp"  },
+  { "kryptolan",       { NULL }, 398,   "udp"  },
+  { "iso-tsap-c2",     { NULL }, 399,   "tcp"  },
+  { "iso-tsap-c2",     { NULL }, 399,   "udp"  },
+  { "osb-sd",          { NULL }, 400,   "tcp"  },
+  { "osb-sd",          { NULL }, 400,   "udp"  },
+  { "ups",             { NULL }, 401,   "tcp"  },
+  { "ups",             { NULL }, 401,   "udp"  },
+  { "genie",           { NULL }, 402,   "tcp"  },
+  { "genie",           { NULL }, 402,   "udp"  },
+  { "decap",           { NULL }, 403,   "tcp"  },
+  { "decap",           { NULL }, 403,   "udp"  },
+  { "nced",            { NULL }, 404,   "tcp"  },
+  { "nced",            { NULL }, 404,   "udp"  },
+  { "ncld",            { NULL }, 405,   "tcp"  },
+  { "ncld",            { NULL }, 405,   "udp"  },
+  { "imsp",            { NULL }, 406,   "tcp"  },
+  { "imsp",            { NULL }, 406,   "udp"  },
+  { "timbuktu",        { NULL }, 407,   "tcp"  },
+  { "timbuktu",        { NULL }, 407,   "udp"  },
+  { "prm-sm",          { NULL }, 408,   "tcp"  },
+  { "prm-sm",          { NULL }, 408,   "udp"  },
+  { "prm-nm",          { NULL }, 409,   "tcp"  },
+  { "prm-nm",          { NULL }, 409,   "udp"  },
+  { "decladebug",      { NULL }, 410,   "tcp"  },
+  { "decladebug",      { NULL }, 410,   "udp"  },
+  { "rmt",             { NULL }, 411,   "tcp"  },
+  { "rmt",             { NULL }, 411,   "udp"  },
+  { "synoptics-trap",  { NULL }, 412,   "tcp"  },
+  { "synoptics-trap",  { NULL }, 412,   "udp"  },
+  { "smsp",            { NULL }, 413,   "tcp"  },
+  { "smsp",            { NULL }, 413,   "udp"  },
+  { "infoseek",        { NULL }, 414,   "tcp"  },
+  { "infoseek",        { NULL }, 414,   "udp"  },
+  { "bnet",            { NULL }, 415,   "tcp"  },
+  { "bnet",            { NULL }, 415,   "udp"  },
+  { "silverplatter",   { NULL }, 416,   "tcp"  },
+  { "silverplatter",   { NULL }, 416,   "udp"  },
+  { "onmux",           { NULL }, 417,   "tcp"  },
+  { "onmux",           { NULL }, 417,   "udp"  },
+  { "hyper-g",         { NULL }, 418,   "tcp"  },
+  { "hyper-g",         { NULL }, 418,   "udp"  },
+  { "ariel1",          { NULL }, 419,   "tcp"  },
+  { "ariel1",          { NULL }, 419,   "udp"  },
+  { "smpte",           { NULL }, 420,   "tcp"  },
+  { "smpte",           { NULL }, 420,   "udp"  },
+  { "ariel2",          { NULL }, 421,   "tcp"  },
+  { "ariel2",          { NULL }, 421,   "udp"  },
+  { "ariel3",          { NULL }, 422,   "tcp"  },
+  { "ariel3",          { NULL }, 422,   "udp"  },
+  { "opc-job-start",   { NULL }, 423,   "tcp"  },
+  { "opc-job-start",   { NULL }, 423,   "udp"  },
+  { "opc-job-track",   { NULL }, 424,   "tcp"  },
+  { "opc-job-track",   { NULL }, 424,   "udp"  },
+  { "icad-el",         { NULL }, 425,   "tcp"  },
+  { "icad-el",         { NULL }, 425,   "udp"  },
+  { "smartsdp",        { NULL }, 426,   "tcp"  },
+  { "smartsdp",        { NULL }, 426,   "udp"  },
+  { "svrloc",          { NULL }, 427,   "tcp"  },
+  { "svrloc",          { NULL }, 427,   "udp"  },
+  { "ocs_cmu",         { NULL }, 428,   "tcp"  },
+  { "ocs_cmu",         { NULL }, 428,   "udp"  },
+  { "ocs_amu",         { NULL }, 429,   "tcp"  },
+  { "ocs_amu",         { NULL }, 429,   "udp"  },
+  { "utmpsd",          { NULL }, 430,   "tcp"  },
+  { "utmpsd",          { NULL }, 430,   "udp"  },
+  { "utmpcd",          { NULL }, 431,   "tcp"  },
+  { "utmpcd",          { NULL }, 431,   "udp"  },
+  { "iasd",            { NULL }, 432,   "tcp"  },
+  { "iasd",            { NULL }, 432,   "udp"  },
+  { "nnsp",            { NULL }, 433,   "tcp"  },
+  { "nnsp",            { NULL }, 433,   "udp"  },
+  { "mobileip-agent",  { NULL }, 434,   "tcp"  },
+  { "mobileip-agent",  { NULL }, 434,   "udp"  },
+  { "mobilip-mn",      { NULL }, 435,   "tcp"  },
+  { "mobilip-mn",      { NULL }, 435,   "udp"  },
+  { "dna-cml",         { NULL }, 436,   "tcp"  },
+  { "dna-cml",         { NULL }, 436,   "udp"  },
+  { "comscm",          { NULL }, 437,   "tcp"  },
+  { "comscm",          { NULL }, 437,   "udp"  },
+  { "dsfgw",           { NULL }, 438,   "tcp"  },
+  { "dsfgw",           { NULL }, 438,   "udp"  },
+  { "dasp",            { NULL }, 439,   "tcp"  },
+  { "dasp",            { NULL }, 439,   "udp"  },
+  { "sgcp",            { NULL }, 440,   "tcp"  },
+  { "sgcp",            { NULL }, 440,   "udp"  },
+  { "decvms-sysmgt",   { NULL }, 441,   "tcp"  },
+  { "decvms-sysmgt",   { NULL }, 441,   "udp"  },
+  { "cvc_hostd",       { NULL }, 442,   "tcp"  },
+  { "cvc_hostd",       { NULL }, 442,   "udp"  },
+  { "https",           { NULL }, 443,   "tcp"  },
+  { "https",           { NULL }, 443,   "udp"  },
+  { "https",           { NULL }, 443,   "sctp" },
+  { "snpp",            { NULL }, 444,   "tcp"  },
+  { "snpp",            { NULL }, 444,   "udp"  },
+  { "microsoft-ds",    { NULL }, 445,   "tcp"  },
+  { "microsoft-ds",    { NULL }, 445,   "udp"  },
+  { "ddm-rdb",         { NULL }, 446,   "tcp"  },
+  { "ddm-rdb",         { NULL }, 446,   "udp"  },
+  { "ddm-dfm",         { NULL }, 447,   "tcp"  },
+  { "ddm-dfm",         { NULL }, 447,   "udp"  },
+  { "ddm-ssl",         { NULL }, 448,   "tcp"  },
+  { "ddm-ssl",         { NULL }, 448,   "udp"  },
+  { "as-servermap",    { NULL }, 449,   "tcp"  },
+  { "as-servermap",    { NULL }, 449,   "udp"  },
+  { "tserver",         { NULL }, 450,   "tcp"  },
+  { "tserver",         { NULL }, 450,   "udp"  },
+  { "sfs-smp-net",     { NULL }, 451,   "tcp"  },
+  { "sfs-smp-net",     { NULL }, 451,   "udp"  },
+  { "sfs-config",      { NULL }, 452,   "tcp"  },
+  { "sfs-config",      { NULL }, 452,   "udp"  },
+  { "creativeserver",  { NULL }, 453,   "tcp"  },
+  { "creativeserver",  { NULL }, 453,   "udp"  },
+  { "contentserver",   { NULL }, 454,   "tcp"  },
+  { "contentserver",   { NULL }, 454,   "udp"  },
+  { "creativepartnr",  { NULL }, 455,   "tcp"  },
+  { "creativepartnr",  { NULL }, 455,   "udp"  },
+  { "macon-tcp",       { NULL }, 456,   "tcp"  },
+  { "macon-udp",       { NULL }, 456,   "udp"  },
+  { "scohelp",         { NULL }, 457,   "tcp"  },
+  { "scohelp",         { NULL }, 457,   "udp"  },
+  { "appleqtc",        { NULL }, 458,   "tcp"  },
+  { "appleqtc",        { NULL }, 458,   "udp"  },
+  { "ampr-rcmd",       { NULL }, 459,   "tcp"  },
+  { "ampr-rcmd",       { NULL }, 459,   "udp"  },
+  { "skronk",          { NULL }, 460,   "tcp"  },
+  { "skronk",          { NULL }, 460,   "udp"  },
+  { "datasurfsrv",     { NULL }, 461,   "tcp"  },
+  { "datasurfsrv",     { NULL }, 461,   "udp"  },
+  { "datasurfsrvsec",  { NULL }, 462,   "tcp"  },
+  { "datasurfsrvsec",  { NULL }, 462,   "udp"  },
+  { "alpes",           { NULL }, 463,   "tcp"  },
+  { "alpes",           { NULL }, 463,   "udp"  },
+  { "kpasswd",         { NULL }, 464,   "tcp"  },
+  { "kpasswd",         { NULL }, 464,   "udp"  },
+  { "urd",             { NULL }, 465,   "tcp"  },
+  { "igmpv3lite",      { NULL }, 465,   "udp"  },
+  { "digital-vrc",     { NULL }, 466,   "tcp"  },
+  { "digital-vrc",     { NULL }, 466,   "udp"  },
+  { "mylex-mapd",      { NULL }, 467,   "tcp"  },
+  { "mylex-mapd",      { NULL }, 467,   "udp"  },
+  { "photuris",        { NULL }, 468,   "tcp"  },
+  { "photuris",        { NULL }, 468,   "udp"  },
+  { "rcp",             { NULL }, 469,   "tcp"  },
+  { "rcp",             { NULL }, 469,   "udp"  },
+  { "scx-proxy",       { NULL }, 470,   "tcp"  },
+  { "scx-proxy",       { NULL }, 470,   "udp"  },
+  { "mondex",          { NULL }, 471,   "tcp"  },
+  { "mondex",          { NULL }, 471,   "udp"  },
+  { "ljk-login",       { NULL }, 472,   "tcp"  },
+  { "ljk-login",       { NULL }, 472,   "udp"  },
+  { "hybrid-pop",      { NULL }, 473,   "tcp"  },
+  { "hybrid-pop",      { NULL }, 473,   "udp"  },
+  { "tn-tl-w1",        { NULL }, 474,   "tcp"  },
+  { "tn-tl-w2",        { NULL }, 474,   "udp"  },
+  { "tcpnethaspsrv",   { NULL }, 475,   "tcp"  },
+  { "tcpnethaspsrv",   { NULL }, 475,   "udp"  },
+  { "tn-tl-fd1",       { NULL }, 476,   "tcp"  },
+  { "tn-tl-fd1",       { NULL }, 476,   "udp"  },
+  { "ss7ns",           { NULL }, 477,   "tcp"  },
+  { "ss7ns",           { NULL }, 477,   "udp"  },
+  { "spsc",            { NULL }, 478,   "tcp"  },
+  { "spsc",            { NULL }, 478,   "udp"  },
+  { "iafserver",       { NULL }, 479,   "tcp"  },
+  { "iafserver",       { NULL }, 479,   "udp"  },
+  { "iafdbase",        { NULL }, 480,   "tcp"  },
+  { "iafdbase",        { NULL }, 480,   "udp"  },
+  { "ph",              { NULL }, 481,   "tcp"  },
+  { "ph",              { NULL }, 481,   "udp"  },
+  { "bgs-nsi",         { NULL }, 482,   "tcp"  },
+  { "bgs-nsi",         { NULL }, 482,   "udp"  },
+  { "ulpnet",          { NULL }, 483,   "tcp"  },
+  { "ulpnet",          { NULL }, 483,   "udp"  },
+  { "integra-sme",     { NULL }, 484,   "tcp"  },
+  { "integra-sme",     { NULL }, 484,   "udp"  },
+  { "powerburst",      { NULL }, 485,   "tcp"  },
+  { "powerburst",      { NULL }, 485,   "udp"  },
+  { "avian",           { NULL }, 486,   "tcp"  },
+  { "avian",           { NULL }, 486,   "udp"  },
+  { "saft",            { NULL }, 487,   "tcp"  },
+  { "saft",            { NULL }, 487,   "udp"  },
+  { "gss-http",        { NULL }, 488,   "tcp"  },
+  { "gss-http",        { NULL }, 488,   "udp"  },
+  { "nest-protocol",   { NULL }, 489,   "tcp"  },
+  { "nest-protocol",   { NULL }, 489,   "udp"  },
+  { "micom-pfs",       { NULL }, 490,   "tcp"  },
+  { "micom-pfs",       { NULL }, 490,   "udp"  },
+  { "go-login",        { NULL }, 491,   "tcp"  },
+  { "go-login",        { NULL }, 491,   "udp"  },
+  { "ticf-1",          { NULL }, 492,   "tcp"  },
+  { "ticf-1",          { NULL }, 492,   "udp"  },
+  { "ticf-2",          { NULL }, 493,   "tcp"  },
+  { "ticf-2",          { NULL }, 493,   "udp"  },
+  { "pov-ray",         { NULL }, 494,   "tcp"  },
+  { "pov-ray",         { NULL }, 494,   "udp"  },
+  { "intecourier",     { NULL }, 495,   "tcp"  },
+  { "intecourier",     { NULL }, 495,   "udp"  },
+  { "pim-rp-disc",     { NULL }, 496,   "tcp"  },
+  { "pim-rp-disc",     { NULL }, 496,   "udp"  },
+  { "dantz",           { NULL }, 497,   "tcp"  },
+  { "dantz",           { NULL }, 497,   "udp"  },
+  { "siam",            { NULL }, 498,   "tcp"  },
+  { "siam",            { NULL }, 498,   "udp"  },
+  { "iso-ill",         { NULL }, 499,   "tcp"  },
+  { "iso-ill",         { NULL }, 499,   "udp"  },
+  { "isakmp",          { NULL }, 500,   "tcp"  },
+  { "isakmp",          { NULL }, 500,   "udp"  },
+  { "stmf",            { NULL }, 501,   "tcp"  },
+  { "stmf",            { NULL }, 501,   "udp"  },
+  { "asa-appl-proto",  { NULL }, 502,   "tcp"  },
+  { "asa-appl-proto",  { NULL }, 502,   "udp"  },
+  { "intrinsa",        { NULL }, 503,   "tcp"  },
+  { "intrinsa",        { NULL }, 503,   "udp"  },
+  { "citadel",         { NULL }, 504,   "tcp"  },
+  { "citadel",         { NULL }, 504,   "udp"  },
+  { "mailbox-lm",      { NULL }, 505,   "tcp"  },
+  { "mailbox-lm",      { NULL }, 505,   "udp"  },
+  { "ohimsrv",         { NULL }, 506,   "tcp"  },
+  { "ohimsrv",         { NULL }, 506,   "udp"  },
+  { "crs",             { NULL }, 507,   "tcp"  },
+  { "crs",             { NULL }, 507,   "udp"  },
+  { "xvttp",           { NULL }, 508,   "tcp"  },
+  { "xvttp",           { NULL }, 508,   "udp"  },
+  { "snare",           { NULL }, 509,   "tcp"  },
+  { "snare",           { NULL }, 509,   "udp"  },
+  { "fcp",             { NULL }, 510,   "tcp"  },
+  { "fcp",             { NULL }, 510,   "udp"  },
+  { "passgo",          { NULL }, 511,   "tcp"  },
+  { "passgo",          { NULL }, 511,   "udp"  },
+  { "exec",            { NULL }, 512,   "tcp"  },
+  { "comsat",          { NULL }, 512,   "udp"  },
+  { "biff",            { NULL }, 512,   "udp"  },
+  { "login",           { NULL }, 513,   "tcp"  },
+  { "who",             { NULL }, 513,   "udp"  },
+  { "shell",           { NULL }, 514,   "tcp"  },
+  { "syslog",          { NULL }, 514,   "udp"  },
+  { "printer",         { NULL }, 515,   "tcp"  },
+  { "printer",         { NULL }, 515,   "udp"  },
+  { "videotex",        { NULL }, 516,   "tcp"  },
+  { "videotex",        { NULL }, 516,   "udp"  },
+  { "talk",            { NULL }, 517,   "tcp"  },
+  { "talk",            { NULL }, 517,   "udp"  },
+  { "ntalk",           { NULL }, 518,   "tcp"  },
+  { "ntalk",           { NULL }, 518,   "udp"  },
+  { "utime",           { NULL }, 519,   "tcp"  },
+  { "utime",           { NULL }, 519,   "udp"  },
+  { "efs",             { NULL }, 520,   "tcp"  },
+  { "router",          { NULL }, 520,   "udp"  },
+  { "ripng",           { NULL }, 521,   "tcp"  },
+  { "ripng",           { NULL }, 521,   "udp"  },
+  { "ulp",             { NULL }, 522,   "tcp"  },
+  { "ulp",             { NULL }, 522,   "udp"  },
+  { "ibm-db2",         { NULL }, 523,   "tcp"  },
+  { "ibm-db2",         { NULL }, 523,   "udp"  },
+  { "ncp",             { NULL }, 524,   "tcp"  },
+  { "ncp",             { NULL }, 524,   "udp"  },
+  { "timed",           { NULL }, 525,   "tcp"  },
+  { "timed",           { NULL }, 525,   "udp"  },
+  { "tempo",           { NULL }, 526,   "tcp"  },
+  { "tempo",           { NULL }, 526,   "udp"  },
+  { "stx",             { NULL }, 527,   "tcp"  },
+  { "stx",             { NULL }, 527,   "udp"  },
+  { "custix",          { NULL }, 528,   "tcp"  },
+  { "custix",          { NULL }, 528,   "udp"  },
+  { "irc-serv",        { NULL }, 529,   "tcp"  },
+  { "irc-serv",        { NULL }, 529,   "udp"  },
+  { "courier",         { NULL }, 530,   "tcp"  },
+  { "courier",         { NULL }, 530,   "udp"  },
+  { "conference",      { NULL }, 531,   "tcp"  },
+  { "conference",      { NULL }, 531,   "udp"  },
+  { "netnews",         { NULL }, 532,   "tcp"  },
+  { "netnews",         { NULL }, 532,   "udp"  },
+  { "netwall",         { NULL }, 533,   "tcp"  },
+  { "netwall",         { NULL }, 533,   "udp"  },
+  { "windream",        { NULL }, 534,   "tcp"  },
+  { "windream",        { NULL }, 534,   "udp"  },
+  { "iiop",            { NULL }, 535,   "tcp"  },
+  { "iiop",            { NULL }, 535,   "udp"  },
+  { "opalis-rdv",      { NULL }, 536,   "tcp"  },
+  { "opalis-rdv",      { NULL }, 536,   "udp"  },
+  { "nmsp",            { NULL }, 537,   "tcp"  },
+  { "nmsp",            { NULL }, 537,   "udp"  },
+  { "gdomap",          { NULL }, 538,   "tcp"  },
+  { "gdomap",          { NULL }, 538,   "udp"  },
+  { "apertus-ldp",     { NULL }, 539,   "tcp"  },
+  { "apertus-ldp",     { NULL }, 539,   "udp"  },
+  { "uucp",            { NULL }, 540,   "tcp"  },
+  { "uucp",            { NULL }, 540,   "udp"  },
+  { "uucp-rlogin",     { NULL }, 541,   "tcp"  },
+  { "uucp-rlogin",     { NULL }, 541,   "udp"  },
+  { "commerce",        { NULL }, 542,   "tcp"  },
+  { "commerce",        { NULL }, 542,   "udp"  },
+  { "klogin",          { NULL }, 543,   "tcp"  },
+  { "klogin",          { NULL }, 543,   "udp"  },
+  { "kshell",          { NULL }, 544,   "tcp"  },
+  { "kshell",          { NULL }, 544,   "udp"  },
+  { "appleqtcsrvr",    { NULL }, 545,   "tcp"  },
+  { "appleqtcsrvr",    { NULL }, 545,   "udp"  },
+  { "dhcpv6-client",   { NULL }, 546,   "tcp"  },
+  { "dhcpv6-client",   { NULL }, 546,   "udp"  },
+  { "dhcpv6-server",   { NULL }, 547,   "tcp"  },
+  { "dhcpv6-server",   { NULL }, 547,   "udp"  },
+  { "afpovertcp",      { NULL }, 548,   "tcp"  },
+  { "afpovertcp",      { NULL }, 548,   "udp"  },
+  { "idfp",            { NULL }, 549,   "tcp"  },
+  { "idfp",            { NULL }, 549,   "udp"  },
+  { "new-rwho",        { NULL }, 550,   "tcp"  },
+  { "new-rwho",        { NULL }, 550,   "udp"  },
+  { "cybercash",       { NULL }, 551,   "tcp"  },
+  { "cybercash",       { NULL }, 551,   "udp"  },
+  { "devshr-nts",      { NULL }, 552,   "tcp"  },
+  { "devshr-nts",      { NULL }, 552,   "udp"  },
+  { "pirp",            { NULL }, 553,   "tcp"  },
+  { "pirp",            { NULL }, 553,   "udp"  },
+  { "rtsp",            { NULL }, 554,   "tcp"  },
+  { "rtsp",            { NULL }, 554,   "udp"  },
+  { "dsf",             { NULL }, 555,   "tcp"  },
+  { "dsf",             { NULL }, 555,   "udp"  },
+  { "remotefs",        { NULL }, 556,   "tcp"  },
+  { "remotefs",        { NULL }, 556,   "udp"  },
+  { "openvms-sysipc",  { NULL }, 557,   "tcp"  },
+  { "openvms-sysipc",  { NULL }, 557,   "udp"  },
+  { "sdnskmp",         { NULL }, 558,   "tcp"  },
+  { "sdnskmp",         { NULL }, 558,   "udp"  },
+  { "teedtap",         { NULL }, 559,   "tcp"  },
+  { "teedtap",         { NULL }, 559,   "udp"  },
+  { "rmonitor",        { NULL }, 560,   "tcp"  },
+  { "rmonitor",        { NULL }, 560,   "udp"  },
+  { "monitor",         { NULL }, 561,   "tcp"  },
+  { "monitor",         { NULL }, 561,   "udp"  },
+  { "chshell",         { NULL }, 562,   "tcp"  },
+  { "chshell",         { NULL }, 562,   "udp"  },
+  { "nntps",           { NULL }, 563,   "tcp"  },
+  { "nntps",           { NULL }, 563,   "udp"  },
+  { "9pfs",            { NULL }, 564,   "tcp"  },
+  { "9pfs",            { NULL }, 564,   "udp"  },
+  { "whoami",          { NULL }, 565,   "tcp"  },
+  { "whoami",          { NULL }, 565,   "udp"  },
+  { "streettalk",      { NULL }, 566,   "tcp"  },
+  { "streettalk",      { NULL }, 566,   "udp"  },
+  { "banyan-rpc",      { NULL }, 567,   "tcp"  },
+  { "banyan-rpc",      { NULL }, 567,   "udp"  },
+  { "ms-shuttle",      { NULL }, 568,   "tcp"  },
+  { "ms-shuttle",      { NULL }, 568,   "udp"  },
+  { "ms-rome",         { NULL }, 569,   "tcp"  },
+  { "ms-rome",         { NULL }, 569,   "udp"  },
+  { "meter",           { NULL }, 570,   "tcp"  },
+  { "meter",           { NULL }, 570,   "udp"  },
+  { "meter",           { NULL }, 571,   "tcp"  },
+  { "meter",           { NULL }, 571,   "udp"  },
+  { "sonar",           { NULL }, 572,   "tcp"  },
+  { "sonar",           { NULL }, 572,   "udp"  },
+  { "banyan-vip",      { NULL }, 573,   "tcp"  },
+  { "banyan-vip",      { NULL }, 573,   "udp"  },
+  { "ftp-agent",       { NULL }, 574,   "tcp"  },
+  { "ftp-agent",       { NULL }, 574,   "udp"  },
+  { "vemmi",           { NULL }, 575,   "tcp"  },
+  { "vemmi",           { NULL }, 575,   "udp"  },
+  { "ipcd",            { NULL }, 576,   "tcp"  },
+  { "ipcd",            { NULL }, 576,   "udp"  },
+  { "vnas",            { NULL }, 577,   "tcp"  },
+  { "vnas",            { NULL }, 577,   "udp"  },
+  { "ipdd",            { NULL }, 578,   "tcp"  },
+  { "ipdd",            { NULL }, 578,   "udp"  },
+  { "decbsrv",         { NULL }, 579,   "tcp"  },
+  { "decbsrv",         { NULL }, 579,   "udp"  },
+  { "sntp-heartbeat",  { NULL }, 580,   "tcp"  },
+  { "sntp-heartbeat",  { NULL }, 580,   "udp"  },
+  { "bdp",             { NULL }, 581,   "tcp"  },
+  { "bdp",             { NULL }, 581,   "udp"  },
+  { "scc-security",    { NULL }, 582,   "tcp"  },
+  { "scc-security",    { NULL }, 582,   "udp"  },
+  { "philips-vc",      { NULL }, 583,   "tcp"  },
+  { "philips-vc",      { NULL }, 583,   "udp"  },
+  { "keyserver",       { NULL }, 584,   "tcp"  },
+  { "keyserver",       { NULL }, 584,   "udp"  },
+  { "password-chg",    { NULL }, 586,   "tcp"  },
+  { "password-chg",    { NULL }, 586,   "udp"  },
+  { "submission",      { NULL }, 587,   "tcp"  },
+  { "submission",      { NULL }, 587,   "udp"  },
+  { "cal",             { NULL }, 588,   "tcp"  },
+  { "cal",             { NULL }, 588,   "udp"  },
+  { "eyelink",         { NULL }, 589,   "tcp"  },
+  { "eyelink",         { NULL }, 589,   "udp"  },
+  { "tns-cml",         { NULL }, 590,   "tcp"  },
+  { "tns-cml",         { NULL }, 590,   "udp"  },
+  { "http-alt",        { NULL }, 591,   "tcp"  },
+  { "http-alt",        { NULL }, 591,   "udp"  },
+  { "eudora-set",      { NULL }, 592,   "tcp"  },
+  { "eudora-set",      { NULL }, 592,   "udp"  },
+  { "http-rpc-epmap",  { NULL }, 593,   "tcp"  },
+  { "http-rpc-epmap",  { NULL }, 593,   "udp"  },
+  { "tpip",            { NULL }, 594,   "tcp"  },
+  { "tpip",            { NULL }, 594,   "udp"  },
+  { "cab-protocol",    { NULL }, 595,   "tcp"  },
+  { "cab-protocol",    { NULL }, 595,   "udp"  },
+  { "smsd",            { NULL }, 596,   "tcp"  },
+  { "smsd",            { NULL }, 596,   "udp"  },
+  { "ptcnameservice",  { NULL }, 597,   "tcp"  },
+  { "ptcnameservice",  { NULL }, 597,   "udp"  },
+  { "sco-websrvrmg3",  { NULL }, 598,   "tcp"  },
+  { "sco-websrvrmg3",  { NULL }, 598,   "udp"  },
+  { "acp",             { NULL }, 599,   "tcp"  },
+  { "acp",             { NULL }, 599,   "udp"  },
+  { "ipcserver",       { NULL }, 600,   "tcp"  },
+  { "ipcserver",       { NULL }, 600,   "udp"  },
+  { "syslog-conn",     { NULL }, 601,   "tcp"  },
+  { "syslog-conn",     { NULL }, 601,   "udp"  },
+  { "xmlrpc-beep",     { NULL }, 602,   "tcp"  },
+  { "xmlrpc-beep",     { NULL }, 602,   "udp"  },
+  { "idxp",            { NULL }, 603,   "tcp"  },
+  { "idxp",            { NULL }, 603,   "udp"  },
+  { "tunnel",          { NULL }, 604,   "tcp"  },
+  { "tunnel",          { NULL }, 604,   "udp"  },
+  { "soap-beep",       { NULL }, 605,   "tcp"  },
+  { "soap-beep",       { NULL }, 605,   "udp"  },
+  { "urm",             { NULL }, 606,   "tcp"  },
+  { "urm",             { NULL }, 606,   "udp"  },
+  { "nqs",             { NULL }, 607,   "tcp"  },
+  { "nqs",             { NULL }, 607,   "udp"  },
+  { "sift-uft",        { NULL }, 608,   "tcp"  },
+  { "sift-uft",        { NULL }, 608,   "udp"  },
+  { "npmp-trap",       { NULL }, 609,   "tcp"  },
+  { "npmp-trap",       { NULL }, 609,   "udp"  },
+  { "npmp-local",      { NULL }, 610,   "tcp"  },
+  { "npmp-local",      { NULL }, 610,   "udp"  },
+  { "npmp-gui",        { NULL }, 611,   "tcp"  },
+  { "npmp-gui",        { NULL }, 611,   "udp"  },
+  { "hmmp-ind",        { NULL }, 612,   "tcp"  },
+  { "hmmp-ind",        { NULL }, 612,   "udp"  },
+  { "hmmp-op",         { NULL }, 613,   "tcp"  },
+  { "hmmp-op",         { NULL }, 613,   "udp"  },
+  { "sshell",          { NULL }, 614,   "tcp"  },
+  { "sshell",          { NULL }, 614,   "udp"  },
+  { "sco-inetmgr",     { NULL }, 615,   "tcp"  },
+  { "sco-inetmgr",     { NULL }, 615,   "udp"  },
+  { "sco-sysmgr",      { NULL }, 616,   "tcp"  },
+  { "sco-sysmgr",      { NULL }, 616,   "udp"  },
+  { "sco-dtmgr",       { NULL }, 617,   "tcp"  },
+  { "sco-dtmgr",       { NULL }, 617,   "udp"  },
+  { "dei-icda",        { NULL }, 618,   "tcp"  },
+  { "dei-icda",        { NULL }, 618,   "udp"  },
+  { "compaq-evm",      { NULL }, 619,   "tcp"  },
+  { "compaq-evm",      { NULL }, 619,   "udp"  },
+  { "sco-websrvrmgr",  { NULL }, 620,   "tcp"  },
+  { "sco-websrvrmgr",  { NULL }, 620,   "udp"  },
+  { "escp-ip",         { NULL }, 621,   "tcp"  },
+  { "escp-ip",         { NULL }, 621,   "udp"  },
+  { "collaborator",    { NULL }, 622,   "tcp"  },
+  { "collaborator",    { NULL }, 622,   "udp"  },
+  { "oob-ws-http",     { NULL }, 623,   "tcp"  },
+  { "asf-rmcp",        { NULL }, 623,   "udp"  },
+  { "cryptoadmin",     { NULL }, 624,   "tcp"  },
+  { "cryptoadmin",     { NULL }, 624,   "udp"  },
+  { "dec_dlm",         { NULL }, 625,   "tcp"  },
+  { "dec_dlm",         { NULL }, 625,   "udp"  },
+  { "asia",            { NULL }, 626,   "tcp"  },
+  { "asia",            { NULL }, 626,   "udp"  },
+  { "passgo-tivoli",   { NULL }, 627,   "tcp"  },
+  { "passgo-tivoli",   { NULL }, 627,   "udp"  },
+  { "qmqp",            { NULL }, 628,   "tcp"  },
+  { "qmqp",            { NULL }, 628,   "udp"  },
+  { "3com-amp3",       { NULL }, 629,   "tcp"  },
+  { "3com-amp3",       { NULL }, 629,   "udp"  },
+  { "rda",             { NULL }, 630,   "tcp"  },
+  { "rda",             { NULL }, 630,   "udp"  },
+  { "ipp",             { NULL }, 631,   "tcp"  },
+  { "ipp",             { NULL }, 631,   "udp"  },
+  { "bmpp",            { NULL }, 632,   "tcp"  },
+  { "bmpp",            { NULL }, 632,   "udp"  },
+  { "servstat",        { NULL }, 633,   "tcp"  },
+  { "servstat",        { NULL }, 633,   "udp"  },
+  { "ginad",           { NULL }, 634,   "tcp"  },
+  { "ginad",           { NULL }, 634,   "udp"  },
+  { "rlzdbase",        { NULL }, 635,   "tcp"  },
+  { "rlzdbase",        { NULL }, 635,   "udp"  },
+  { "ldaps",           { NULL }, 636,   "tcp"  },
+  { "ldaps",           { NULL }, 636,   "udp"  },
+  { "lanserver",       { NULL }, 637,   "tcp"  },
+  { "lanserver",       { NULL }, 637,   "udp"  },
+  { "mcns-sec",        { NULL }, 638,   "tcp"  },
+  { "mcns-sec",        { NULL }, 638,   "udp"  },
+  { "msdp",            { NULL }, 639,   "tcp"  },
+  { "msdp",            { NULL }, 639,   "udp"  },
+  { "entrust-sps",     { NULL }, 640,   "tcp"  },
+  { "entrust-sps",     { NULL }, 640,   "udp"  },
+  { "repcmd",          { NULL }, 641,   "tcp"  },
+  { "repcmd",          { NULL }, 641,   "udp"  },
+  { "esro-emsdp",      { NULL }, 642,   "tcp"  },
+  { "esro-emsdp",      { NULL }, 642,   "udp"  },
+  { "sanity",          { NULL }, 643,   "tcp"  },
+  { "sanity",          { NULL }, 643,   "udp"  },
+  { "dwr",             { NULL }, 644,   "tcp"  },
+  { "dwr",             { NULL }, 644,   "udp"  },
+  { "pssc",            { NULL }, 645,   "tcp"  },
+  { "pssc",            { NULL }, 645,   "udp"  },
+  { "ldp",             { NULL }, 646,   "tcp"  },
+  { "ldp",             { NULL }, 646,   "udp"  },
+  { "dhcp-failover",   { NULL }, 647,   "tcp"  },
+  { "dhcp-failover",   { NULL }, 647,   "udp"  },
+  { "rrp",             { NULL }, 648,   "tcp"  },
+  { "rrp",             { NULL }, 648,   "udp"  },
+  { "cadview-3d",      { NULL }, 649,   "tcp"  },
+  { "cadview-3d",      { NULL }, 649,   "udp"  },
+  { "obex",            { NULL }, 650,   "tcp"  },
+  { "obex",            { NULL }, 650,   "udp"  },
+  { "ieee-mms",        { NULL }, 651,   "tcp"  },
+  { "ieee-mms",        { NULL }, 651,   "udp"  },
+  { "hello-port",      { NULL }, 652,   "tcp"  },
+  { "hello-port",      { NULL }, 652,   "udp"  },
+  { "repscmd",         { NULL }, 653,   "tcp"  },
+  { "repscmd",         { NULL }, 653,   "udp"  },
+  { "aodv",            { NULL }, 654,   "tcp"  },
+  { "aodv",            { NULL }, 654,   "udp"  },
+  { "tinc",            { NULL }, 655,   "tcp"  },
+  { "tinc",            { NULL }, 655,   "udp"  },
+  { "spmp",            { NULL }, 656,   "tcp"  },
+  { "spmp",            { NULL }, 656,   "udp"  },
+  { "rmc",             { NULL }, 657,   "tcp"  },
+  { "rmc",             { NULL }, 657,   "udp"  },
+  { "tenfold",         { NULL }, 658,   "tcp"  },
+  { "tenfold",         { NULL }, 658,   "udp"  },
+  { "mac-srvr-admin",  { NULL }, 660,   "tcp"  },
+  { "mac-srvr-admin",  { NULL }, 660,   "udp"  },
+  { "hap",             { NULL }, 661,   "tcp"  },
+  { "hap",             { NULL }, 661,   "udp"  },
+  { "pftp",            { NULL }, 662,   "tcp"  },
+  { "pftp",            { NULL }, 662,   "udp"  },
+  { "purenoise",       { NULL }, 663,   "tcp"  },
+  { "purenoise",       { NULL }, 663,   "udp"  },
+  { "oob-ws-https",    { NULL }, 664,   "tcp"  },
+  { "asf-secure-rmcp", { NULL }, 664,   "udp"  },
+  { "sun-dr",          { NULL }, 665,   "tcp"  },
+  { "sun-dr",          { NULL }, 665,   "udp"  },
+  { "mdqs",            { NULL }, 666,   "tcp"  },
+  { "mdqs",            { NULL }, 666,   "udp"  },
+  { "doom",            { NULL }, 666,   "tcp"  },
+  { "doom",            { NULL }, 666,   "udp"  },
+  { "disclose",        { NULL }, 667,   "tcp"  },
+  { "disclose",        { NULL }, 667,   "udp"  },
+  { "mecomm",          { NULL }, 668,   "tcp"  },
+  { "mecomm",          { NULL }, 668,   "udp"  },
+  { "meregister",      { NULL }, 669,   "tcp"  },
+  { "meregister",      { NULL }, 669,   "udp"  },
+  { "vacdsm-sws",      { NULL }, 670,   "tcp"  },
+  { "vacdsm-sws",      { NULL }, 670,   "udp"  },
+  { "vacdsm-app",      { NULL }, 671,   "tcp"  },
+  { "vacdsm-app",      { NULL }, 671,   "udp"  },
+  { "vpps-qua",        { NULL }, 672,   "tcp"  },
+  { "vpps-qua",        { NULL }, 672,   "udp"  },
+  { "cimplex",         { NULL }, 673,   "tcp"  },
+  { "cimplex",         { NULL }, 673,   "udp"  },
+  { "acap",            { NULL }, 674,   "tcp"  },
+  { "acap",            { NULL }, 674,   "udp"  },
+  { "dctp",            { NULL }, 675,   "tcp"  },
+  { "dctp",            { NULL }, 675,   "udp"  },
+  { "vpps-via",        { NULL }, 676,   "tcp"  },
+  { "vpps-via",        { NULL }, 676,   "udp"  },
+  { "vpp",             { NULL }, 677,   "tcp"  },
+  { "vpp",             { NULL }, 677,   "udp"  },
+  { "ggf-ncp",         { NULL }, 678,   "tcp"  },
+  { "ggf-ncp",         { NULL }, 678,   "udp"  },
+  { "mrm",             { NULL }, 679,   "tcp"  },
+  { "mrm",             { NULL }, 679,   "udp"  },
+  { "entrust-aaas",    { NULL }, 680,   "tcp"  },
+  { "entrust-aaas",    { NULL }, 680,   "udp"  },
+  { "entrust-aams",    { NULL }, 681,   "tcp"  },
+  { "entrust-aams",    { NULL }, 681,   "udp"  },
+  { "xfr",             { NULL }, 682,   "tcp"  },
+  { "xfr",             { NULL }, 682,   "udp"  },
+  { "corba-iiop",      { NULL }, 683,   "tcp"  },
+  { "corba-iiop",      { NULL }, 683,   "udp"  },
+  { "corba-iiop-ssl",  { NULL }, 684,   "tcp"  },
+  { "corba-iiop-ssl",  { NULL }, 684,   "udp"  },
+  { "mdc-portmapper",  { NULL }, 685,   "tcp"  },
+  { "mdc-portmapper",  { NULL }, 685,   "udp"  },
+  { "hcp-wismar",      { NULL }, 686,   "tcp"  },
+  { "hcp-wismar",      { NULL }, 686,   "udp"  },
+  { "asipregistry",    { NULL }, 687,   "tcp"  },
+  { "asipregistry",    { NULL }, 687,   "udp"  },
+  { "realm-rusd",      { NULL }, 688,   "tcp"  },
+  { "realm-rusd",      { NULL }, 688,   "udp"  },
+  { "nmap",            { NULL }, 689,   "tcp"  },
+  { "nmap",            { NULL }, 689,   "udp"  },
+  { "vatp",            { NULL }, 690,   "tcp"  },
+  { "vatp",            { NULL }, 690,   "udp"  },
+  { "msexch-routing",  { NULL }, 691,   "tcp"  },
+  { "msexch-routing",  { NULL }, 691,   "udp"  },
+  { "hyperwave-isp",   { NULL }, 692,   "tcp"  },
+  { "hyperwave-isp",   { NULL }, 692,   "udp"  },
+  { "connendp",        { NULL }, 693,   "tcp"  },
+  { "connendp",        { NULL }, 693,   "udp"  },
+  { "ha-cluster",      { NULL }, 694,   "tcp"  },
+  { "ha-cluster",      { NULL }, 694,   "udp"  },
+  { "ieee-mms-ssl",    { NULL }, 695,   "tcp"  },
+  { "ieee-mms-ssl",    { NULL }, 695,   "udp"  },
+  { "rushd",           { NULL }, 696,   "tcp"  },
+  { "rushd",           { NULL }, 696,   "udp"  },
+  { "uuidgen",         { NULL }, 697,   "tcp"  },
+  { "uuidgen",         { NULL }, 697,   "udp"  },
+  { "olsr",            { NULL }, 698,   "tcp"  },
+  { "olsr",            { NULL }, 698,   "udp"  },
+  { "accessnetwork",   { NULL }, 699,   "tcp"  },
+  { "accessnetwork",   { NULL }, 699,   "udp"  },
+  { "epp",             { NULL }, 700,   "tcp"  },
+  { "epp",             { NULL }, 700,   "udp"  },
+  { "lmp",             { NULL }, 701,   "tcp"  },
+  { "lmp",             { NULL }, 701,   "udp"  },
+  { "iris-beep",       { NULL }, 702,   "tcp"  },
+  { "iris-beep",       { NULL }, 702,   "udp"  },
+  { "elcsd",           { NULL }, 704,   "tcp"  },
+  { "elcsd",           { NULL }, 704,   "udp"  },
+  { "agentx",          { NULL }, 705,   "tcp"  },
+  { "agentx",          { NULL }, 705,   "udp"  },
+  { "silc",            { NULL }, 706,   "tcp"  },
+  { "silc",            { NULL }, 706,   "udp"  },
+  { "borland-dsj",     { NULL }, 707,   "tcp"  },
+  { "borland-dsj",     { NULL }, 707,   "udp"  },
+  { "entrust-kmsh",    { NULL }, 709,   "tcp"  },
+  { "entrust-kmsh",    { NULL }, 709,   "udp"  },
+  { "entrust-ash",     { NULL }, 710,   "tcp"  },
+  { "entrust-ash",     { NULL }, 710,   "udp"  },
+  { "cisco-tdp",       { NULL }, 711,   "tcp"  },
+  { "cisco-tdp",       { NULL }, 711,   "udp"  },
+  { "tbrpf",           { NULL }, 712,   "tcp"  },
+  { "tbrpf",           { NULL }, 712,   "udp"  },
+  { "iris-xpc",        { NULL }, 713,   "tcp"  },
+  { "iris-xpc",        { NULL }, 713,   "udp"  },
+  { "iris-xpcs",       { NULL }, 714,   "tcp"  },
+  { "iris-xpcs",       { NULL }, 714,   "udp"  },
+  { "iris-lwz",        { NULL }, 715,   "tcp"  },
+  { "iris-lwz",        { NULL }, 715,   "udp"  },
+  { "pana",            { NULL }, 716,   "udp"  },
+  { "netviewdm1",      { NULL }, 729,   "tcp"  },
+  { "netviewdm1",      { NULL }, 729,   "udp"  },
+  { "netviewdm2",      { NULL }, 730,   "tcp"  },
+  { "netviewdm2",      { NULL }, 730,   "udp"  },
+  { "netviewdm3",      { NULL }, 731,   "tcp"  },
+  { "netviewdm3",      { NULL }, 731,   "udp"  },
+  { "netgw",           { NULL }, 741,   "tcp"  },
+  { "netgw",           { NULL }, 741,   "udp"  },
+  { "netrcs",          { NULL }, 742,   "tcp"  },
+  { "netrcs",          { NULL }, 742,   "udp"  },
+  { "flexlm",          { NULL }, 744,   "tcp"  },
+  { "flexlm",          { NULL }, 744,   "udp"  },
+  { "fujitsu-dev",     { NULL }, 747,   "tcp"  },
+  { "fujitsu-dev",     { NULL }, 747,   "udp"  },
+  { "ris-cm",          { NULL }, 748,   "tcp"  },
+  { "ris-cm",          { NULL }, 748,   "udp"  },
+  { "kerberos-adm",    { NULL }, 749,   "tcp"  },
+  { "kerberos-adm",    { NULL }, 749,   "udp"  },
+  { "rfile",           { NULL }, 750,   "tcp"  },
+  { "loadav",          { NULL }, 750,   "udp"  },
+  { "kerberos-iv",     { NULL }, 750,   "udp"  },
+  { "pump",            { NULL }, 751,   "tcp"  },
+  { "pump",            { NULL }, 751,   "udp"  },
+  { "qrh",             { NULL }, 752,   "tcp"  },
+  { "qrh",             { NULL }, 752,   "udp"  },
+  { "rrh",             { NULL }, 753,   "tcp"  },
+  { "rrh",             { NULL }, 753,   "udp"  },
+  { "tell",            { NULL }, 754,   "tcp"  },
+  { "tell",            { NULL }, 754,   "udp"  },
+  { "nlogin",          { NULL }, 758,   "tcp"  },
+  { "nlogin",          { NULL }, 758,   "udp"  },
+  { "con",             { NULL }, 759,   "tcp"  },
+  { "con",             { NULL }, 759,   "udp"  },
+  { "ns",              { NULL }, 760,   "tcp"  },
+  { "ns",              { NULL }, 760,   "udp"  },
+  { "rxe",             { NULL }, 761,   "tcp"  },
+  { "rxe",             { NULL }, 761,   "udp"  },
+  { "quotad",          { NULL }, 762,   "tcp"  },
+  { "quotad",          { NULL }, 762,   "udp"  },
+  { "cycleserv",       { NULL }, 763,   "tcp"  },
+  { "cycleserv",       { NULL }, 763,   "udp"  },
+  { "omserv",          { NULL }, 764,   "tcp"  },
+  { "omserv",          { NULL }, 764,   "udp"  },
+  { "webster",         { NULL }, 765,   "tcp"  },
+  { "webster",         { NULL }, 765,   "udp"  },
+  { "phonebook",       { NULL }, 767,   "tcp"  },
+  { "phonebook",       { NULL }, 767,   "udp"  },
+  { "vid",             { NULL }, 769,   "tcp"  },
+  { "vid",             { NULL }, 769,   "udp"  },
+  { "cadlock",         { NULL }, 770,   "tcp"  },
+  { "cadlock",         { NULL }, 770,   "udp"  },
+  { "rtip",            { NULL }, 771,   "tcp"  },
+  { "rtip",            { NULL }, 771,   "udp"  },
+  { "cycleserv2",      { NULL }, 772,   "tcp"  },
+  { "cycleserv2",      { NULL }, 772,   "udp"  },
+  { "submit",          { NULL }, 773,   "tcp"  },
+  { "notify",          { NULL }, 773,   "udp"  },
+  { "rpasswd",         { NULL }, 774,   "tcp"  },
+  { "acmaint_dbd",     { NULL }, 774,   "udp"  },
+  { "entomb",          { NULL }, 775,   "tcp"  },
+  { "acmaint_transd",  { NULL }, 775,   "udp"  },
+  { "wpages",          { NULL }, 776,   "tcp"  },
+  { "wpages",          { NULL }, 776,   "udp"  },
+  { "multiling-http",  { NULL }, 777,   "tcp"  },
+  { "multiling-http",  { NULL }, 777,   "udp"  },
+  { "wpgs",            { NULL }, 780,   "tcp"  },
+  { "wpgs",            { NULL }, 780,   "udp"  },
+  { "mdbs_daemon",     { NULL }, 800,   "tcp"  },
+  { "mdbs_daemon",     { NULL }, 800,   "udp"  },
+  { "device",          { NULL }, 801,   "tcp"  },
+  { "device",          { NULL }, 801,   "udp"  },
+  { "fcp-udp",         { NULL }, 810,   "tcp"  },
+  { "fcp-udp",         { NULL }, 810,   "udp"  },
+  { "itm-mcell-s",     { NULL }, 828,   "tcp"  },
+  { "itm-mcell-s",     { NULL }, 828,   "udp"  },
+  { "pkix-3-ca-ra",    { NULL }, 829,   "tcp"  },
+  { "pkix-3-ca-ra",    { NULL }, 829,   "udp"  },
+  { "netconf-ssh",     { NULL }, 830,   "tcp"  },
+  { "netconf-ssh",     { NULL }, 830,   "udp"  },
+  { "netconf-beep",    { NULL }, 831,   "tcp"  },
+  { "netconf-beep",    { NULL }, 831,   "udp"  },
+  { "netconfsoaphttp", { NULL }, 832,   "tcp"  },
+  { "netconfsoaphttp", { NULL }, 832,   "udp"  },
+  { "netconfsoapbeep", { NULL }, 833,   "tcp"  },
+  { "netconfsoapbeep", { NULL }, 833,   "udp"  },
+  { "dhcp-failover2",  { NULL }, 847,   "tcp"  },
+  { "dhcp-failover2",  { NULL }, 847,   "udp"  },
+  { "gdoi",            { NULL }, 848,   "tcp"  },
+  { "gdoi",            { NULL }, 848,   "udp"  },
+  { "iscsi",           { NULL }, 860,   "tcp"  },
+  { "iscsi",           { NULL }, 860,   "udp"  },
+  { "owamp-control",   { NULL }, 861,   "tcp"  },
+  { "owamp-control",   { NULL }, 861,   "udp"  },
+  { "twamp-control",   { NULL }, 862,   "tcp"  },
+  { "twamp-control",   { NULL }, 862,   "udp"  },
+  { "rsync",           { NULL }, 873,   "tcp"  },
+  { "rsync",           { NULL }, 873,   "udp"  },
+  { "iclcnet-locate",  { NULL }, 886,   "tcp"  },
+  { "iclcnet-locate",  { NULL }, 886,   "udp"  },
+  { "iclcnet_svinfo",  { NULL }, 887,   "tcp"  },
+  { "iclcnet_svinfo",  { NULL }, 887,   "udp"  },
+  { "accessbuilder",   { NULL }, 888,   "tcp"  },
+  { "accessbuilder",   { NULL }, 888,   "udp"  },
+  { "cddbp",           { NULL }, 888,   "tcp"  },
+  { "omginitialrefs",  { NULL }, 900,   "tcp"  },
+  { "omginitialrefs",  { NULL }, 900,   "udp"  },
+  { "smpnameres",      { NULL }, 901,   "tcp"  },
+  { "smpnameres",      { NULL }, 901,   "udp"  },
+  { "ideafarm-door",   { NULL }, 902,   "tcp"  },
+  { "ideafarm-door",   { NULL }, 902,   "udp"  },
+  { "ideafarm-panic",  { NULL }, 903,   "tcp"  },
+  { "ideafarm-panic",  { NULL }, 903,   "udp"  },
+  { "kink",            { NULL }, 910,   "tcp"  },
+  { "kink",            { NULL }, 910,   "udp"  },
+  { "xact-backup",     { NULL }, 911,   "tcp"  },
+  { "xact-backup",     { NULL }, 911,   "udp"  },
+  { "apex-mesh",       { NULL }, 912,   "tcp"  },
+  { "apex-mesh",       { NULL }, 912,   "udp"  },
+  { "apex-edge",       { NULL }, 913,   "tcp"  },
+  { "apex-edge",       { NULL }, 913,   "udp"  },
+  { "ftps-data",       { NULL }, 989,   "tcp"  },
+  { "ftps-data",       { NULL }, 989,   "udp"  },
+  { "ftps",            { NULL }, 990,   "tcp"  },
+  { "ftps",            { NULL }, 990,   "udp"  },
+  { "nas",             { NULL }, 991,   "tcp"  },
+  { "nas",             { NULL }, 991,   "udp"  },
+  { "telnets",         { NULL }, 992,   "tcp"  },
+  { "telnets",         { NULL }, 992,   "udp"  },
+  { "imaps",           { NULL }, 993,   "tcp"  },
+  { "imaps",           { NULL }, 993,   "udp"  },
+  { "ircs",            { NULL }, 994,   "tcp"  },
+  { "ircs",            { NULL }, 994,   "udp"  },
+  { "pop3s",           { NULL }, 995,   "tcp"  },
+  { "pop3s",           { NULL }, 995,   "udp"  },
+  { "vsinet",          { NULL }, 996,   "tcp"  },
+  { "vsinet",          { NULL }, 996,   "udp"  },
+  { "maitrd",          { NULL }, 997,   "tcp"  },
+  { "maitrd",          { NULL }, 997,   "udp"  },
+  { "busboy",          { NULL }, 998,   "tcp"  },
+  { "puparp",          { NULL }, 998,   "udp"  },
+  { "garcon",          { NULL }, 999,   "tcp"  },
+  { "applix",          { NULL }, 999,   "udp"  },
+  { "puprouter",       { NULL }, 999,   "tcp"  },
+  { "puprouter",       { NULL }, 999,   "udp"  },
+  { "cadlock2",        { NULL }, 1000,  "tcp"  },
+  { "cadlock2",        { NULL }, 1000,  "udp"  },
+  { "surf",            { NULL }, 1010,  "tcp"  },
+  { "surf",            { NULL }, 1010,  "udp"  },
+  { "exp1",            { NULL }, 1021,  "tcp"  },
+  { "exp1",            { NULL }, 1021,  "udp"  },
+  { "exp2",            { NULL }, 1022,  "tcp"  },
+  { "exp2",            { NULL }, 1022,  "udp"  },
 #  endif  /* USE_IANA_WELL_KNOWN_PORTS */
 #  ifdef USE_IANA_REGISTERED_PORTS
-  { "blackjack",       { NULL }, 1025,  "tcp" },
-  { "blackjack",       { NULL }, 1025,  "udp" },
-  { "cap",             { NULL }, 1026,  "tcp" },
-  { "cap",             { NULL }, 1026,  "udp" },
-  { "solid-mux",       { NULL }, 1029,  "tcp" },
-  { "solid-mux",       { NULL }, 1029,  "udp" },
-  { "iad1",            { NULL }, 1030,  "tcp" },
-  { "iad1",            { NULL }, 1030,  "udp" },
-  { "iad2",            { NULL }, 1031,  "tcp" },
-  { "iad2",            { NULL }, 1031,  "udp" },
-  { "iad3",            { NULL }, 1032,  "tcp" },
-  { "iad3",            { NULL }, 1032,  "udp" },
-  { "netinfo-local",   { NULL }, 1033,  "tcp" },
-  { "netinfo-local",   { NULL }, 1033,  "udp" },
-  { "activesync",      { NULL }, 1034,  "tcp" },
-  { "activesync",      { NULL }, 1034,  "udp" },
-  { "mxxrlogin",       { NULL }, 1035,  "tcp" },
-  { "mxxrlogin",       { NULL }, 1035,  "udp" },
-  { "nsstp",           { NULL }, 1036,  "tcp" },
-  { "nsstp",           { NULL }, 1036,  "udp" },
-  { "ams",             { NULL }, 1037,  "tcp" },
-  { "ams",             { NULL }, 1037,  "udp" },
-  { "mtqp",            { NULL }, 1038,  "tcp" },
-  { "mtqp",            { NULL }, 1038,  "udp" },
-  { "sbl",             { NULL }, 1039,  "tcp" },
-  { "sbl",             { NULL }, 1039,  "udp" },
-  { "netarx",          { NULL }, 1040,  "tcp" },
-  { "netarx",          { NULL }, 1040,  "udp" },
-  { "danf-ak2",        { NULL }, 1041,  "tcp" },
-  { "danf-ak2",        { NULL }, 1041,  "udp" },
-  { "afrog",           { NULL }, 1042,  "tcp" },
-  { "afrog",           { NULL }, 1042,  "udp" },
-  { "boinc-client",    { NULL }, 1043,  "tcp" },
-  { "boinc-client",    { NULL }, 1043,  "udp" },
-  { "dcutility",       { NULL }, 1044,  "tcp" },
-  { "dcutility",       { NULL }, 1044,  "udp" },
-  { "fpitp",           { NULL }, 1045,  "tcp" },
-  { "fpitp",           { NULL }, 1045,  "udp" },
-  { "wfremotertm",     { NULL }, 1046,  "tcp" },
-  { "wfremotertm",     { NULL }, 1046,  "udp" },
-  { "neod1",           { NULL }, 1047,  "tcp" },
-  { "neod1",           { NULL }, 1047,  "udp" },
-  { "neod2",           { NULL }, 1048,  "tcp" },
-  { "neod2",           { NULL }, 1048,  "udp" },
-  { "td-postman",      { NULL }, 1049,  "tcp" },
-  { "td-postman",      { NULL }, 1049,  "udp" },
-  { "cma",             { NULL }, 1050,  "tcp" },
-  { "cma",             { NULL }, 1050,  "udp" },
-  { "optima-vnet",     { NULL }, 1051,  "tcp" },
-  { "optima-vnet",     { NULL }, 1051,  "udp" },
-  { "ddt",             { NULL }, 1052,  "tcp" },
-  { "ddt",             { NULL }, 1052,  "udp" },
-  { "remote-as",       { NULL }, 1053,  "tcp" },
-  { "remote-as",       { NULL }, 1053,  "udp" },
-  { "brvread",         { NULL }, 1054,  "tcp" },
-  { "brvread",         { NULL }, 1054,  "udp" },
-  { "ansyslmd",        { NULL }, 1055,  "tcp" },
-  { "ansyslmd",        { NULL }, 1055,  "udp" },
-  { "vfo",             { NULL }, 1056,  "tcp" },
-  { "vfo",             { NULL }, 1056,  "udp" },
-  { "startron",        { NULL }, 1057,  "tcp" },
-  { "startron",        { NULL }, 1057,  "udp" },
-  { "nim",             { NULL }, 1058,  "tcp" },
-  { "nim",             { NULL }, 1058,  "udp" },
-  { "nimreg",          { NULL }, 1059,  "tcp" },
-  { "nimreg",          { NULL }, 1059,  "udp" },
-  { "polestar",        { NULL }, 1060,  "tcp" },
-  { "polestar",        { NULL }, 1060,  "udp" },
-  { "kiosk",           { NULL }, 1061,  "tcp" },
-  { "kiosk",           { NULL }, 1061,  "udp" },
-  { "veracity",        { NULL }, 1062,  "tcp" },
-  { "veracity",        { NULL }, 1062,  "udp" },
-  { "kyoceranetdev",   { NULL }, 1063,  "tcp" },
-  { "kyoceranetdev",   { NULL }, 1063,  "udp" },
-  { "jstel",           { NULL }, 1064,  "tcp" },
-  { "jstel",           { NULL }, 1064,  "udp" },
-  { "syscomlan",       { NULL }, 1065,  "tcp" },
-  { "syscomlan",       { NULL }, 1065,  "udp" },
-  { "fpo-fns",         { NULL }, 1066,  "tcp" },
-  { "fpo-fns",         { NULL }, 1066,  "udp" },
-  { "instl_boots",     { NULL }, 1067,  "tcp" },
-  { "instl_boots",     { NULL }, 1067,  "udp" },
-  { "instl_bootc",     { NULL }, 1068,  "tcp" },
-  { "instl_bootc",     { NULL }, 1068,  "udp" },
-  { "cognex-insight",  { NULL }, 1069,  "tcp" },
-  { "cognex-insight",  { NULL }, 1069,  "udp" },
-  { "gmrupdateserv",   { NULL }, 1070,  "tcp" },
-  { "gmrupdateserv",   { NULL }, 1070,  "udp" },
-  { "bsquare-voip",    { NULL }, 1071,  "tcp" },
-  { "bsquare-voip",    { NULL }, 1071,  "udp" },
-  { "cardax",          { NULL }, 1072,  "tcp" },
-  { "cardax",          { NULL }, 1072,  "udp" },
-  { "bridgecontrol",   { NULL }, 1073,  "tcp" },
-  { "bridgecontrol",   { NULL }, 1073,  "udp" },
-  { "warmspotMgmt",    { NULL }, 1074,  "tcp" },
-  { "warmspotMgmt",    { NULL }, 1074,  "udp" },
-  { "rdrmshc",         { NULL }, 1075,  "tcp" },
-  { "rdrmshc",         { NULL }, 1075,  "udp" },
-  { "dab-sti-c",       { NULL }, 1076,  "tcp" },
-  { "dab-sti-c",       { NULL }, 1076,  "udp" },
-  { "imgames",         { NULL }, 1077,  "tcp" },
-  { "imgames",         { NULL }, 1077,  "udp" },
-  { "avocent-proxy",   { NULL }, 1078,  "tcp" },
-  { "avocent-proxy",   { NULL }, 1078,  "udp" },
-  { "asprovatalk",     { NULL }, 1079,  "tcp" },
-  { "asprovatalk",     { NULL }, 1079,  "udp" },
-  { "socks",           { NULL }, 1080,  "tcp" },
-  { "socks",           { NULL }, 1080,  "udp" },
-  { "pvuniwien",       { NULL }, 1081,  "tcp" },
-  { "pvuniwien",       { NULL }, 1081,  "udp" },
-  { "amt-esd-prot",    { NULL }, 1082,  "tcp" },
-  { "amt-esd-prot",    { NULL }, 1082,  "udp" },
-  { "ansoft-lm-1",     { NULL }, 1083,  "tcp" },
-  { "ansoft-lm-1",     { NULL }, 1083,  "udp" },
-  { "ansoft-lm-2",     { NULL }, 1084,  "tcp" },
-  { "ansoft-lm-2",     { NULL }, 1084,  "udp" },
-  { "webobjects",      { NULL }, 1085,  "tcp" },
-  { "webobjects",      { NULL }, 1085,  "udp" },
-  { "cplscrambler-lg", { NULL }, 1086,  "tcp" },
-  { "cplscrambler-lg", { NULL }, 1086,  "udp" },
-  { "cplscrambler-in", { NULL }, 1087,  "tcp" },
-  { "cplscrambler-in", { NULL }, 1087,  "udp" },
-  { "cplscrambler-al", { NULL }, 1088,  "tcp" },
-  { "cplscrambler-al", { NULL }, 1088,  "udp" },
-  { "ff-annunc",       { NULL }, 1089,  "tcp" },
-  { "ff-annunc",       { NULL }, 1089,  "udp" },
-  { "ff-fms",          { NULL }, 1090,  "tcp" },
-  { "ff-fms",          { NULL }, 1090,  "udp" },
-  { "ff-sm",           { NULL }, 1091,  "tcp" },
-  { "ff-sm",           { NULL }, 1091,  "udp" },
-  { "obrpd",           { NULL }, 1092,  "tcp" },
-  { "obrpd",           { NULL }, 1092,  "udp" },
-  { "proofd",          { NULL }, 1093,  "tcp" },
-  { "proofd",          { NULL }, 1093,  "udp" },
-  { "rootd",           { NULL }, 1094,  "tcp" },
-  { "rootd",           { NULL }, 1094,  "udp" },
-  { "nicelink",        { NULL }, 1095,  "tcp" },
-  { "nicelink",        { NULL }, 1095,  "udp" },
-  { "cnrprotocol",     { NULL }, 1096,  "tcp" },
-  { "cnrprotocol",     { NULL }, 1096,  "udp" },
-  { "sunclustermgr",   { NULL }, 1097,  "tcp" },
-  { "sunclustermgr",   { NULL }, 1097,  "udp" },
-  { "rmiactivation",   { NULL }, 1098,  "tcp" },
-  { "rmiactivation",   { NULL }, 1098,  "udp" },
-  { "rmiregistry",     { NULL }, 1099,  "tcp" },
-  { "rmiregistry",     { NULL }, 1099,  "udp" },
-  { "mctp",            { NULL }, 1100,  "tcp" },
-  { "mctp",            { NULL }, 1100,  "udp" },
-  { "pt2-discover",    { NULL }, 1101,  "tcp" },
-  { "pt2-discover",    { NULL }, 1101,  "udp" },
-  { "adobeserver-1",   { NULL }, 1102,  "tcp" },
-  { "adobeserver-1",   { NULL }, 1102,  "udp" },
-  { "adobeserver-2",   { NULL }, 1103,  "tcp" },
-  { "adobeserver-2",   { NULL }, 1103,  "udp" },
-  { "xrl",             { NULL }, 1104,  "tcp" },
-  { "xrl",             { NULL }, 1104,  "udp" },
-  { "ftranhc",         { NULL }, 1105,  "tcp" },
-  { "ftranhc",         { NULL }, 1105,  "udp" },
-  { "isoipsigport-1",  { NULL }, 1106,  "tcp" },
-  { "isoipsigport-1",  { NULL }, 1106,  "udp" },
-  { "isoipsigport-2",  { NULL }, 1107,  "tcp" },
-  { "isoipsigport-2",  { NULL }, 1107,  "udp" },
-  { "ratio-adp",       { NULL }, 1108,  "tcp" },
-  { "ratio-adp",       { NULL }, 1108,  "udp" },
-  { "webadmstart",     { NULL }, 1110,  "tcp" },
-  { "nfsd-keepalive",  { NULL }, 1110,  "udp" },
-  { "lmsocialserver",  { NULL }, 1111,  "tcp" },
-  { "lmsocialserver",  { NULL }, 1111,  "udp" },
-  { "icp",             { NULL }, 1112,  "tcp" },
-  { "icp",             { NULL }, 1112,  "udp" },
-  { "ltp-deepspace",   { NULL }, 1113,  "tcp" },
-  { "ltp-deepspace",   { NULL }, 1113,  "udp" },
-  { "mini-sql",        { NULL }, 1114,  "tcp" },
-  { "mini-sql",        { NULL }, 1114,  "udp" },
-  { "ardus-trns",      { NULL }, 1115,  "tcp" },
-  { "ardus-trns",      { NULL }, 1115,  "udp" },
-  { "ardus-cntl",      { NULL }, 1116,  "tcp" },
-  { "ardus-cntl",      { NULL }, 1116,  "udp" },
-  { "ardus-mtrns",     { NULL }, 1117,  "tcp" },
-  { "ardus-mtrns",     { NULL }, 1117,  "udp" },
-  { "sacred",          { NULL }, 1118,  "tcp" },
-  { "sacred",          { NULL }, 1118,  "udp" },
-  { "bnetgame",        { NULL }, 1119,  "tcp" },
-  { "bnetgame",        { NULL }, 1119,  "udp" },
-  { "bnetfile",        { NULL }, 1120,  "tcp" },
-  { "bnetfile",        { NULL }, 1120,  "udp" },
-  { "rmpp",            { NULL }, 1121,  "tcp" },
-  { "rmpp",            { NULL }, 1121,  "udp" },
-  { "availant-mgr",    { NULL }, 1122,  "tcp" },
-  { "availant-mgr",    { NULL }, 1122,  "udp" },
-  { "murray",          { NULL }, 1123,  "tcp" },
-  { "murray",          { NULL }, 1123,  "udp" },
-  { "hpvmmcontrol",    { NULL }, 1124,  "tcp" },
-  { "hpvmmcontrol",    { NULL }, 1124,  "udp" },
-  { "hpvmmagent",      { NULL }, 1125,  "tcp" },
-  { "hpvmmagent",      { NULL }, 1125,  "udp" },
-  { "hpvmmdata",       { NULL }, 1126,  "tcp" },
-  { "hpvmmdata",       { NULL }, 1126,  "udp" },
-  { "kwdb-commn",      { NULL }, 1127,  "tcp" },
-  { "kwdb-commn",      { NULL }, 1127,  "udp" },
-  { "saphostctrl",     { NULL }, 1128,  "tcp" },
-  { "saphostctrl",     { NULL }, 1128,  "udp" },
-  { "saphostctrls",    { NULL }, 1129,  "tcp" },
-  { "saphostctrls",    { NULL }, 1129,  "udp" },
-  { "casp",            { NULL }, 1130,  "tcp" },
-  { "casp",            { NULL }, 1130,  "udp" },
-  { "caspssl",         { NULL }, 1131,  "tcp" },
-  { "caspssl",         { NULL }, 1131,  "udp" },
-  { "kvm-via-ip",      { NULL }, 1132,  "tcp" },
-  { "kvm-via-ip",      { NULL }, 1132,  "udp" },
-  { "dfn",             { NULL }, 1133,  "tcp" },
-  { "dfn",             { NULL }, 1133,  "udp" },
-  { "aplx",            { NULL }, 1134,  "tcp" },
-  { "aplx",            { NULL }, 1134,  "udp" },
-  { "omnivision",      { NULL }, 1135,  "tcp" },
-  { "omnivision",      { NULL }, 1135,  "udp" },
-  { "hhb-gateway",     { NULL }, 1136,  "tcp" },
-  { "hhb-gateway",     { NULL }, 1136,  "udp" },
-  { "trim",            { NULL }, 1137,  "tcp" },
-  { "trim",            { NULL }, 1137,  "udp" },
-  { "encrypted_admin", { NULL }, 1138,  "tcp" },
-  { "encrypted_admin", { NULL }, 1138,  "udp" },
-  { "evm",             { NULL }, 1139,  "tcp" },
-  { "evm",             { NULL }, 1139,  "udp" },
-  { "autonoc",         { NULL }, 1140,  "tcp" },
-  { "autonoc",         { NULL }, 1140,  "udp" },
-  { "mxomss",          { NULL }, 1141,  "tcp" },
-  { "mxomss",          { NULL }, 1141,  "udp" },
-  { "edtools",         { NULL }, 1142,  "tcp" },
-  { "edtools",         { NULL }, 1142,  "udp" },
-  { "imyx",            { NULL }, 1143,  "tcp" },
-  { "imyx",            { NULL }, 1143,  "udp" },
-  { "fuscript",        { NULL }, 1144,  "tcp" },
-  { "fuscript",        { NULL }, 1144,  "udp" },
-  { "x9-icue",         { NULL }, 1145,  "tcp" },
-  { "x9-icue",         { NULL }, 1145,  "udp" },
-  { "audit-transfer",  { NULL }, 1146,  "tcp" },
-  { "audit-transfer",  { NULL }, 1146,  "udp" },
-  { "capioverlan",     { NULL }, 1147,  "tcp" },
-  { "capioverlan",     { NULL }, 1147,  "udp" },
-  { "elfiq-repl",      { NULL }, 1148,  "tcp" },
-  { "elfiq-repl",      { NULL }, 1148,  "udp" },
-  { "bvtsonar",        { NULL }, 1149,  "tcp" },
-  { "bvtsonar",        { NULL }, 1149,  "udp" },
-  { "blaze",           { NULL }, 1150,  "tcp" },
-  { "blaze",           { NULL }, 1150,  "udp" },
-  { "unizensus",       { NULL }, 1151,  "tcp" },
-  { "unizensus",       { NULL }, 1151,  "udp" },
-  { "winpoplanmess",   { NULL }, 1152,  "tcp" },
-  { "winpoplanmess",   { NULL }, 1152,  "udp" },
-  { "c1222-acse",      { NULL }, 1153,  "tcp" },
-  { "c1222-acse",      { NULL }, 1153,  "udp" },
-  { "resacommunity",   { NULL }, 1154,  "tcp" },
-  { "resacommunity",   { NULL }, 1154,  "udp" },
-  { "nfa",             { NULL }, 1155,  "tcp" },
-  { "nfa",             { NULL }, 1155,  "udp" },
-  { "iascontrol-oms",  { NULL }, 1156,  "tcp" },
-  { "iascontrol-oms",  { NULL }, 1156,  "udp" },
-  { "iascontrol",      { NULL }, 1157,  "tcp" },
-  { "iascontrol",      { NULL }, 1157,  "udp" },
-  { "dbcontrol-oms",   { NULL }, 1158,  "tcp" },
-  { "dbcontrol-oms",   { NULL }, 1158,  "udp" },
-  { "oracle-oms",      { NULL }, 1159,  "tcp" },
-  { "oracle-oms",      { NULL }, 1159,  "udp" },
-  { "olsv",            { NULL }, 1160,  "tcp" },
-  { "olsv",            { NULL }, 1160,  "udp" },
-  { "health-polling",  { NULL }, 1161,  "tcp" },
-  { "health-polling",  { NULL }, 1161,  "udp" },
-  { "health-trap",     { NULL }, 1162,  "tcp" },
-  { "health-trap",     { NULL }, 1162,  "udp" },
-  { "sddp",            { NULL }, 1163,  "tcp" },
-  { "sddp",            { NULL }, 1163,  "udp" },
-  { "qsm-proxy",       { NULL }, 1164,  "tcp" },
-  { "qsm-proxy",       { NULL }, 1164,  "udp" },
-  { "qsm-gui",         { NULL }, 1165,  "tcp" },
-  { "qsm-gui",         { NULL }, 1165,  "udp" },
-  { "qsm-remote",      { NULL }, 1166,  "tcp" },
-  { "qsm-remote",      { NULL }, 1166,  "udp" },
-  { "cisco-ipsla",     { NULL }, 1167,  "tcp" },
-  { "cisco-ipsla",     { NULL }, 1167,  "udp" },
-  { "cisco-ipsla",     { NULL }, 1167,  "sctp"},
-  { "vchat",           { NULL }, 1168,  "tcp" },
-  { "vchat",           { NULL }, 1168,  "udp" },
-  { "tripwire",        { NULL }, 1169,  "tcp" },
-  { "tripwire",        { NULL }, 1169,  "udp" },
-  { "atc-lm",          { NULL }, 1170,  "tcp" },
-  { "atc-lm",          { NULL }, 1170,  "udp" },
-  { "atc-appserver",   { NULL }, 1171,  "tcp" },
-  { "atc-appserver",   { NULL }, 1171,  "udp" },
-  { "dnap",            { NULL }, 1172,  "tcp" },
-  { "dnap",            { NULL }, 1172,  "udp" },
-  { "d-cinema-rrp",    { NULL }, 1173,  "tcp" },
-  { "d-cinema-rrp",    { NULL }, 1173,  "udp" },
-  { "fnet-remote-ui",  { NULL }, 1174,  "tcp" },
-  { "fnet-remote-ui",  { NULL }, 1174,  "udp" },
-  { "dossier",         { NULL }, 1175,  "tcp" },
-  { "dossier",         { NULL }, 1175,  "udp" },
-  { "indigo-server",   { NULL }, 1176,  "tcp" },
-  { "indigo-server",   { NULL }, 1176,  "udp" },
-  { "dkmessenger",     { NULL }, 1177,  "tcp" },
-  { "dkmessenger",     { NULL }, 1177,  "udp" },
-  { "sgi-storman",     { NULL }, 1178,  "tcp" },
-  { "sgi-storman",     { NULL }, 1178,  "udp" },
-  { "b2n",             { NULL }, 1179,  "tcp" },
-  { "b2n",             { NULL }, 1179,  "udp" },
-  { "mc-client",       { NULL }, 1180,  "tcp" },
-  { "mc-client",       { NULL }, 1180,  "udp" },
-  { "3comnetman",      { NULL }, 1181,  "tcp" },
-  { "3comnetman",      { NULL }, 1181,  "udp" },
-  { "accelenet",       { NULL }, 1182,  "tcp" },
-  { "accelenet-data",  { NULL }, 1182,  "udp" },
-  { "llsurfup-http",   { NULL }, 1183,  "tcp" },
-  { "llsurfup-http",   { NULL }, 1183,  "udp" },
-  { "llsurfup-https",  { NULL }, 1184,  "tcp" },
-  { "llsurfup-https",  { NULL }, 1184,  "udp" },
-  { "catchpole",       { NULL }, 1185,  "tcp" },
-  { "catchpole",       { NULL }, 1185,  "udp" },
-  { "mysql-cluster",   { NULL }, 1186,  "tcp" },
-  { "mysql-cluster",   { NULL }, 1186,  "udp" },
-  { "alias",           { NULL }, 1187,  "tcp" },
-  { "alias",           { NULL }, 1187,  "udp" },
-  { "hp-webadmin",     { NULL }, 1188,  "tcp" },
-  { "hp-webadmin",     { NULL }, 1188,  "udp" },
-  { "unet",            { NULL }, 1189,  "tcp" },
-  { "unet",            { NULL }, 1189,  "udp" },
-  { "commlinx-avl",    { NULL }, 1190,  "tcp" },
-  { "commlinx-avl",    { NULL }, 1190,  "udp" },
-  { "gpfs",            { NULL }, 1191,  "tcp" },
-  { "gpfs",            { NULL }, 1191,  "udp" },
-  { "caids-sensor",    { NULL }, 1192,  "tcp" },
-  { "caids-sensor",    { NULL }, 1192,  "udp" },
-  { "fiveacross",      { NULL }, 1193,  "tcp" },
-  { "fiveacross",      { NULL }, 1193,  "udp" },
-  { "openvpn",         { NULL }, 1194,  "tcp" },
-  { "openvpn",         { NULL }, 1194,  "udp" },
-  { "rsf-1",           { NULL }, 1195,  "tcp" },
-  { "rsf-1",           { NULL }, 1195,  "udp" },
-  { "netmagic",        { NULL }, 1196,  "tcp" },
-  { "netmagic",        { NULL }, 1196,  "udp" },
-  { "carrius-rshell",  { NULL }, 1197,  "tcp" },
-  { "carrius-rshell",  { NULL }, 1197,  "udp" },
-  { "cajo-discovery",  { NULL }, 1198,  "tcp" },
-  { "cajo-discovery",  { NULL }, 1198,  "udp" },
-  { "dmidi",           { NULL }, 1199,  "tcp" },
-  { "dmidi",           { NULL }, 1199,  "udp" },
-  { "scol",            { NULL }, 1200,  "tcp" },
-  { "scol",            { NULL }, 1200,  "udp" },
-  { "nucleus-sand",    { NULL }, 1201,  "tcp" },
-  { "nucleus-sand",    { NULL }, 1201,  "udp" },
-  { "caiccipc",        { NULL }, 1202,  "tcp" },
-  { "caiccipc",        { NULL }, 1202,  "udp" },
-  { "ssslic-mgr",      { NULL }, 1203,  "tcp" },
-  { "ssslic-mgr",      { NULL }, 1203,  "udp" },
-  { "ssslog-mgr",      { NULL }, 1204,  "tcp" },
-  { "ssslog-mgr",      { NULL }, 1204,  "udp" },
-  { "accord-mgc",      { NULL }, 1205,  "tcp" },
-  { "accord-mgc",      { NULL }, 1205,  "udp" },
-  { "anthony-data",    { NULL }, 1206,  "tcp" },
-  { "anthony-data",    { NULL }, 1206,  "udp" },
-  { "metasage",        { NULL }, 1207,  "tcp" },
-  { "metasage",        { NULL }, 1207,  "udp" },
-  { "seagull-ais",     { NULL }, 1208,  "tcp" },
-  { "seagull-ais",     { NULL }, 1208,  "udp" },
-  { "ipcd3",           { NULL }, 1209,  "tcp" },
-  { "ipcd3",           { NULL }, 1209,  "udp" },
-  { "eoss",            { NULL }, 1210,  "tcp" },
-  { "eoss",            { NULL }, 1210,  "udp" },
-  { "groove-dpp",      { NULL }, 1211,  "tcp" },
-  { "groove-dpp",      { NULL }, 1211,  "udp" },
-  { "lupa",            { NULL }, 1212,  "tcp" },
-  { "lupa",            { NULL }, 1212,  "udp" },
-  { "mpc-lifenet",     { NULL }, 1213,  "tcp" },
-  { "mpc-lifenet",     { NULL }, 1213,  "udp" },
-  { "kazaa",           { NULL }, 1214,  "tcp" },
-  { "kazaa",           { NULL }, 1214,  "udp" },
-  { "scanstat-1",      { NULL }, 1215,  "tcp" },
-  { "scanstat-1",      { NULL }, 1215,  "udp" },
-  { "etebac5",         { NULL }, 1216,  "tcp" },
-  { "etebac5",         { NULL }, 1216,  "udp" },
-  { "hpss-ndapi",      { NULL }, 1217,  "tcp" },
-  { "hpss-ndapi",      { NULL }, 1217,  "udp" },
-  { "aeroflight-ads",  { NULL }, 1218,  "tcp" },
-  { "aeroflight-ads",  { NULL }, 1218,  "udp" },
-  { "aeroflight-ret",  { NULL }, 1219,  "tcp" },
-  { "aeroflight-ret",  { NULL }, 1219,  "udp" },
-  { "qt-serveradmin",  { NULL }, 1220,  "tcp" },
-  { "qt-serveradmin",  { NULL }, 1220,  "udp" },
-  { "sweetware-apps",  { NULL }, 1221,  "tcp" },
-  { "sweetware-apps",  { NULL }, 1221,  "udp" },
-  { "nerv",            { NULL }, 1222,  "tcp" },
-  { "nerv",            { NULL }, 1222,  "udp" },
-  { "tgp",             { NULL }, 1223,  "tcp" },
-  { "tgp",             { NULL }, 1223,  "udp" },
-  { "vpnz",            { NULL }, 1224,  "tcp" },
-  { "vpnz",            { NULL }, 1224,  "udp" },
-  { "slinkysearch",    { NULL }, 1225,  "tcp" },
-  { "slinkysearch",    { NULL }, 1225,  "udp" },
-  { "stgxfws",         { NULL }, 1226,  "tcp" },
-  { "stgxfws",         { NULL }, 1226,  "udp" },
-  { "dns2go",          { NULL }, 1227,  "tcp" },
-  { "dns2go",          { NULL }, 1227,  "udp" },
-  { "florence",        { NULL }, 1228,  "tcp" },
-  { "florence",        { NULL }, 1228,  "udp" },
-  { "zented",          { NULL }, 1229,  "tcp" },
-  { "zented",          { NULL }, 1229,  "udp" },
-  { "periscope",       { NULL }, 1230,  "tcp" },
-  { "periscope",       { NULL }, 1230,  "udp" },
-  { "menandmice-lpm",  { NULL }, 1231,  "tcp" },
-  { "menandmice-lpm",  { NULL }, 1231,  "udp" },
-  { "univ-appserver",  { NULL }, 1233,  "tcp" },
-  { "univ-appserver",  { NULL }, 1233,  "udp" },
-  { "search-agent",    { NULL }, 1234,  "tcp" },
-  { "search-agent",    { NULL }, 1234,  "udp" },
-  { "mosaicsyssvc1",   { NULL }, 1235,  "tcp" },
-  { "mosaicsyssvc1",   { NULL }, 1235,  "udp" },
-  { "bvcontrol",       { NULL }, 1236,  "tcp" },
-  { "bvcontrol",       { NULL }, 1236,  "udp" },
-  { "tsdos390",        { NULL }, 1237,  "tcp" },
-  { "tsdos390",        { NULL }, 1237,  "udp" },
-  { "hacl-qs",         { NULL }, 1238,  "tcp" },
-  { "hacl-qs",         { NULL }, 1238,  "udp" },
-  { "nmsd",            { NULL }, 1239,  "tcp" },
-  { "nmsd",            { NULL }, 1239,  "udp" },
-  { "instantia",       { NULL }, 1240,  "tcp" },
-  { "instantia",       { NULL }, 1240,  "udp" },
-  { "nessus",          { NULL }, 1241,  "tcp" },
-  { "nessus",          { NULL }, 1241,  "udp" },
-  { "nmasoverip",      { NULL }, 1242,  "tcp" },
-  { "nmasoverip",      { NULL }, 1242,  "udp" },
-  { "serialgateway",   { NULL }, 1243,  "tcp" },
-  { "serialgateway",   { NULL }, 1243,  "udp" },
-  { "isbconference1",  { NULL }, 1244,  "tcp" },
-  { "isbconference1",  { NULL }, 1244,  "udp" },
-  { "isbconference2",  { NULL }, 1245,  "tcp" },
-  { "isbconference2",  { NULL }, 1245,  "udp" },
-  { "payrouter",       { NULL }, 1246,  "tcp" },
-  { "payrouter",       { NULL }, 1246,  "udp" },
-  { "visionpyramid",   { NULL }, 1247,  "tcp" },
-  { "visionpyramid",   { NULL }, 1247,  "udp" },
-  { "hermes",          { NULL }, 1248,  "tcp" },
-  { "hermes",          { NULL }, 1248,  "udp" },
-  { "mesavistaco",     { NULL }, 1249,  "tcp" },
-  { "mesavistaco",     { NULL }, 1249,  "udp" },
-  { "swldy-sias",      { NULL }, 1250,  "tcp" },
-  { "swldy-sias",      { NULL }, 1250,  "udp" },
-  { "servergraph",     { NULL }, 1251,  "tcp" },
-  { "servergraph",     { NULL }, 1251,  "udp" },
-  { "bspne-pcc",       { NULL }, 1252,  "tcp" },
-  { "bspne-pcc",       { NULL }, 1252,  "udp" },
-  { "q55-pcc",         { NULL }, 1253,  "tcp" },
-  { "q55-pcc",         { NULL }, 1253,  "udp" },
-  { "de-noc",          { NULL }, 1254,  "tcp" },
-  { "de-noc",          { NULL }, 1254,  "udp" },
-  { "de-cache-query",  { NULL }, 1255,  "tcp" },
-  { "de-cache-query",  { NULL }, 1255,  "udp" },
-  { "de-server",       { NULL }, 1256,  "tcp" },
-  { "de-server",       { NULL }, 1256,  "udp" },
-  { "shockwave2",      { NULL }, 1257,  "tcp" },
-  { "shockwave2",      { NULL }, 1257,  "udp" },
-  { "opennl",          { NULL }, 1258,  "tcp" },
-  { "opennl",          { NULL }, 1258,  "udp" },
-  { "opennl-voice",    { NULL }, 1259,  "tcp" },
-  { "opennl-voice",    { NULL }, 1259,  "udp" },
-  { "ibm-ssd",         { NULL }, 1260,  "tcp" },
-  { "ibm-ssd",         { NULL }, 1260,  "udp" },
-  { "mpshrsv",         { NULL }, 1261,  "tcp" },
-  { "mpshrsv",         { NULL }, 1261,  "udp" },
-  { "qnts-orb",        { NULL }, 1262,  "tcp" },
-  { "qnts-orb",        { NULL }, 1262,  "udp" },
-  { "dka",             { NULL }, 1263,  "tcp" },
-  { "dka",             { NULL }, 1263,  "udp" },
-  { "prat",            { NULL }, 1264,  "tcp" },
-  { "prat",            { NULL }, 1264,  "udp" },
-  { "dssiapi",         { NULL }, 1265,  "tcp" },
-  { "dssiapi",         { NULL }, 1265,  "udp" },
-  { "dellpwrappks",    { NULL }, 1266,  "tcp" },
-  { "dellpwrappks",    { NULL }, 1266,  "udp" },
-  { "epc",             { NULL }, 1267,  "tcp" },
-  { "epc",             { NULL }, 1267,  "udp" },
-  { "propel-msgsys",   { NULL }, 1268,  "tcp" },
-  { "propel-msgsys",   { NULL }, 1268,  "udp" },
-  { "watilapp",        { NULL }, 1269,  "tcp" },
-  { "watilapp",        { NULL }, 1269,  "udp" },
-  { "opsmgr",          { NULL }, 1270,  "tcp" },
-  { "opsmgr",          { NULL }, 1270,  "udp" },
-  { "excw",            { NULL }, 1271,  "tcp" },
-  { "excw",            { NULL }, 1271,  "udp" },
-  { "cspmlockmgr",     { NULL }, 1272,  "tcp" },
-  { "cspmlockmgr",     { NULL }, 1272,  "udp" },
-  { "emc-gateway",     { NULL }, 1273,  "tcp" },
-  { "emc-gateway",     { NULL }, 1273,  "udp" },
-  { "t1distproc",      { NULL }, 1274,  "tcp" },
-  { "t1distproc",      { NULL }, 1274,  "udp" },
-  { "ivcollector",     { NULL }, 1275,  "tcp" },
-  { "ivcollector",     { NULL }, 1275,  "udp" },
-  { "ivmanager",       { NULL }, 1276,  "tcp" },
-  { "ivmanager",       { NULL }, 1276,  "udp" },
-  { "miva-mqs",        { NULL }, 1277,  "tcp" },
-  { "miva-mqs",        { NULL }, 1277,  "udp" },
-  { "dellwebadmin-1",  { NULL }, 1278,  "tcp" },
-  { "dellwebadmin-1",  { NULL }, 1278,  "udp" },
-  { "dellwebadmin-2",  { NULL }, 1279,  "tcp" },
-  { "dellwebadmin-2",  { NULL }, 1279,  "udp" },
-  { "pictrography",    { NULL }, 1280,  "tcp" },
-  { "pictrography",    { NULL }, 1280,  "udp" },
-  { "healthd",         { NULL }, 1281,  "tcp" },
-  { "healthd",         { NULL }, 1281,  "udp" },
-  { "emperion",        { NULL }, 1282,  "tcp" },
-  { "emperion",        { NULL }, 1282,  "udp" },
-  { "productinfo",     { NULL }, 1283,  "tcp" },
-  { "productinfo",     { NULL }, 1283,  "udp" },
-  { "iee-qfx",         { NULL }, 1284,  "tcp" },
-  { "iee-qfx",         { NULL }, 1284,  "udp" },
-  { "neoiface",        { NULL }, 1285,  "tcp" },
-  { "neoiface",        { NULL }, 1285,  "udp" },
-  { "netuitive",       { NULL }, 1286,  "tcp" },
-  { "netuitive",       { NULL }, 1286,  "udp" },
-  { "routematch",      { NULL }, 1287,  "tcp" },
-  { "routematch",      { NULL }, 1287,  "udp" },
-  { "navbuddy",        { NULL }, 1288,  "tcp" },
-  { "navbuddy",        { NULL }, 1288,  "udp" },
-  { "jwalkserver",     { NULL }, 1289,  "tcp" },
-  { "jwalkserver",     { NULL }, 1289,  "udp" },
-  { "winjaserver",     { NULL }, 1290,  "tcp" },
-  { "winjaserver",     { NULL }, 1290,  "udp" },
-  { "seagulllms",      { NULL }, 1291,  "tcp" },
-  { "seagulllms",      { NULL }, 1291,  "udp" },
-  { "dsdn",            { NULL }, 1292,  "tcp" },
-  { "dsdn",            { NULL }, 1292,  "udp" },
-  { "pkt-krb-ipsec",   { NULL }, 1293,  "tcp" },
-  { "pkt-krb-ipsec",   { NULL }, 1293,  "udp" },
-  { "cmmdriver",       { NULL }, 1294,  "tcp" },
-  { "cmmdriver",       { NULL }, 1294,  "udp" },
-  { "ehtp",            { NULL }, 1295,  "tcp" },
-  { "ehtp",            { NULL }, 1295,  "udp" },
-  { "dproxy",          { NULL }, 1296,  "tcp" },
-  { "dproxy",          { NULL }, 1296,  "udp" },
-  { "sdproxy",         { NULL }, 1297,  "tcp" },
-  { "sdproxy",         { NULL }, 1297,  "udp" },
-  { "lpcp",            { NULL }, 1298,  "tcp" },
-  { "lpcp",            { NULL }, 1298,  "udp" },
-  { "hp-sci",          { NULL }, 1299,  "tcp" },
-  { "hp-sci",          { NULL }, 1299,  "udp" },
-  { "h323hostcallsc",  { NULL }, 1300,  "tcp" },
-  { "h323hostcallsc",  { NULL }, 1300,  "udp" },
-  { "ci3-software-1",  { NULL }, 1301,  "tcp" },
-  { "ci3-software-1",  { NULL }, 1301,  "udp" },
-  { "ci3-software-2",  { NULL }, 1302,  "tcp" },
-  { "ci3-software-2",  { NULL }, 1302,  "udp" },
-  { "sftsrv",          { NULL }, 1303,  "tcp" },
-  { "sftsrv",          { NULL }, 1303,  "udp" },
-  { "boomerang",       { NULL }, 1304,  "tcp" },
-  { "boomerang",       { NULL }, 1304,  "udp" },
-  { "pe-mike",         { NULL }, 1305,  "tcp" },
-  { "pe-mike",         { NULL }, 1305,  "udp" },
-  { "re-conn-proto",   { NULL }, 1306,  "tcp" },
-  { "re-conn-proto",   { NULL }, 1306,  "udp" },
-  { "pacmand",         { NULL }, 1307,  "tcp" },
-  { "pacmand",         { NULL }, 1307,  "udp" },
-  { "odsi",            { NULL }, 1308,  "tcp" },
-  { "odsi",            { NULL }, 1308,  "udp" },
-  { "jtag-server",     { NULL }, 1309,  "tcp" },
-  { "jtag-server",     { NULL }, 1309,  "udp" },
-  { "husky",           { NULL }, 1310,  "tcp" },
-  { "husky",           { NULL }, 1310,  "udp" },
-  { "rxmon",           { NULL }, 1311,  "tcp" },
-  { "rxmon",           { NULL }, 1311,  "udp" },
-  { "sti-envision",    { NULL }, 1312,  "tcp" },
-  { "sti-envision",    { NULL }, 1312,  "udp" },
-  { "bmc_patroldb",    { NULL }, 1313,  "tcp" },
-  { "bmc_patroldb",    { NULL }, 1313,  "udp" },
-  { "pdps",            { NULL }, 1314,  "tcp" },
-  { "pdps",            { NULL }, 1314,  "udp" },
-  { "els",             { NULL }, 1315,  "tcp" },
-  { "els",             { NULL }, 1315,  "udp" },
-  { "exbit-escp",      { NULL }, 1316,  "tcp" },
-  { "exbit-escp",      { NULL }, 1316,  "udp" },
-  { "vrts-ipcserver",  { NULL }, 1317,  "tcp" },
-  { "vrts-ipcserver",  { NULL }, 1317,  "udp" },
-  { "krb5gatekeeper",  { NULL }, 1318,  "tcp" },
-  { "krb5gatekeeper",  { NULL }, 1318,  "udp" },
-  { "amx-icsp",        { NULL }, 1319,  "tcp" },
-  { "amx-icsp",        { NULL }, 1319,  "udp" },
-  { "amx-axbnet",      { NULL }, 1320,  "tcp" },
-  { "amx-axbnet",      { NULL }, 1320,  "udp" },
-  { "pip",             { NULL }, 1321,  "tcp" },
-  { "pip",             { NULL }, 1321,  "udp" },
-  { "novation",        { NULL }, 1322,  "tcp" },
-  { "novation",        { NULL }, 1322,  "udp" },
-  { "brcd",            { NULL }, 1323,  "tcp" },
-  { "brcd",            { NULL }, 1323,  "udp" },
-  { "delta-mcp",       { NULL }, 1324,  "tcp" },
-  { "delta-mcp",       { NULL }, 1324,  "udp" },
-  { "dx-instrument",   { NULL }, 1325,  "tcp" },
-  { "dx-instrument",   { NULL }, 1325,  "udp" },
-  { "wimsic",          { NULL }, 1326,  "tcp" },
-  { "wimsic",          { NULL }, 1326,  "udp" },
-  { "ultrex",          { NULL }, 1327,  "tcp" },
-  { "ultrex",          { NULL }, 1327,  "udp" },
-  { "ewall",           { NULL }, 1328,  "tcp" },
-  { "ewall",           { NULL }, 1328,  "udp" },
-  { "netdb-export",    { NULL }, 1329,  "tcp" },
-  { "netdb-export",    { NULL }, 1329,  "udp" },
-  { "streetperfect",   { NULL }, 1330,  "tcp" },
-  { "streetperfect",   { NULL }, 1330,  "udp" },
-  { "intersan",        { NULL }, 1331,  "tcp" },
-  { "intersan",        { NULL }, 1331,  "udp" },
-  { "pcia-rxp-b",      { NULL }, 1332,  "tcp" },
-  { "pcia-rxp-b",      { NULL }, 1332,  "udp" },
-  { "passwrd-policy",  { NULL }, 1333,  "tcp" },
-  { "passwrd-policy",  { NULL }, 1333,  "udp" },
-  { "writesrv",        { NULL }, 1334,  "tcp" },
-  { "writesrv",        { NULL }, 1334,  "udp" },
-  { "digital-notary",  { NULL }, 1335,  "tcp" },
-  { "digital-notary",  { NULL }, 1335,  "udp" },
-  { "ischat",          { NULL }, 1336,  "tcp" },
-  { "ischat",          { NULL }, 1336,  "udp" },
-  { "menandmice-dns",  { NULL }, 1337,  "tcp" },
-  { "menandmice-dns",  { NULL }, 1337,  "udp" },
-  { "wmc-log-svc",     { NULL }, 1338,  "tcp" },
-  { "wmc-log-svc",     { NULL }, 1338,  "udp" },
-  { "kjtsiteserver",   { NULL }, 1339,  "tcp" },
-  { "kjtsiteserver",   { NULL }, 1339,  "udp" },
-  { "naap",            { NULL }, 1340,  "tcp" },
-  { "naap",            { NULL }, 1340,  "udp" },
-  { "qubes",           { NULL }, 1341,  "tcp" },
-  { "qubes",           { NULL }, 1341,  "udp" },
-  { "esbroker",        { NULL }, 1342,  "tcp" },
-  { "esbroker",        { NULL }, 1342,  "udp" },
-  { "re101",           { NULL }, 1343,  "tcp" },
-  { "re101",           { NULL }, 1343,  "udp" },
-  { "icap",            { NULL }, 1344,  "tcp" },
-  { "icap",            { NULL }, 1344,  "udp" },
-  { "vpjp",            { NULL }, 1345,  "tcp" },
-  { "vpjp",            { NULL }, 1345,  "udp" },
-  { "alta-ana-lm",     { NULL }, 1346,  "tcp" },
-  { "alta-ana-lm",     { NULL }, 1346,  "udp" },
-  { "bbn-mmc",         { NULL }, 1347,  "tcp" },
-  { "bbn-mmc",         { NULL }, 1347,  "udp" },
-  { "bbn-mmx",         { NULL }, 1348,  "tcp" },
-  { "bbn-mmx",         { NULL }, 1348,  "udp" },
-  { "sbook",           { NULL }, 1349,  "tcp" },
-  { "sbook",           { NULL }, 1349,  "udp" },
-  { "editbench",       { NULL }, 1350,  "tcp" },
-  { "editbench",       { NULL }, 1350,  "udp" },
-  { "equationbuilder", { NULL }, 1351,  "tcp" },
-  { "equationbuilder", { NULL }, 1351,  "udp" },
-  { "lotusnote",       { NULL }, 1352,  "tcp" },
-  { "lotusnote",       { NULL }, 1352,  "udp" },
-  { "relief",          { NULL }, 1353,  "tcp" },
-  { "relief",          { NULL }, 1353,  "udp" },
-  { "XSIP-network",    { NULL }, 1354,  "tcp" },
-  { "XSIP-network",    { NULL }, 1354,  "udp" },
-  { "intuitive-edge",  { NULL }, 1355,  "tcp" },
-  { "intuitive-edge",  { NULL }, 1355,  "udp" },
-  { "cuillamartin",    { NULL }, 1356,  "tcp" },
-  { "cuillamartin",    { NULL }, 1356,  "udp" },
-  { "pegboard",        { NULL }, 1357,  "tcp" },
-  { "pegboard",        { NULL }, 1357,  "udp" },
-  { "connlcli",        { NULL }, 1358,  "tcp" },
-  { "connlcli",        { NULL }, 1358,  "udp" },
-  { "ftsrv",           { NULL }, 1359,  "tcp" },
-  { "ftsrv",           { NULL }, 1359,  "udp" },
-  { "mimer",           { NULL }, 1360,  "tcp" },
-  { "mimer",           { NULL }, 1360,  "udp" },
-  { "linx",            { NULL }, 1361,  "tcp" },
-  { "linx",            { NULL }, 1361,  "udp" },
-  { "timeflies",       { NULL }, 1362,  "tcp" },
-  { "timeflies",       { NULL }, 1362,  "udp" },
-  { "ndm-requester",   { NULL }, 1363,  "tcp" },
-  { "ndm-requester",   { NULL }, 1363,  "udp" },
-  { "ndm-server",      { NULL }, 1364,  "tcp" },
-  { "ndm-server",      { NULL }, 1364,  "udp" },
-  { "adapt-sna",       { NULL }, 1365,  "tcp" },
-  { "adapt-sna",       { NULL }, 1365,  "udp" },
-  { "netware-csp",     { NULL }, 1366,  "tcp" },
-  { "netware-csp",     { NULL }, 1366,  "udp" },
-  { "dcs",             { NULL }, 1367,  "tcp" },
-  { "dcs",             { NULL }, 1367,  "udp" },
-  { "screencast",      { NULL }, 1368,  "tcp" },
-  { "screencast",      { NULL }, 1368,  "udp" },
-  { "gv-us",           { NULL }, 1369,  "tcp" },
-  { "gv-us",           { NULL }, 1369,  "udp" },
-  { "us-gv",           { NULL }, 1370,  "tcp" },
-  { "us-gv",           { NULL }, 1370,  "udp" },
-  { "fc-cli",          { NULL }, 1371,  "tcp" },
-  { "fc-cli",          { NULL }, 1371,  "udp" },
-  { "fc-ser",          { NULL }, 1372,  "tcp" },
-  { "fc-ser",          { NULL }, 1372,  "udp" },
-  { "chromagrafx",     { NULL }, 1373,  "tcp" },
-  { "chromagrafx",     { NULL }, 1373,  "udp" },
-  { "molly",           { NULL }, 1374,  "tcp" },
-  { "molly",           { NULL }, 1374,  "udp" },
-  { "bytex",           { NULL }, 1375,  "tcp" },
-  { "bytex",           { NULL }, 1375,  "udp" },
-  { "ibm-pps",         { NULL }, 1376,  "tcp" },
-  { "ibm-pps",         { NULL }, 1376,  "udp" },
-  { "cichlid",         { NULL }, 1377,  "tcp" },
-  { "cichlid",         { NULL }, 1377,  "udp" },
-  { "elan",            { NULL }, 1378,  "tcp" },
-  { "elan",            { NULL }, 1378,  "udp" },
-  { "dbreporter",      { NULL }, 1379,  "tcp" },
-  { "dbreporter",      { NULL }, 1379,  "udp" },
-  { "telesis-licman",  { NULL }, 1380,  "tcp" },
-  { "telesis-licman",  { NULL }, 1380,  "udp" },
-  { "apple-licman",    { NULL }, 1381,  "tcp" },
-  { "apple-licman",    { NULL }, 1381,  "udp" },
-  { "udt_os",          { NULL }, 1382,  "tcp" },
-  { "udt_os",          { NULL }, 1382,  "udp" },
-  { "gwha",            { NULL }, 1383,  "tcp" },
-  { "gwha",            { NULL }, 1383,  "udp" },
-  { "os-licman",       { NULL }, 1384,  "tcp" },
-  { "os-licman",       { NULL }, 1384,  "udp" },
-  { "atex_elmd",       { NULL }, 1385,  "tcp" },
-  { "atex_elmd",       { NULL }, 1385,  "udp" },
-  { "checksum",        { NULL }, 1386,  "tcp" },
-  { "checksum",        { NULL }, 1386,  "udp" },
-  { "cadsi-lm",        { NULL }, 1387,  "tcp" },
-  { "cadsi-lm",        { NULL }, 1387,  "udp" },
-  { "objective-dbc",   { NULL }, 1388,  "tcp" },
-  { "objective-dbc",   { NULL }, 1388,  "udp" },
-  { "iclpv-dm",        { NULL }, 1389,  "tcp" },
-  { "iclpv-dm",        { NULL }, 1389,  "udp" },
-  { "iclpv-sc",        { NULL }, 1390,  "tcp" },
-  { "iclpv-sc",        { NULL }, 1390,  "udp" },
-  { "iclpv-sas",       { NULL }, 1391,  "tcp" },
-  { "iclpv-sas",       { NULL }, 1391,  "udp" },
-  { "iclpv-pm",        { NULL }, 1392,  "tcp" },
-  { "iclpv-pm",        { NULL }, 1392,  "udp" },
-  { "iclpv-nls",       { NULL }, 1393,  "tcp" },
-  { "iclpv-nls",       { NULL }, 1393,  "udp" },
-  { "iclpv-nlc",       { NULL }, 1394,  "tcp" },
-  { "iclpv-nlc",       { NULL }, 1394,  "udp" },
-  { "iclpv-wsm",       { NULL }, 1395,  "tcp" },
-  { "iclpv-wsm",       { NULL }, 1395,  "udp" },
-  { "dvl-activemail",  { NULL }, 1396,  "tcp" },
-  { "dvl-activemail",  { NULL }, 1396,  "udp" },
-  { "audio-activmail", { NULL }, 1397,  "tcp" },
-  { "audio-activmail", { NULL }, 1397,  "udp" },
-  { "video-activmail", { NULL }, 1398,  "tcp" },
-  { "video-activmail", { NULL }, 1398,  "udp" },
-  { "cadkey-licman",   { NULL }, 1399,  "tcp" },
-  { "cadkey-licman",   { NULL }, 1399,  "udp" },
-  { "cadkey-tablet",   { NULL }, 1400,  "tcp" },
-  { "cadkey-tablet",   { NULL }, 1400,  "udp" },
-  { "goldleaf-licman", { NULL }, 1401,  "tcp" },
-  { "goldleaf-licman", { NULL }, 1401,  "udp" },
-  { "prm-sm-np",       { NULL }, 1402,  "tcp" },
-  { "prm-sm-np",       { NULL }, 1402,  "udp" },
-  { "prm-nm-np",       { NULL }, 1403,  "tcp" },
-  { "prm-nm-np",       { NULL }, 1403,  "udp" },
-  { "igi-lm",          { NULL }, 1404,  "tcp" },
-  { "igi-lm",          { NULL }, 1404,  "udp" },
-  { "ibm-res",         { NULL }, 1405,  "tcp" },
-  { "ibm-res",         { NULL }, 1405,  "udp" },
-  { "netlabs-lm",      { NULL }, 1406,  "tcp" },
-  { "netlabs-lm",      { NULL }, 1406,  "udp" },
-  { "dbsa-lm",         { NULL }, 1407,  "tcp" },
-  { "dbsa-lm",         { NULL }, 1407,  "udp" },
-  { "sophia-lm",       { NULL }, 1408,  "tcp" },
-  { "sophia-lm",       { NULL }, 1408,  "udp" },
-  { "here-lm",         { NULL }, 1409,  "tcp" },
-  { "here-lm",         { NULL }, 1409,  "udp" },
-  { "hiq",             { NULL }, 1410,  "tcp" },
-  { "hiq",             { NULL }, 1410,  "udp" },
-  { "af",              { NULL }, 1411,  "tcp" },
-  { "af",              { NULL }, 1411,  "udp" },
-  { "innosys",         { NULL }, 1412,  "tcp" },
-  { "innosys",         { NULL }, 1412,  "udp" },
-  { "innosys-acl",     { NULL }, 1413,  "tcp" },
-  { "innosys-acl",     { NULL }, 1413,  "udp" },
-  { "ibm-mqseries",    { NULL }, 1414,  "tcp" },
-  { "ibm-mqseries",    { NULL }, 1414,  "udp" },
-  { "dbstar",          { NULL }, 1415,  "tcp" },
-  { "dbstar",          { NULL }, 1415,  "udp" },
-  { "novell-lu6.2",    { NULL }, 1416,  "tcp" },
-  { "novell-lu6.2",    { NULL }, 1416,  "udp" },
-  { "timbuktu-srv1",   { NULL }, 1417,  "tcp" },
-  { "timbuktu-srv1",   { NULL }, 1417,  "udp" },
-  { "timbuktu-srv2",   { NULL }, 1418,  "tcp" },
-  { "timbuktu-srv2",   { NULL }, 1418,  "udp" },
-  { "timbuktu-srv3",   { NULL }, 1419,  "tcp" },
-  { "timbuktu-srv3",   { NULL }, 1419,  "udp" },
-  { "timbuktu-srv4",   { NULL }, 1420,  "tcp" },
-  { "timbuktu-srv4",   { NULL }, 1420,  "udp" },
-  { "gandalf-lm",      { NULL }, 1421,  "tcp" },
-  { "gandalf-lm",      { NULL }, 1421,  "udp" },
-  { "autodesk-lm",     { NULL }, 1422,  "tcp" },
-  { "autodesk-lm",     { NULL }, 1422,  "udp" },
-  { "essbase",         { NULL }, 1423,  "tcp" },
-  { "essbase",         { NULL }, 1423,  "udp" },
-  { "hybrid",          { NULL }, 1424,  "tcp" },
-  { "hybrid",          { NULL }, 1424,  "udp" },
-  { "zion-lm",         { NULL }, 1425,  "tcp" },
-  { "zion-lm",         { NULL }, 1425,  "udp" },
-  { "sais",            { NULL }, 1426,  "tcp" },
-  { "sais",            { NULL }, 1426,  "udp" },
-  { "mloadd",          { NULL }, 1427,  "tcp" },
-  { "mloadd",          { NULL }, 1427,  "udp" },
-  { "informatik-lm",   { NULL }, 1428,  "tcp" },
-  { "informatik-lm",   { NULL }, 1428,  "udp" },
-  { "nms",             { NULL }, 1429,  "tcp" },
-  { "nms",             { NULL }, 1429,  "udp" },
-  { "tpdu",            { NULL }, 1430,  "tcp" },
-  { "tpdu",            { NULL }, 1430,  "udp" },
-  { "rgtp",            { NULL }, 1431,  "tcp" },
-  { "rgtp",            { NULL }, 1431,  "udp" },
-  { "blueberry-lm",    { NULL }, 1432,  "tcp" },
-  { "blueberry-lm",    { NULL }, 1432,  "udp" },
-  { "ms-sql-s",        { NULL }, 1433,  "tcp" },
-  { "ms-sql-s",        { NULL }, 1433,  "udp" },
-  { "ms-sql-m",        { NULL }, 1434,  "tcp" },
-  { "ms-sql-m",        { NULL }, 1434,  "udp" },
-  { "ibm-cics",        { NULL }, 1435,  "tcp" },
-  { "ibm-cics",        { NULL }, 1435,  "udp" },
-  { "saism",           { NULL }, 1436,  "tcp" },
-  { "saism",           { NULL }, 1436,  "udp" },
-  { "tabula",          { NULL }, 1437,  "tcp" },
-  { "tabula",          { NULL }, 1437,  "udp" },
-  { "eicon-server",    { NULL }, 1438,  "tcp" },
-  { "eicon-server",    { NULL }, 1438,  "udp" },
-  { "eicon-x25",       { NULL }, 1439,  "tcp" },
-  { "eicon-x25",       { NULL }, 1439,  "udp" },
-  { "eicon-slp",       { NULL }, 1440,  "tcp" },
-  { "eicon-slp",       { NULL }, 1440,  "udp" },
-  { "cadis-1",         { NULL }, 1441,  "tcp" },
-  { "cadis-1",         { NULL }, 1441,  "udp" },
-  { "cadis-2",         { NULL }, 1442,  "tcp" },
-  { "cadis-2",         { NULL }, 1442,  "udp" },
-  { "ies-lm",          { NULL }, 1443,  "tcp" },
-  { "ies-lm",          { NULL }, 1443,  "udp" },
-  { "marcam-lm",       { NULL }, 1444,  "tcp" },
-  { "marcam-lm",       { NULL }, 1444,  "udp" },
-  { "proxima-lm",      { NULL }, 1445,  "tcp" },
-  { "proxima-lm",      { NULL }, 1445,  "udp" },
-  { "ora-lm",          { NULL }, 1446,  "tcp" },
-  { "ora-lm",          { NULL }, 1446,  "udp" },
-  { "apri-lm",         { NULL }, 1447,  "tcp" },
-  { "apri-lm",         { NULL }, 1447,  "udp" },
-  { "oc-lm",           { NULL }, 1448,  "tcp" },
-  { "oc-lm",           { NULL }, 1448,  "udp" },
-  { "peport",          { NULL }, 1449,  "tcp" },
-  { "peport",          { NULL }, 1449,  "udp" },
-  { "dwf",             { NULL }, 1450,  "tcp" },
-  { "dwf",             { NULL }, 1450,  "udp" },
-  { "infoman",         { NULL }, 1451,  "tcp" },
-  { "infoman",         { NULL }, 1451,  "udp" },
-  { "gtegsc-lm",       { NULL }, 1452,  "tcp" },
-  { "gtegsc-lm",       { NULL }, 1452,  "udp" },
-  { "genie-lm",        { NULL }, 1453,  "tcp" },
-  { "genie-lm",        { NULL }, 1453,  "udp" },
-  { "interhdl_elmd",   { NULL }, 1454,  "tcp" },
-  { "interhdl_elmd",   { NULL }, 1454,  "udp" },
-  { "esl-lm",          { NULL }, 1455,  "tcp" },
-  { "esl-lm",          { NULL }, 1455,  "udp" },
-  { "dca",             { NULL }, 1456,  "tcp" },
-  { "dca",             { NULL }, 1456,  "udp" },
-  { "valisys-lm",      { NULL }, 1457,  "tcp" },
-  { "valisys-lm",      { NULL }, 1457,  "udp" },
-  { "nrcabq-lm",       { NULL }, 1458,  "tcp" },
-  { "nrcabq-lm",       { NULL }, 1458,  "udp" },
-  { "proshare1",       { NULL }, 1459,  "tcp" },
-  { "proshare1",       { NULL }, 1459,  "udp" },
-  { "proshare2",       { NULL }, 1460,  "tcp" },
-  { "proshare2",       { NULL }, 1460,  "udp" },
-  { "ibm_wrless_lan",  { NULL }, 1461,  "tcp" },
-  { "ibm_wrless_lan",  { NULL }, 1461,  "udp" },
-  { "world-lm",        { NULL }, 1462,  "tcp" },
-  { "world-lm",        { NULL }, 1462,  "udp" },
-  { "nucleus",         { NULL }, 1463,  "tcp" },
-  { "nucleus",         { NULL }, 1463,  "udp" },
-  { "msl_lmd",         { NULL }, 1464,  "tcp" },
-  { "msl_lmd",         { NULL }, 1464,  "udp" },
-  { "pipes",           { NULL }, 1465,  "tcp" },
-  { "pipes",           { NULL }, 1465,  "udp" },
-  { "oceansoft-lm",    { NULL }, 1466,  "tcp" },
-  { "oceansoft-lm",    { NULL }, 1466,  "udp" },
-  { "csdmbase",        { NULL }, 1467,  "tcp" },
-  { "csdmbase",        { NULL }, 1467,  "udp" },
-  { "csdm",            { NULL }, 1468,  "tcp" },
-  { "csdm",            { NULL }, 1468,  "udp" },
-  { "aal-lm",          { NULL }, 1469,  "tcp" },
-  { "aal-lm",          { NULL }, 1469,  "udp" },
-  { "uaiact",          { NULL }, 1470,  "tcp" },
-  { "uaiact",          { NULL }, 1470,  "udp" },
-  { "csdmbase",        { NULL }, 1471,  "tcp" },
-  { "csdmbase",        { NULL }, 1471,  "udp" },
-  { "csdm",            { NULL }, 1472,  "tcp" },
-  { "csdm",            { NULL }, 1472,  "udp" },
-  { "openmath",        { NULL }, 1473,  "tcp" },
-  { "openmath",        { NULL }, 1473,  "udp" },
-  { "telefinder",      { NULL }, 1474,  "tcp" },
-  { "telefinder",      { NULL }, 1474,  "udp" },
-  { "taligent-lm",     { NULL }, 1475,  "tcp" },
-  { "taligent-lm",     { NULL }, 1475,  "udp" },
-  { "clvm-cfg",        { NULL }, 1476,  "tcp" },
-  { "clvm-cfg",        { NULL }, 1476,  "udp" },
-  { "ms-sna-server",   { NULL }, 1477,  "tcp" },
-  { "ms-sna-server",   { NULL }, 1477,  "udp" },
-  { "ms-sna-base",     { NULL }, 1478,  "tcp" },
-  { "ms-sna-base",     { NULL }, 1478,  "udp" },
-  { "dberegister",     { NULL }, 1479,  "tcp" },
-  { "dberegister",     { NULL }, 1479,  "udp" },
-  { "pacerforum",      { NULL }, 1480,  "tcp" },
-  { "pacerforum",      { NULL }, 1480,  "udp" },
-  { "airs",            { NULL }, 1481,  "tcp" },
-  { "airs",            { NULL }, 1481,  "udp" },
-  { "miteksys-lm",     { NULL }, 1482,  "tcp" },
-  { "miteksys-lm",     { NULL }, 1482,  "udp" },
-  { "afs",             { NULL }, 1483,  "tcp" },
-  { "afs",             { NULL }, 1483,  "udp" },
-  { "confluent",       { NULL }, 1484,  "tcp" },
-  { "confluent",       { NULL }, 1484,  "udp" },
-  { "lansource",       { NULL }, 1485,  "tcp" },
-  { "lansource",       { NULL }, 1485,  "udp" },
-  { "nms_topo_serv",   { NULL }, 1486,  "tcp" },
-  { "nms_topo_serv",   { NULL }, 1486,  "udp" },
-  { "localinfosrvr",   { NULL }, 1487,  "tcp" },
-  { "localinfosrvr",   { NULL }, 1487,  "udp" },
-  { "docstor",         { NULL }, 1488,  "tcp" },
-  { "docstor",         { NULL }, 1488,  "udp" },
-  { "dmdocbroker",     { NULL }, 1489,  "tcp" },
-  { "dmdocbroker",     { NULL }, 1489,  "udp" },
-  { "insitu-conf",     { NULL }, 1490,  "tcp" },
-  { "insitu-conf",     { NULL }, 1490,  "udp" },
-  { "stone-design-1",  { NULL }, 1492,  "tcp" },
-  { "stone-design-1",  { NULL }, 1492,  "udp" },
-  { "netmap_lm",       { NULL }, 1493,  "tcp" },
-  { "netmap_lm",       { NULL }, 1493,  "udp" },
-  { "ica",             { NULL }, 1494,  "tcp" },
-  { "ica",             { NULL }, 1494,  "udp" },
-  { "cvc",             { NULL }, 1495,  "tcp" },
-  { "cvc",             { NULL }, 1495,  "udp" },
-  { "liberty-lm",      { NULL }, 1496,  "tcp" },
-  { "liberty-lm",      { NULL }, 1496,  "udp" },
-  { "rfx-lm",          { NULL }, 1497,  "tcp" },
-  { "rfx-lm",          { NULL }, 1497,  "udp" },
-  { "sybase-sqlany",   { NULL }, 1498,  "tcp" },
-  { "sybase-sqlany",   { NULL }, 1498,  "udp" },
-  { "fhc",             { NULL }, 1499,  "tcp" },
-  { "fhc",             { NULL }, 1499,  "udp" },
-  { "vlsi-lm",         { NULL }, 1500,  "tcp" },
-  { "vlsi-lm",         { NULL }, 1500,  "udp" },
-  { "saiscm",          { NULL }, 1501,  "tcp" },
-  { "saiscm",          { NULL }, 1501,  "udp" },
-  { "shivadiscovery",  { NULL }, 1502,  "tcp" },
-  { "shivadiscovery",  { NULL }, 1502,  "udp" },
-  { "imtc-mcs",        { NULL }, 1503,  "tcp" },
-  { "imtc-mcs",        { NULL }, 1503,  "udp" },
-  { "evb-elm",         { NULL }, 1504,  "tcp" },
-  { "evb-elm",         { NULL }, 1504,  "udp" },
-  { "funkproxy",       { NULL }, 1505,  "tcp" },
-  { "funkproxy",       { NULL }, 1505,  "udp" },
-  { "utcd",            { NULL }, 1506,  "tcp" },
-  { "utcd",            { NULL }, 1506,  "udp" },
-  { "symplex",         { NULL }, 1507,  "tcp" },
-  { "symplex",         { NULL }, 1507,  "udp" },
-  { "diagmond",        { NULL }, 1508,  "tcp" },
-  { "diagmond",        { NULL }, 1508,  "udp" },
-  { "robcad-lm",       { NULL }, 1509,  "tcp" },
-  { "robcad-lm",       { NULL }, 1509,  "udp" },
-  { "mvx-lm",          { NULL }, 1510,  "tcp" },
-  { "mvx-lm",          { NULL }, 1510,  "udp" },
-  { "3l-l1",           { NULL }, 1511,  "tcp" },
-  { "3l-l1",           { NULL }, 1511,  "udp" },
-  { "wins",            { NULL }, 1512,  "tcp" },
-  { "wins",            { NULL }, 1512,  "udp" },
-  { "fujitsu-dtc",     { NULL }, 1513,  "tcp" },
-  { "fujitsu-dtc",     { NULL }, 1513,  "udp" },
-  { "fujitsu-dtcns",   { NULL }, 1514,  "tcp" },
-  { "fujitsu-dtcns",   { NULL }, 1514,  "udp" },
-  { "ifor-protocol",   { NULL }, 1515,  "tcp" },
-  { "ifor-protocol",   { NULL }, 1515,  "udp" },
-  { "vpad",            { NULL }, 1516,  "tcp" },
-  { "vpad",            { NULL }, 1516,  "udp" },
-  { "vpac",            { NULL }, 1517,  "tcp" },
-  { "vpac",            { NULL }, 1517,  "udp" },
-  { "vpvd",            { NULL }, 1518,  "tcp" },
-  { "vpvd",            { NULL }, 1518,  "udp" },
-  { "vpvc",            { NULL }, 1519,  "tcp" },
-  { "vpvc",            { NULL }, 1519,  "udp" },
-  { "atm-zip-office",  { NULL }, 1520,  "tcp" },
-  { "atm-zip-office",  { NULL }, 1520,  "udp" },
-  { "ncube-lm",        { NULL }, 1521,  "tcp" },
-  { "ncube-lm",        { NULL }, 1521,  "udp" },
-  { "ricardo-lm",      { NULL }, 1522,  "tcp" },
-  { "ricardo-lm",      { NULL }, 1522,  "udp" },
-  { "cichild-lm",      { NULL }, 1523,  "tcp" },
-  { "cichild-lm",      { NULL }, 1523,  "udp" },
-  { "ingreslock",      { NULL }, 1524,  "tcp" },
-  { "ingreslock",      { NULL }, 1524,  "udp" },
-  { "orasrv",          { NULL }, 1525,  "tcp" },
-  { "orasrv",          { NULL }, 1525,  "udp" },
-  { "prospero-np",     { NULL }, 1525,  "tcp" },
-  { "prospero-np",     { NULL }, 1525,  "udp" },
-  { "pdap-np",         { NULL }, 1526,  "tcp" },
-  { "pdap-np",         { NULL }, 1526,  "udp" },
-  { "tlisrv",          { NULL }, 1527,  "tcp" },
-  { "tlisrv",          { NULL }, 1527,  "udp" },
-  { "coauthor",        { NULL }, 1529,  "tcp" },
-  { "coauthor",        { NULL }, 1529,  "udp" },
-  { "rap-service",     { NULL }, 1530,  "tcp" },
-  { "rap-service",     { NULL }, 1530,  "udp" },
-  { "rap-listen",      { NULL }, 1531,  "tcp" },
-  { "rap-listen",      { NULL }, 1531,  "udp" },
-  { "miroconnect",     { NULL }, 1532,  "tcp" },
-  { "miroconnect",     { NULL }, 1532,  "udp" },
-  { "virtual-places",  { NULL }, 1533,  "tcp" },
-  { "virtual-places",  { NULL }, 1533,  "udp" },
-  { "micromuse-lm",    { NULL }, 1534,  "tcp" },
-  { "micromuse-lm",    { NULL }, 1534,  "udp" },
-  { "ampr-info",       { NULL }, 1535,  "tcp" },
-  { "ampr-info",       { NULL }, 1535,  "udp" },
-  { "ampr-inter",      { NULL }, 1536,  "tcp" },
-  { "ampr-inter",      { NULL }, 1536,  "udp" },
-  { "sdsc-lm",         { NULL }, 1537,  "tcp" },
-  { "sdsc-lm",         { NULL }, 1537,  "udp" },
-  { "3ds-lm",          { NULL }, 1538,  "tcp" },
-  { "3ds-lm",          { NULL }, 1538,  "udp" },
-  { "intellistor-lm",  { NULL }, 1539,  "tcp" },
-  { "intellistor-lm",  { NULL }, 1539,  "udp" },
-  { "rds",             { NULL }, 1540,  "tcp" },
-  { "rds",             { NULL }, 1540,  "udp" },
-  { "rds2",            { NULL }, 1541,  "tcp" },
-  { "rds2",            { NULL }, 1541,  "udp" },
-  { "gridgen-elmd",    { NULL }, 1542,  "tcp" },
-  { "gridgen-elmd",    { NULL }, 1542,  "udp" },
-  { "simba-cs",        { NULL }, 1543,  "tcp" },
-  { "simba-cs",        { NULL }, 1543,  "udp" },
-  { "aspeclmd",        { NULL }, 1544,  "tcp" },
-  { "aspeclmd",        { NULL }, 1544,  "udp" },
-  { "vistium-share",   { NULL }, 1545,  "tcp" },
-  { "vistium-share",   { NULL }, 1545,  "udp" },
-  { "abbaccuray",      { NULL }, 1546,  "tcp" },
-  { "abbaccuray",      { NULL }, 1546,  "udp" },
-  { "laplink",         { NULL }, 1547,  "tcp" },
-  { "laplink",         { NULL }, 1547,  "udp" },
-  { "axon-lm",         { NULL }, 1548,  "tcp" },
-  { "axon-lm",         { NULL }, 1548,  "udp" },
-  { "shivahose",       { NULL }, 1549,  "tcp" },
-  { "shivasound",      { NULL }, 1549,  "udp" },
-  { "3m-image-lm",     { NULL }, 1550,  "tcp" },
-  { "3m-image-lm",     { NULL }, 1550,  "udp" },
-  { "hecmtl-db",       { NULL }, 1551,  "tcp" },
-  { "hecmtl-db",       { NULL }, 1551,  "udp" },
-  { "pciarray",        { NULL }, 1552,  "tcp" },
-  { "pciarray",        { NULL }, 1552,  "udp" },
-  { "sna-cs",          { NULL }, 1553,  "tcp" },
-  { "sna-cs",          { NULL }, 1553,  "udp" },
-  { "caci-lm",         { NULL }, 1554,  "tcp" },
-  { "caci-lm",         { NULL }, 1554,  "udp" },
-  { "livelan",         { NULL }, 1555,  "tcp" },
-  { "livelan",         { NULL }, 1555,  "udp" },
-  { "veritas_pbx",     { NULL }, 1556,  "tcp" },
-  { "veritas_pbx",     { NULL }, 1556,  "udp" },
-  { "arbortext-lm",    { NULL }, 1557,  "tcp" },
-  { "arbortext-lm",    { NULL }, 1557,  "udp" },
-  { "xingmpeg",        { NULL }, 1558,  "tcp" },
-  { "xingmpeg",        { NULL }, 1558,  "udp" },
-  { "web2host",        { NULL }, 1559,  "tcp" },
-  { "web2host",        { NULL }, 1559,  "udp" },
-  { "asci-val",        { NULL }, 1560,  "tcp" },
-  { "asci-val",        { NULL }, 1560,  "udp" },
-  { "facilityview",    { NULL }, 1561,  "tcp" },
-  { "facilityview",    { NULL }, 1561,  "udp" },
-  { "pconnectmgr",     { NULL }, 1562,  "tcp" },
-  { "pconnectmgr",     { NULL }, 1562,  "udp" },
-  { "cadabra-lm",      { NULL }, 1563,  "tcp" },
-  { "cadabra-lm",      { NULL }, 1563,  "udp" },
-  { "pay-per-view",    { NULL }, 1564,  "tcp" },
-  { "pay-per-view",    { NULL }, 1564,  "udp" },
-  { "winddlb",         { NULL }, 1565,  "tcp" },
-  { "winddlb",         { NULL }, 1565,  "udp" },
-  { "corelvideo",      { NULL }, 1566,  "tcp" },
-  { "corelvideo",      { NULL }, 1566,  "udp" },
-  { "jlicelmd",        { NULL }, 1567,  "tcp" },
-  { "jlicelmd",        { NULL }, 1567,  "udp" },
-  { "tsspmap",         { NULL }, 1568,  "tcp" },
-  { "tsspmap",         { NULL }, 1568,  "udp" },
-  { "ets",             { NULL }, 1569,  "tcp" },
-  { "ets",             { NULL }, 1569,  "udp" },
-  { "orbixd",          { NULL }, 1570,  "tcp" },
-  { "orbixd",          { NULL }, 1570,  "udp" },
-  { "rdb-dbs-disp",    { NULL }, 1571,  "tcp" },
-  { "rdb-dbs-disp",    { NULL }, 1571,  "udp" },
-  { "chip-lm",         { NULL }, 1572,  "tcp" },
-  { "chip-lm",         { NULL }, 1572,  "udp" },
-  { "itscomm-ns",      { NULL }, 1573,  "tcp" },
-  { "itscomm-ns",      { NULL }, 1573,  "udp" },
-  { "mvel-lm",         { NULL }, 1574,  "tcp" },
-  { "mvel-lm",         { NULL }, 1574,  "udp" },
-  { "oraclenames",     { NULL }, 1575,  "tcp" },
-  { "oraclenames",     { NULL }, 1575,  "udp" },
-  { "moldflow-lm",     { NULL }, 1576,  "tcp" },
-  { "moldflow-lm",     { NULL }, 1576,  "udp" },
-  { "hypercube-lm",    { NULL }, 1577,  "tcp" },
-  { "hypercube-lm",    { NULL }, 1577,  "udp" },
-  { "jacobus-lm",      { NULL }, 1578,  "tcp" },
-  { "jacobus-lm",      { NULL }, 1578,  "udp" },
-  { "ioc-sea-lm",      { NULL }, 1579,  "tcp" },
-  { "ioc-sea-lm",      { NULL }, 1579,  "udp" },
-  { "tn-tl-r1",        { NULL }, 1580,  "tcp" },
-  { "tn-tl-r2",        { NULL }, 1580,  "udp" },
-  { "mil-2045-47001",  { NULL }, 1581,  "tcp" },
-  { "mil-2045-47001",  { NULL }, 1581,  "udp" },
-  { "msims",           { NULL }, 1582,  "tcp" },
-  { "msims",           { NULL }, 1582,  "udp" },
-  { "simbaexpress",    { NULL }, 1583,  "tcp" },
-  { "simbaexpress",    { NULL }, 1583,  "udp" },
-  { "tn-tl-fd2",       { NULL }, 1584,  "tcp" },
-  { "tn-tl-fd2",       { NULL }, 1584,  "udp" },
-  { "intv",            { NULL }, 1585,  "tcp" },
-  { "intv",            { NULL }, 1585,  "udp" },
-  { "ibm-abtact",      { NULL }, 1586,  "tcp" },
-  { "ibm-abtact",      { NULL }, 1586,  "udp" },
-  { "pra_elmd",        { NULL }, 1587,  "tcp" },
-  { "pra_elmd",        { NULL }, 1587,  "udp" },
-  { "triquest-lm",     { NULL }, 1588,  "tcp" },
-  { "triquest-lm",     { NULL }, 1588,  "udp" },
-  { "vqp",             { NULL }, 1589,  "tcp" },
-  { "vqp",             { NULL }, 1589,  "udp" },
-  { "gemini-lm",       { NULL }, 1590,  "tcp" },
-  { "gemini-lm",       { NULL }, 1590,  "udp" },
-  { "ncpm-pm",         { NULL }, 1591,  "tcp" },
-  { "ncpm-pm",         { NULL }, 1591,  "udp" },
-  { "commonspace",     { NULL }, 1592,  "tcp" },
-  { "commonspace",     { NULL }, 1592,  "udp" },
-  { "mainsoft-lm",     { NULL }, 1593,  "tcp" },
-  { "mainsoft-lm",     { NULL }, 1593,  "udp" },
-  { "sixtrak",         { NULL }, 1594,  "tcp" },
-  { "sixtrak",         { NULL }, 1594,  "udp" },
-  { "radio",           { NULL }, 1595,  "tcp" },
-  { "radio",           { NULL }, 1595,  "udp" },
-  { "radio-sm",        { NULL }, 1596,  "tcp" },
-  { "radio-bc",        { NULL }, 1596,  "udp" },
-  { "orbplus-iiop",    { NULL }, 1597,  "tcp" },
-  { "orbplus-iiop",    { NULL }, 1597,  "udp" },
-  { "picknfs",         { NULL }, 1598,  "tcp" },
-  { "picknfs",         { NULL }, 1598,  "udp" },
-  { "simbaservices",   { NULL }, 1599,  "tcp" },
-  { "simbaservices",   { NULL }, 1599,  "udp" },
-  { "issd",            { NULL }, 1600,  "tcp" },
-  { "issd",            { NULL }, 1600,  "udp" },
-  { "aas",             { NULL }, 1601,  "tcp" },
-  { "aas",             { NULL }, 1601,  "udp" },
-  { "inspect",         { NULL }, 1602,  "tcp" },
-  { "inspect",         { NULL }, 1602,  "udp" },
-  { "picodbc",         { NULL }, 1603,  "tcp" },
-  { "picodbc",         { NULL }, 1603,  "udp" },
-  { "icabrowser",      { NULL }, 1604,  "tcp" },
-  { "icabrowser",      { NULL }, 1604,  "udp" },
-  { "slp",             { NULL }, 1605,  "tcp" },
-  { "slp",             { NULL }, 1605,  "udp" },
-  { "slm-api",         { NULL }, 1606,  "tcp" },
-  { "slm-api",         { NULL }, 1606,  "udp" },
-  { "stt",             { NULL }, 1607,  "tcp" },
-  { "stt",             { NULL }, 1607,  "udp" },
-  { "smart-lm",        { NULL }, 1608,  "tcp" },
-  { "smart-lm",        { NULL }, 1608,  "udp" },
-  { "isysg-lm",        { NULL }, 1609,  "tcp" },
-  { "isysg-lm",        { NULL }, 1609,  "udp" },
-  { "taurus-wh",       { NULL }, 1610,  "tcp" },
-  { "taurus-wh",       { NULL }, 1610,  "udp" },
-  { "ill",             { NULL }, 1611,  "tcp" },
-  { "ill",             { NULL }, 1611,  "udp" },
-  { "netbill-trans",   { NULL }, 1612,  "tcp" },
-  { "netbill-trans",   { NULL }, 1612,  "udp" },
-  { "netbill-keyrep",  { NULL }, 1613,  "tcp" },
-  { "netbill-keyrep",  { NULL }, 1613,  "udp" },
-  { "netbill-cred",    { NULL }, 1614,  "tcp" },
-  { "netbill-cred",    { NULL }, 1614,  "udp" },
-  { "netbill-auth",    { NULL }, 1615,  "tcp" },
-  { "netbill-auth",    { NULL }, 1615,  "udp" },
-  { "netbill-prod",    { NULL }, 1616,  "tcp" },
-  { "netbill-prod",    { NULL }, 1616,  "udp" },
-  { "nimrod-agent",    { NULL }, 1617,  "tcp" },
-  { "nimrod-agent",    { NULL }, 1617,  "udp" },
-  { "skytelnet",       { NULL }, 1618,  "tcp" },
-  { "skytelnet",       { NULL }, 1618,  "udp" },
-  { "xs-openstorage",  { NULL }, 1619,  "tcp" },
-  { "xs-openstorage",  { NULL }, 1619,  "udp" },
-  { "faxportwinport",  { NULL }, 1620,  "tcp" },
-  { "faxportwinport",  { NULL }, 1620,  "udp" },
-  { "softdataphone",   { NULL }, 1621,  "tcp" },
-  { "softdataphone",   { NULL }, 1621,  "udp" },
-  { "ontime",          { NULL }, 1622,  "tcp" },
-  { "ontime",          { NULL }, 1622,  "udp" },
-  { "jaleosnd",        { NULL }, 1623,  "tcp" },
-  { "jaleosnd",        { NULL }, 1623,  "udp" },
-  { "udp-sr-port",     { NULL }, 1624,  "tcp" },
-  { "udp-sr-port",     { NULL }, 1624,  "udp" },
-  { "svs-omagent",     { NULL }, 1625,  "tcp" },
-  { "svs-omagent",     { NULL }, 1625,  "udp" },
-  { "shockwave",       { NULL }, 1626,  "tcp" },
-  { "shockwave",       { NULL }, 1626,  "udp" },
-  { "t128-gateway",    { NULL }, 1627,  "tcp" },
-  { "t128-gateway",    { NULL }, 1627,  "udp" },
-  { "lontalk-norm",    { NULL }, 1628,  "tcp" },
-  { "lontalk-norm",    { NULL }, 1628,  "udp" },
-  { "lontalk-urgnt",   { NULL }, 1629,  "tcp" },
-  { "lontalk-urgnt",   { NULL }, 1629,  "udp" },
-  { "oraclenet8cman",  { NULL }, 1630,  "tcp" },
-  { "oraclenet8cman",  { NULL }, 1630,  "udp" },
-  { "visitview",       { NULL }, 1631,  "tcp" },
-  { "visitview",       { NULL }, 1631,  "udp" },
-  { "pammratc",        { NULL }, 1632,  "tcp" },
-  { "pammratc",        { NULL }, 1632,  "udp" },
-  { "pammrpc",         { NULL }, 1633,  "tcp" },
-  { "pammrpc",         { NULL }, 1633,  "udp" },
-  { "loaprobe",        { NULL }, 1634,  "tcp" },
-  { "loaprobe",        { NULL }, 1634,  "udp" },
-  { "edb-server1",     { NULL }, 1635,  "tcp" },
-  { "edb-server1",     { NULL }, 1635,  "udp" },
-  { "isdc",            { NULL }, 1636,  "tcp" },
-  { "isdc",            { NULL }, 1636,  "udp" },
-  { "islc",            { NULL }, 1637,  "tcp" },
-  { "islc",            { NULL }, 1637,  "udp" },
-  { "ismc",            { NULL }, 1638,  "tcp" },
-  { "ismc",            { NULL }, 1638,  "udp" },
-  { "cert-initiator",  { NULL }, 1639,  "tcp" },
-  { "cert-initiator",  { NULL }, 1639,  "udp" },
-  { "cert-responder",  { NULL }, 1640,  "tcp" },
-  { "cert-responder",  { NULL }, 1640,  "udp" },
-  { "invision",        { NULL }, 1641,  "tcp" },
-  { "invision",        { NULL }, 1641,  "udp" },
-  { "isis-am",         { NULL }, 1642,  "tcp" },
-  { "isis-am",         { NULL }, 1642,  "udp" },
-  { "isis-ambc",       { NULL }, 1643,  "tcp" },
-  { "isis-ambc",       { NULL }, 1643,  "udp" },
-  { "saiseh",          { NULL }, 1644,  "tcp" },
-  { "sightline",       { NULL }, 1645,  "tcp" },
-  { "sightline",       { NULL }, 1645,  "udp" },
-  { "sa-msg-port",     { NULL }, 1646,  "tcp" },
-  { "sa-msg-port",     { NULL }, 1646,  "udp" },
-  { "rsap",            { NULL }, 1647,  "tcp" },
-  { "rsap",            { NULL }, 1647,  "udp" },
-  { "concurrent-lm",   { NULL }, 1648,  "tcp" },
-  { "concurrent-lm",   { NULL }, 1648,  "udp" },
-  { "kermit",          { NULL }, 1649,  "tcp" },
-  { "kermit",          { NULL }, 1649,  "udp" },
-  { "nkd",             { NULL }, 1650,  "tcp" },
-  { "nkd",             { NULL }, 1650,  "udp" },
-  { "shiva_confsrvr",  { NULL }, 1651,  "tcp" },
-  { "shiva_confsrvr",  { NULL }, 1651,  "udp" },
-  { "xnmp",            { NULL }, 1652,  "tcp" },
-  { "xnmp",            { NULL }, 1652,  "udp" },
-  { "alphatech-lm",    { NULL }, 1653,  "tcp" },
-  { "alphatech-lm",    { NULL }, 1653,  "udp" },
-  { "stargatealerts",  { NULL }, 1654,  "tcp" },
-  { "stargatealerts",  { NULL }, 1654,  "udp" },
-  { "dec-mbadmin",     { NULL }, 1655,  "tcp" },
-  { "dec-mbadmin",     { NULL }, 1655,  "udp" },
-  { "dec-mbadmin-h",   { NULL }, 1656,  "tcp" },
-  { "dec-mbadmin-h",   { NULL }, 1656,  "udp" },
-  { "fujitsu-mmpdc",   { NULL }, 1657,  "tcp" },
-  { "fujitsu-mmpdc",   { NULL }, 1657,  "udp" },
-  { "sixnetudr",       { NULL }, 1658,  "tcp" },
-  { "sixnetudr",       { NULL }, 1658,  "udp" },
-  { "sg-lm",           { NULL }, 1659,  "tcp" },
-  { "sg-lm",           { NULL }, 1659,  "udp" },
-  { "skip-mc-gikreq",  { NULL }, 1660,  "tcp" },
-  { "skip-mc-gikreq",  { NULL }, 1660,  "udp" },
-  { "netview-aix-1",   { NULL }, 1661,  "tcp" },
-  { "netview-aix-1",   { NULL }, 1661,  "udp" },
-  { "netview-aix-2",   { NULL }, 1662,  "tcp" },
-  { "netview-aix-2",   { NULL }, 1662,  "udp" },
-  { "netview-aix-3",   { NULL }, 1663,  "tcp" },
-  { "netview-aix-3",   { NULL }, 1663,  "udp" },
-  { "netview-aix-4",   { NULL }, 1664,  "tcp" },
-  { "netview-aix-4",   { NULL }, 1664,  "udp" },
-  { "netview-aix-5",   { NULL }, 1665,  "tcp" },
-  { "netview-aix-5",   { NULL }, 1665,  "udp" },
-  { "netview-aix-6",   { NULL }, 1666,  "tcp" },
-  { "netview-aix-6",   { NULL }, 1666,  "udp" },
-  { "netview-aix-7",   { NULL }, 1667,  "tcp" },
-  { "netview-aix-7",   { NULL }, 1667,  "udp" },
-  { "netview-aix-8",   { NULL }, 1668,  "tcp" },
-  { "netview-aix-8",   { NULL }, 1668,  "udp" },
-  { "netview-aix-9",   { NULL }, 1669,  "tcp" },
-  { "netview-aix-9",   { NULL }, 1669,  "udp" },
-  { "netview-aix-10",  { NULL }, 1670,  "tcp" },
-  { "netview-aix-10",  { NULL }, 1670,  "udp" },
-  { "netview-aix-11",  { NULL }, 1671,  "tcp" },
-  { "netview-aix-11",  { NULL }, 1671,  "udp" },
-  { "netview-aix-12",  { NULL }, 1672,  "tcp" },
-  { "netview-aix-12",  { NULL }, 1672,  "udp" },
-  { "proshare-mc-1",   { NULL }, 1673,  "tcp" },
-  { "proshare-mc-1",   { NULL }, 1673,  "udp" },
-  { "proshare-mc-2",   { NULL }, 1674,  "tcp" },
-  { "proshare-mc-2",   { NULL }, 1674,  "udp" },
-  { "pdp",             { NULL }, 1675,  "tcp" },
-  { "pdp",             { NULL }, 1675,  "udp" },
-  { "netcomm1",        { NULL }, 1676,  "tcp" },
-  { "netcomm2",        { NULL }, 1676,  "udp" },
-  { "groupwise",       { NULL }, 1677,  "tcp" },
-  { "groupwise",       { NULL }, 1677,  "udp" },
-  { "prolink",         { NULL }, 1678,  "tcp" },
-  { "prolink",         { NULL }, 1678,  "udp" },
-  { "darcorp-lm",      { NULL }, 1679,  "tcp" },
-  { "darcorp-lm",      { NULL }, 1679,  "udp" },
-  { "microcom-sbp",    { NULL }, 1680,  "tcp" },
-  { "microcom-sbp",    { NULL }, 1680,  "udp" },
-  { "sd-elmd",         { NULL }, 1681,  "tcp" },
-  { "sd-elmd",         { NULL }, 1681,  "udp" },
-  { "lanyon-lantern",  { NULL }, 1682,  "tcp" },
-  { "lanyon-lantern",  { NULL }, 1682,  "udp" },
-  { "ncpm-hip",        { NULL }, 1683,  "tcp" },
-  { "ncpm-hip",        { NULL }, 1683,  "udp" },
-  { "snaresecure",     { NULL }, 1684,  "tcp" },
-  { "snaresecure",     { NULL }, 1684,  "udp" },
-  { "n2nremote",       { NULL }, 1685,  "tcp" },
-  { "n2nremote",       { NULL }, 1685,  "udp" },
-  { "cvmon",           { NULL }, 1686,  "tcp" },
-  { "cvmon",           { NULL }, 1686,  "udp" },
-  { "nsjtp-ctrl",      { NULL }, 1687,  "tcp" },
-  { "nsjtp-ctrl",      { NULL }, 1687,  "udp" },
-  { "nsjtp-data",      { NULL }, 1688,  "tcp" },
-  { "nsjtp-data",      { NULL }, 1688,  "udp" },
-  { "firefox",         { NULL }, 1689,  "tcp" },
-  { "firefox",         { NULL }, 1689,  "udp" },
-  { "ng-umds",         { NULL }, 1690,  "tcp" },
-  { "ng-umds",         { NULL }, 1690,  "udp" },
-  { "empire-empuma",   { NULL }, 1691,  "tcp" },
-  { "empire-empuma",   { NULL }, 1691,  "udp" },
-  { "sstsys-lm",       { NULL }, 1692,  "tcp" },
-  { "sstsys-lm",       { NULL }, 1692,  "udp" },
-  { "rrirtr",          { NULL }, 1693,  "tcp" },
-  { "rrirtr",          { NULL }, 1693,  "udp" },
-  { "rrimwm",          { NULL }, 1694,  "tcp" },
-  { "rrimwm",          { NULL }, 1694,  "udp" },
-  { "rrilwm",          { NULL }, 1695,  "tcp" },
-  { "rrilwm",          { NULL }, 1695,  "udp" },
-  { "rrifmm",          { NULL }, 1696,  "tcp" },
-  { "rrifmm",          { NULL }, 1696,  "udp" },
-  { "rrisat",          { NULL }, 1697,  "tcp" },
-  { "rrisat",          { NULL }, 1697,  "udp" },
-  { "rsvp-encap-1",    { NULL }, 1698,  "tcp" },
-  { "rsvp-encap-1",    { NULL }, 1698,  "udp" },
-  { "rsvp-encap-2",    { NULL }, 1699,  "tcp" },
-  { "rsvp-encap-2",    { NULL }, 1699,  "udp" },
-  { "mps-raft",        { NULL }, 1700,  "tcp" },
-  { "mps-raft",        { NULL }, 1700,  "udp" },
-  { "l2f",             { NULL }, 1701,  "tcp" },
-  { "l2f",             { NULL }, 1701,  "udp" },
-  { "l2tp",            { NULL }, 1701,  "tcp" },
-  { "l2tp",            { NULL }, 1701,  "udp" },
-  { "deskshare",       { NULL }, 1702,  "tcp" },
-  { "deskshare",       { NULL }, 1702,  "udp" },
-  { "hb-engine",       { NULL }, 1703,  "tcp" },
-  { "hb-engine",       { NULL }, 1703,  "udp" },
-  { "bcs-broker",      { NULL }, 1704,  "tcp" },
-  { "bcs-broker",      { NULL }, 1704,  "udp" },
-  { "slingshot",       { NULL }, 1705,  "tcp" },
-  { "slingshot",       { NULL }, 1705,  "udp" },
-  { "jetform",         { NULL }, 1706,  "tcp" },
-  { "jetform",         { NULL }, 1706,  "udp" },
-  { "vdmplay",         { NULL }, 1707,  "tcp" },
-  { "vdmplay",         { NULL }, 1707,  "udp" },
-  { "gat-lmd",         { NULL }, 1708,  "tcp" },
-  { "gat-lmd",         { NULL }, 1708,  "udp" },
-  { "centra",          { NULL }, 1709,  "tcp" },
-  { "centra",          { NULL }, 1709,  "udp" },
-  { "impera",          { NULL }, 1710,  "tcp" },
-  { "impera",          { NULL }, 1710,  "udp" },
-  { "pptconference",   { NULL }, 1711,  "tcp" },
-  { "pptconference",   { NULL }, 1711,  "udp" },
-  { "registrar",       { NULL }, 1712,  "tcp" },
-  { "registrar",       { NULL }, 1712,  "udp" },
-  { "conferencetalk",  { NULL }, 1713,  "tcp" },
-  { "conferencetalk",  { NULL }, 1713,  "udp" },
-  { "sesi-lm",         { NULL }, 1714,  "tcp" },
-  { "sesi-lm",         { NULL }, 1714,  "udp" },
-  { "houdini-lm",      { NULL }, 1715,  "tcp" },
-  { "houdini-lm",      { NULL }, 1715,  "udp" },
-  { "xmsg",            { NULL }, 1716,  "tcp" },
-  { "xmsg",            { NULL }, 1716,  "udp" },
-  { "fj-hdnet",        { NULL }, 1717,  "tcp" },
-  { "fj-hdnet",        { NULL }, 1717,  "udp" },
-  { "h323gatedisc",    { NULL }, 1718,  "tcp" },
-  { "h323gatedisc",    { NULL }, 1718,  "udp" },
-  { "h323gatestat",    { NULL }, 1719,  "tcp" },
-  { "h323gatestat",    { NULL }, 1719,  "udp" },
-  { "h323hostcall",    { NULL }, 1720,  "tcp" },
-  { "h323hostcall",    { NULL }, 1720,  "udp" },
-  { "caicci",          { NULL }, 1721,  "tcp" },
-  { "caicci",          { NULL }, 1721,  "udp" },
-  { "hks-lm",          { NULL }, 1722,  "tcp" },
-  { "hks-lm",          { NULL }, 1722,  "udp" },
-  { "pptp",            { NULL }, 1723,  "tcp" },
-  { "pptp",            { NULL }, 1723,  "udp" },
-  { "csbphonemaster",  { NULL }, 1724,  "tcp" },
-  { "csbphonemaster",  { NULL }, 1724,  "udp" },
-  { "iden-ralp",       { NULL }, 1725,  "tcp" },
-  { "iden-ralp",       { NULL }, 1725,  "udp" },
-  { "iberiagames",     { NULL }, 1726,  "tcp" },
-  { "iberiagames",     { NULL }, 1726,  "udp" },
-  { "winddx",          { NULL }, 1727,  "tcp" },
-  { "winddx",          { NULL }, 1727,  "udp" },
-  { "telindus",        { NULL }, 1728,  "tcp" },
-  { "telindus",        { NULL }, 1728,  "udp" },
-  { "citynl",          { NULL }, 1729,  "tcp" },
-  { "citynl",          { NULL }, 1729,  "udp" },
-  { "roketz",          { NULL }, 1730,  "tcp" },
-  { "roketz",          { NULL }, 1730,  "udp" },
-  { "msiccp",          { NULL }, 1731,  "tcp" },
-  { "msiccp",          { NULL }, 1731,  "udp" },
-  { "proxim",          { NULL }, 1732,  "tcp" },
-  { "proxim",          { NULL }, 1732,  "udp" },
-  { "siipat",          { NULL }, 1733,  "tcp" },
-  { "siipat",          { NULL }, 1733,  "udp" },
-  { "cambertx-lm",     { NULL }, 1734,  "tcp" },
-  { "cambertx-lm",     { NULL }, 1734,  "udp" },
-  { "privatechat",     { NULL }, 1735,  "tcp" },
-  { "privatechat",     { NULL }, 1735,  "udp" },
-  { "street-stream",   { NULL }, 1736,  "tcp" },
-  { "street-stream",   { NULL }, 1736,  "udp" },
-  { "ultimad",         { NULL }, 1737,  "tcp" },
-  { "ultimad",         { NULL }, 1737,  "udp" },
-  { "gamegen1",        { NULL }, 1738,  "tcp" },
-  { "gamegen1",        { NULL }, 1738,  "udp" },
-  { "webaccess",       { NULL }, 1739,  "tcp" },
-  { "webaccess",       { NULL }, 1739,  "udp" },
-  { "encore",          { NULL }, 1740,  "tcp" },
-  { "encore",          { NULL }, 1740,  "udp" },
-  { "cisco-net-mgmt",  { NULL }, 1741,  "tcp" },
-  { "cisco-net-mgmt",  { NULL }, 1741,  "udp" },
-  { "3Com-nsd",        { NULL }, 1742,  "tcp" },
-  { "3Com-nsd",        { NULL }, 1742,  "udp" },
-  { "cinegrfx-lm",     { NULL }, 1743,  "tcp" },
-  { "cinegrfx-lm",     { NULL }, 1743,  "udp" },
-  { "ncpm-ft",         { NULL }, 1744,  "tcp" },
-  { "ncpm-ft",         { NULL }, 1744,  "udp" },
-  { "remote-winsock",  { NULL }, 1745,  "tcp" },
-  { "remote-winsock",  { NULL }, 1745,  "udp" },
-  { "ftrapid-1",       { NULL }, 1746,  "tcp" },
-  { "ftrapid-1",       { NULL }, 1746,  "udp" },
-  { "ftrapid-2",       { NULL }, 1747,  "tcp" },
-  { "ftrapid-2",       { NULL }, 1747,  "udp" },
-  { "oracle-em1",      { NULL }, 1748,  "tcp" },
-  { "oracle-em1",      { NULL }, 1748,  "udp" },
-  { "aspen-services",  { NULL }, 1749,  "tcp" },
-  { "aspen-services",  { NULL }, 1749,  "udp" },
-  { "sslp",            { NULL }, 1750,  "tcp" },
-  { "sslp",            { NULL }, 1750,  "udp" },
-  { "swiftnet",        { NULL }, 1751,  "tcp" },
-  { "swiftnet",        { NULL }, 1751,  "udp" },
-  { "lofr-lm",         { NULL }, 1752,  "tcp" },
-  { "lofr-lm",         { NULL }, 1752,  "udp" },
-  { "oracle-em2",      { NULL }, 1754,  "tcp" },
-  { "oracle-em2",      { NULL }, 1754,  "udp" },
-  { "ms-streaming",    { NULL }, 1755,  "tcp" },
-  { "ms-streaming",    { NULL }, 1755,  "udp" },
-  { "capfast-lmd",     { NULL }, 1756,  "tcp" },
-  { "capfast-lmd",     { NULL }, 1756,  "udp" },
-  { "cnhrp",           { NULL }, 1757,  "tcp" },
-  { "cnhrp",           { NULL }, 1757,  "udp" },
-  { "tftp-mcast",      { NULL }, 1758,  "tcp" },
-  { "tftp-mcast",      { NULL }, 1758,  "udp" },
-  { "spss-lm",         { NULL }, 1759,  "tcp" },
-  { "spss-lm",         { NULL }, 1759,  "udp" },
-  { "www-ldap-gw",     { NULL }, 1760,  "tcp" },
-  { "www-ldap-gw",     { NULL }, 1760,  "udp" },
-  { "cft-0",           { NULL }, 1761,  "tcp" },
-  { "cft-0",           { NULL }, 1761,  "udp" },
-  { "cft-1",           { NULL }, 1762,  "tcp" },
-  { "cft-1",           { NULL }, 1762,  "udp" },
-  { "cft-2",           { NULL }, 1763,  "tcp" },
-  { "cft-2",           { NULL }, 1763,  "udp" },
-  { "cft-3",           { NULL }, 1764,  "tcp" },
-  { "cft-3",           { NULL }, 1764,  "udp" },
-  { "cft-4",           { NULL }, 1765,  "tcp" },
-  { "cft-4",           { NULL }, 1765,  "udp" },
-  { "cft-5",           { NULL }, 1766,  "tcp" },
-  { "cft-5",           { NULL }, 1766,  "udp" },
-  { "cft-6",           { NULL }, 1767,  "tcp" },
-  { "cft-6",           { NULL }, 1767,  "udp" },
-  { "cft-7",           { NULL }, 1768,  "tcp" },
-  { "cft-7",           { NULL }, 1768,  "udp" },
-  { "bmc-net-adm",     { NULL }, 1769,  "tcp" },
-  { "bmc-net-adm",     { NULL }, 1769,  "udp" },
-  { "bmc-net-svc",     { NULL }, 1770,  "tcp" },
-  { "bmc-net-svc",     { NULL }, 1770,  "udp" },
-  { "vaultbase",       { NULL }, 1771,  "tcp" },
-  { "vaultbase",       { NULL }, 1771,  "udp" },
-  { "essweb-gw",       { NULL }, 1772,  "tcp" },
-  { "essweb-gw",       { NULL }, 1772,  "udp" },
-  { "kmscontrol",      { NULL }, 1773,  "tcp" },
-  { "kmscontrol",      { NULL }, 1773,  "udp" },
-  { "global-dtserv",   { NULL }, 1774,  "tcp" },
-  { "global-dtserv",   { NULL }, 1774,  "udp" },
-  { "femis",           { NULL }, 1776,  "tcp" },
-  { "femis",           { NULL }, 1776,  "udp" },
-  { "powerguardian",   { NULL }, 1777,  "tcp" },
-  { "powerguardian",   { NULL }, 1777,  "udp" },
-  { "prodigy-intrnet", { NULL }, 1778,  "tcp" },
-  { "prodigy-intrnet", { NULL }, 1778,  "udp" },
-  { "pharmasoft",      { NULL }, 1779,  "tcp" },
-  { "pharmasoft",      { NULL }, 1779,  "udp" },
-  { "dpkeyserv",       { NULL }, 1780,  "tcp" },
-  { "dpkeyserv",       { NULL }, 1780,  "udp" },
-  { "answersoft-lm",   { NULL }, 1781,  "tcp" },
-  { "answersoft-lm",   { NULL }, 1781,  "udp" },
-  { "hp-hcip",         { NULL }, 1782,  "tcp" },
-  { "hp-hcip",         { NULL }, 1782,  "udp" },
-  { "finle-lm",        { NULL }, 1784,  "tcp" },
-  { "finle-lm",        { NULL }, 1784,  "udp" },
-  { "windlm",          { NULL }, 1785,  "tcp" },
-  { "windlm",          { NULL }, 1785,  "udp" },
-  { "funk-logger",     { NULL }, 1786,  "tcp" },
-  { "funk-logger",     { NULL }, 1786,  "udp" },
-  { "funk-license",    { NULL }, 1787,  "tcp" },
-  { "funk-license",    { NULL }, 1787,  "udp" },
-  { "psmond",          { NULL }, 1788,  "tcp" },
-  { "psmond",          { NULL }, 1788,  "udp" },
-  { "hello",           { NULL }, 1789,  "tcp" },
-  { "hello",           { NULL }, 1789,  "udp" },
-  { "nmsp",            { NULL }, 1790,  "tcp" },
-  { "nmsp",            { NULL }, 1790,  "udp" },
-  { "ea1",             { NULL }, 1791,  "tcp" },
-  { "ea1",             { NULL }, 1791,  "udp" },
-  { "ibm-dt-2",        { NULL }, 1792,  "tcp" },
-  { "ibm-dt-2",        { NULL }, 1792,  "udp" },
-  { "rsc-robot",       { NULL }, 1793,  "tcp" },
-  { "rsc-robot",       { NULL }, 1793,  "udp" },
-  { "cera-bcm",        { NULL }, 1794,  "tcp" },
-  { "cera-bcm",        { NULL }, 1794,  "udp" },
-  { "dpi-proxy",       { NULL }, 1795,  "tcp" },
-  { "dpi-proxy",       { NULL }, 1795,  "udp" },
-  { "vocaltec-admin",  { NULL }, 1796,  "tcp" },
-  { "vocaltec-admin",  { NULL }, 1796,  "udp" },
-  { "uma",             { NULL }, 1797,  "tcp" },
-  { "uma",             { NULL }, 1797,  "udp" },
-  { "etp",             { NULL }, 1798,  "tcp" },
-  { "etp",             { NULL }, 1798,  "udp" },
-  { "netrisk",         { NULL }, 1799,  "tcp" },
-  { "netrisk",         { NULL }, 1799,  "udp" },
-  { "ansys-lm",        { NULL }, 1800,  "tcp" },
-  { "ansys-lm",        { NULL }, 1800,  "udp" },
-  { "msmq",            { NULL }, 1801,  "tcp" },
-  { "msmq",            { NULL }, 1801,  "udp" },
-  { "concomp1",        { NULL }, 1802,  "tcp" },
-  { "concomp1",        { NULL }, 1802,  "udp" },
-  { "hp-hcip-gwy",     { NULL }, 1803,  "tcp" },
-  { "hp-hcip-gwy",     { NULL }, 1803,  "udp" },
-  { "enl",             { NULL }, 1804,  "tcp" },
-  { "enl",             { NULL }, 1804,  "udp" },
-  { "enl-name",        { NULL }, 1805,  "tcp" },
-  { "enl-name",        { NULL }, 1805,  "udp" },
-  { "musiconline",     { NULL }, 1806,  "tcp" },
-  { "musiconline",     { NULL }, 1806,  "udp" },
-  { "fhsp",            { NULL }, 1807,  "tcp" },
-  { "fhsp",            { NULL }, 1807,  "udp" },
-  { "oracle-vp2",      { NULL }, 1808,  "tcp" },
-  { "oracle-vp2",      { NULL }, 1808,  "udp" },
-  { "oracle-vp1",      { NULL }, 1809,  "tcp" },
-  { "oracle-vp1",      { NULL }, 1809,  "udp" },
-  { "jerand-lm",       { NULL }, 1810,  "tcp" },
-  { "jerand-lm",       { NULL }, 1810,  "udp" },
-  { "scientia-sdb",    { NULL }, 1811,  "tcp" },
-  { "scientia-sdb",    { NULL }, 1811,  "udp" },
-  { "radius",          { NULL }, 1812,  "tcp" },
-  { "radius",          { NULL }, 1812,  "udp" },
-  { "radius-acct",     { NULL }, 1813,  "tcp" },
-  { "radius-acct",     { NULL }, 1813,  "udp" },
-  { "tdp-suite",       { NULL }, 1814,  "tcp" },
-  { "tdp-suite",       { NULL }, 1814,  "udp" },
-  { "mmpft",           { NULL }, 1815,  "tcp" },
-  { "mmpft",           { NULL }, 1815,  "udp" },
-  { "harp",            { NULL }, 1816,  "tcp" },
-  { "harp",            { NULL }, 1816,  "udp" },
-  { "rkb-oscs",        { NULL }, 1817,  "tcp" },
-  { "rkb-oscs",        { NULL }, 1817,  "udp" },
-  { "etftp",           { NULL }, 1818,  "tcp" },
-  { "etftp",           { NULL }, 1818,  "udp" },
-  { "plato-lm",        { NULL }, 1819,  "tcp" },
-  { "plato-lm",        { NULL }, 1819,  "udp" },
-  { "mcagent",         { NULL }, 1820,  "tcp" },
-  { "mcagent",         { NULL }, 1820,  "udp" },
-  { "donnyworld",      { NULL }, 1821,  "tcp" },
-  { "donnyworld",      { NULL }, 1821,  "udp" },
-  { "es-elmd",         { NULL }, 1822,  "tcp" },
-  { "es-elmd",         { NULL }, 1822,  "udp" },
-  { "unisys-lm",       { NULL }, 1823,  "tcp" },
-  { "unisys-lm",       { NULL }, 1823,  "udp" },
-  { "metrics-pas",     { NULL }, 1824,  "tcp" },
-  { "metrics-pas",     { NULL }, 1824,  "udp" },
-  { "direcpc-video",   { NULL }, 1825,  "tcp" },
-  { "direcpc-video",   { NULL }, 1825,  "udp" },
-  { "ardt",            { NULL }, 1826,  "tcp" },
-  { "ardt",            { NULL }, 1826,  "udp" },
-  { "asi",             { NULL }, 1827,  "tcp" },
-  { "asi",             { NULL }, 1827,  "udp" },
-  { "itm-mcell-u",     { NULL }, 1828,  "tcp" },
-  { "itm-mcell-u",     { NULL }, 1828,  "udp" },
-  { "optika-emedia",   { NULL }, 1829,  "tcp" },
-  { "optika-emedia",   { NULL }, 1829,  "udp" },
-  { "net8-cman",       { NULL }, 1830,  "tcp" },
-  { "net8-cman",       { NULL }, 1830,  "udp" },
-  { "myrtle",          { NULL }, 1831,  "tcp" },
-  { "myrtle",          { NULL }, 1831,  "udp" },
-  { "tht-treasure",    { NULL }, 1832,  "tcp" },
-  { "tht-treasure",    { NULL }, 1832,  "udp" },
-  { "udpradio",        { NULL }, 1833,  "tcp" },
-  { "udpradio",        { NULL }, 1833,  "udp" },
-  { "ardusuni",        { NULL }, 1834,  "tcp" },
-  { "ardusuni",        { NULL }, 1834,  "udp" },
-  { "ardusmul",        { NULL }, 1835,  "tcp" },
-  { "ardusmul",        { NULL }, 1835,  "udp" },
-  { "ste-smsc",        { NULL }, 1836,  "tcp" },
-  { "ste-smsc",        { NULL }, 1836,  "udp" },
-  { "csoft1",          { NULL }, 1837,  "tcp" },
-  { "csoft1",          { NULL }, 1837,  "udp" },
-  { "talnet",          { NULL }, 1838,  "tcp" },
-  { "talnet",          { NULL }, 1838,  "udp" },
-  { "netopia-vo1",     { NULL }, 1839,  "tcp" },
-  { "netopia-vo1",     { NULL }, 1839,  "udp" },
-  { "netopia-vo2",     { NULL }, 1840,  "tcp" },
-  { "netopia-vo2",     { NULL }, 1840,  "udp" },
-  { "netopia-vo3",     { NULL }, 1841,  "tcp" },
-  { "netopia-vo3",     { NULL }, 1841,  "udp" },
-  { "netopia-vo4",     { NULL }, 1842,  "tcp" },
-  { "netopia-vo4",     { NULL }, 1842,  "udp" },
-  { "netopia-vo5",     { NULL }, 1843,  "tcp" },
-  { "netopia-vo5",     { NULL }, 1843,  "udp" },
-  { "direcpc-dll",     { NULL }, 1844,  "tcp" },
-  { "direcpc-dll",     { NULL }, 1844,  "udp" },
-  { "altalink",        { NULL }, 1845,  "tcp" },
-  { "altalink",        { NULL }, 1845,  "udp" },
-  { "tunstall-pnc",    { NULL }, 1846,  "tcp" },
-  { "tunstall-pnc",    { NULL }, 1846,  "udp" },
-  { "slp-notify",      { NULL }, 1847,  "tcp" },
-  { "slp-notify",      { NULL }, 1847,  "udp" },
-  { "fjdocdist",       { NULL }, 1848,  "tcp" },
-  { "fjdocdist",       { NULL }, 1848,  "udp" },
-  { "alpha-sms",       { NULL }, 1849,  "tcp" },
-  { "alpha-sms",       { NULL }, 1849,  "udp" },
-  { "gsi",             { NULL }, 1850,  "tcp" },
-  { "gsi",             { NULL }, 1850,  "udp" },
-  { "ctcd",            { NULL }, 1851,  "tcp" },
-  { "ctcd",            { NULL }, 1851,  "udp" },
-  { "virtual-time",    { NULL }, 1852,  "tcp" },
-  { "virtual-time",    { NULL }, 1852,  "udp" },
-  { "vids-avtp",       { NULL }, 1853,  "tcp" },
-  { "vids-avtp",       { NULL }, 1853,  "udp" },
-  { "buddy-draw",      { NULL }, 1854,  "tcp" },
-  { "buddy-draw",      { NULL }, 1854,  "udp" },
-  { "fiorano-rtrsvc",  { NULL }, 1855,  "tcp" },
-  { "fiorano-rtrsvc",  { NULL }, 1855,  "udp" },
-  { "fiorano-msgsvc",  { NULL }, 1856,  "tcp" },
-  { "fiorano-msgsvc",  { NULL }, 1856,  "udp" },
-  { "datacaptor",      { NULL }, 1857,  "tcp" },
-  { "datacaptor",      { NULL }, 1857,  "udp" },
-  { "privateark",      { NULL }, 1858,  "tcp" },
-  { "privateark",      { NULL }, 1858,  "udp" },
-  { "gammafetchsvr",   { NULL }, 1859,  "tcp" },
-  { "gammafetchsvr",   { NULL }, 1859,  "udp" },
-  { "sunscalar-svc",   { NULL }, 1860,  "tcp" },
-  { "sunscalar-svc",   { NULL }, 1860,  "udp" },
-  { "lecroy-vicp",     { NULL }, 1861,  "tcp" },
-  { "lecroy-vicp",     { NULL }, 1861,  "udp" },
-  { "mysql-cm-agent",  { NULL }, 1862,  "tcp" },
-  { "mysql-cm-agent",  { NULL }, 1862,  "udp" },
-  { "msnp",            { NULL }, 1863,  "tcp" },
-  { "msnp",            { NULL }, 1863,  "udp" },
-  { "paradym-31port",  { NULL }, 1864,  "tcp" },
-  { "paradym-31port",  { NULL }, 1864,  "udp" },
-  { "entp",            { NULL }, 1865,  "tcp" },
-  { "entp",            { NULL }, 1865,  "udp" },
-  { "swrmi",           { NULL }, 1866,  "tcp" },
-  { "swrmi",           { NULL }, 1866,  "udp" },
-  { "udrive",          { NULL }, 1867,  "tcp" },
-  { "udrive",          { NULL }, 1867,  "udp" },
-  { "viziblebrowser",  { NULL }, 1868,  "tcp" },
-  { "viziblebrowser",  { NULL }, 1868,  "udp" },
-  { "transact",        { NULL }, 1869,  "tcp" },
-  { "transact",        { NULL }, 1869,  "udp" },
-  { "sunscalar-dns",   { NULL }, 1870,  "tcp" },
-  { "sunscalar-dns",   { NULL }, 1870,  "udp" },
-  { "canocentral0",    { NULL }, 1871,  "tcp" },
-  { "canocentral0",    { NULL }, 1871,  "udp" },
-  { "canocentral1",    { NULL }, 1872,  "tcp" },
-  { "canocentral1",    { NULL }, 1872,  "udp" },
-  { "fjmpjps",         { NULL }, 1873,  "tcp" },
-  { "fjmpjps",         { NULL }, 1873,  "udp" },
-  { "fjswapsnp",       { NULL }, 1874,  "tcp" },
-  { "fjswapsnp",       { NULL }, 1874,  "udp" },
-  { "westell-stats",   { NULL }, 1875,  "tcp" },
-  { "westell-stats",   { NULL }, 1875,  "udp" },
-  { "ewcappsrv",       { NULL }, 1876,  "tcp" },
-  { "ewcappsrv",       { NULL }, 1876,  "udp" },
-  { "hp-webqosdb",     { NULL }, 1877,  "tcp" },
-  { "hp-webqosdb",     { NULL }, 1877,  "udp" },
-  { "drmsmc",          { NULL }, 1878,  "tcp" },
-  { "drmsmc",          { NULL }, 1878,  "udp" },
-  { "nettgain-nms",    { NULL }, 1879,  "tcp" },
-  { "nettgain-nms",    { NULL }, 1879,  "udp" },
-  { "vsat-control",    { NULL }, 1880,  "tcp" },
-  { "vsat-control",    { NULL }, 1880,  "udp" },
-  { "ibm-mqseries2",   { NULL }, 1881,  "tcp" },
-  { "ibm-mqseries2",   { NULL }, 1881,  "udp" },
-  { "ecsqdmn",         { NULL }, 1882,  "tcp" },
-  { "ecsqdmn",         { NULL }, 1882,  "udp" },
-  { "ibm-mqisdp",      { NULL }, 1883,  "tcp" },
-  { "ibm-mqisdp",      { NULL }, 1883,  "udp" },
-  { "idmaps",          { NULL }, 1884,  "tcp" },
-  { "idmaps",          { NULL }, 1884,  "udp" },
-  { "vrtstrapserver",  { NULL }, 1885,  "tcp" },
-  { "vrtstrapserver",  { NULL }, 1885,  "udp" },
-  { "leoip",           { NULL }, 1886,  "tcp" },
-  { "leoip",           { NULL }, 1886,  "udp" },
-  { "filex-lport",     { NULL }, 1887,  "tcp" },
-  { "filex-lport",     { NULL }, 1887,  "udp" },
-  { "ncconfig",        { NULL }, 1888,  "tcp" },
-  { "ncconfig",        { NULL }, 1888,  "udp" },
-  { "unify-adapter",   { NULL }, 1889,  "tcp" },
-  { "unify-adapter",   { NULL }, 1889,  "udp" },
-  { "wilkenlistener",  { NULL }, 1890,  "tcp" },
-  { "wilkenlistener",  { NULL }, 1890,  "udp" },
-  { "childkey-notif",  { NULL }, 1891,  "tcp" },
-  { "childkey-notif",  { NULL }, 1891,  "udp" },
-  { "childkey-ctrl",   { NULL }, 1892,  "tcp" },
-  { "childkey-ctrl",   { NULL }, 1892,  "udp" },
-  { "elad",            { NULL }, 1893,  "tcp" },
-  { "elad",            { NULL }, 1893,  "udp" },
-  { "o2server-port",   { NULL }, 1894,  "tcp" },
-  { "o2server-port",   { NULL }, 1894,  "udp" },
-  { "b-novative-ls",   { NULL }, 1896,  "tcp" },
-  { "b-novative-ls",   { NULL }, 1896,  "udp" },
-  { "metaagent",       { NULL }, 1897,  "tcp" },
-  { "metaagent",       { NULL }, 1897,  "udp" },
-  { "cymtec-port",     { NULL }, 1898,  "tcp" },
-  { "cymtec-port",     { NULL }, 1898,  "udp" },
-  { "mc2studios",      { NULL }, 1899,  "tcp" },
-  { "mc2studios",      { NULL }, 1899,  "udp" },
-  { "ssdp",            { NULL }, 1900,  "tcp" },
-  { "ssdp",            { NULL }, 1900,  "udp" },
-  { "fjicl-tep-a",     { NULL }, 1901,  "tcp" },
-  { "fjicl-tep-a",     { NULL }, 1901,  "udp" },
-  { "fjicl-tep-b",     { NULL }, 1902,  "tcp" },
-  { "fjicl-tep-b",     { NULL }, 1902,  "udp" },
-  { "linkname",        { NULL }, 1903,  "tcp" },
-  { "linkname",        { NULL }, 1903,  "udp" },
-  { "fjicl-tep-c",     { NULL }, 1904,  "tcp" },
-  { "fjicl-tep-c",     { NULL }, 1904,  "udp" },
-  { "sugp",            { NULL }, 1905,  "tcp" },
-  { "sugp",            { NULL }, 1905,  "udp" },
-  { "tpmd",            { NULL }, 1906,  "tcp" },
-  { "tpmd",            { NULL }, 1906,  "udp" },
-  { "intrastar",       { NULL }, 1907,  "tcp" },
-  { "intrastar",       { NULL }, 1907,  "udp" },
-  { "dawn",            { NULL }, 1908,  "tcp" },
-  { "dawn",            { NULL }, 1908,  "udp" },
-  { "global-wlink",    { NULL }, 1909,  "tcp" },
-  { "global-wlink",    { NULL }, 1909,  "udp" },
-  { "ultrabac",        { NULL }, 1910,  "tcp" },
-  { "ultrabac",        { NULL }, 1910,  "udp" },
-  { "mtp",             { NULL }, 1911,  "tcp" },
-  { "mtp",             { NULL }, 1911,  "udp" },
-  { "rhp-iibp",        { NULL }, 1912,  "tcp" },
-  { "rhp-iibp",        { NULL }, 1912,  "udp" },
-  { "armadp",          { NULL }, 1913,  "tcp" },
-  { "armadp",          { NULL }, 1913,  "udp" },
-  { "elm-momentum",    { NULL }, 1914,  "tcp" },
-  { "elm-momentum",    { NULL }, 1914,  "udp" },
-  { "facelink",        { NULL }, 1915,  "tcp" },
-  { "facelink",        { NULL }, 1915,  "udp" },
-  { "persona",         { NULL }, 1916,  "tcp" },
-  { "persona",         { NULL }, 1916,  "udp" },
-  { "noagent",         { NULL }, 1917,  "tcp" },
-  { "noagent",         { NULL }, 1917,  "udp" },
-  { "can-nds",         { NULL }, 1918,  "tcp" },
-  { "can-nds",         { NULL }, 1918,  "udp" },
-  { "can-dch",         { NULL }, 1919,  "tcp" },
-  { "can-dch",         { NULL }, 1919,  "udp" },
-  { "can-ferret",      { NULL }, 1920,  "tcp" },
-  { "can-ferret",      { NULL }, 1920,  "udp" },
-  { "noadmin",         { NULL }, 1921,  "tcp" },
-  { "noadmin",         { NULL }, 1921,  "udp" },
-  { "tapestry",        { NULL }, 1922,  "tcp" },
-  { "tapestry",        { NULL }, 1922,  "udp" },
-  { "spice",           { NULL }, 1923,  "tcp" },
-  { "spice",           { NULL }, 1923,  "udp" },
-  { "xiip",            { NULL }, 1924,  "tcp" },
-  { "xiip",            { NULL }, 1924,  "udp" },
-  { "discovery-port",  { NULL }, 1925,  "tcp" },
-  { "discovery-port",  { NULL }, 1925,  "udp" },
-  { "egs",             { NULL }, 1926,  "tcp" },
-  { "egs",             { NULL }, 1926,  "udp" },
-  { "videte-cipc",     { NULL }, 1927,  "tcp" },
-  { "videte-cipc",     { NULL }, 1927,  "udp" },
-  { "emsd-port",       { NULL }, 1928,  "tcp" },
-  { "emsd-port",       { NULL }, 1928,  "udp" },
-  { "bandwiz-system",  { NULL }, 1929,  "tcp" },
-  { "bandwiz-system",  { NULL }, 1929,  "udp" },
-  { "driveappserver",  { NULL }, 1930,  "tcp" },
-  { "driveappserver",  { NULL }, 1930,  "udp" },
-  { "amdsched",        { NULL }, 1931,  "tcp" },
-  { "amdsched",        { NULL }, 1931,  "udp" },
-  { "ctt-broker",      { NULL }, 1932,  "tcp" },
-  { "ctt-broker",      { NULL }, 1932,  "udp" },
-  { "xmapi",           { NULL }, 1933,  "tcp" },
-  { "xmapi",           { NULL }, 1933,  "udp" },
-  { "xaapi",           { NULL }, 1934,  "tcp" },
-  { "xaapi",           { NULL }, 1934,  "udp" },
-  { "macromedia-fcs",  { NULL }, 1935,  "tcp" },
-  { "macromedia-fcs",  { NULL }, 1935,  "udp" },
-  { "jetcmeserver",    { NULL }, 1936,  "tcp" },
-  { "jetcmeserver",    { NULL }, 1936,  "udp" },
-  { "jwserver",        { NULL }, 1937,  "tcp" },
-  { "jwserver",        { NULL }, 1937,  "udp" },
-  { "jwclient",        { NULL }, 1938,  "tcp" },
-  { "jwclient",        { NULL }, 1938,  "udp" },
-  { "jvserver",        { NULL }, 1939,  "tcp" },
-  { "jvserver",        { NULL }, 1939,  "udp" },
-  { "jvclient",        { NULL }, 1940,  "tcp" },
-  { "jvclient",        { NULL }, 1940,  "udp" },
-  { "dic-aida",        { NULL }, 1941,  "tcp" },
-  { "dic-aida",        { NULL }, 1941,  "udp" },
-  { "res",             { NULL }, 1942,  "tcp" },
-  { "res",             { NULL }, 1942,  "udp" },
-  { "beeyond-media",   { NULL }, 1943,  "tcp" },
-  { "beeyond-media",   { NULL }, 1943,  "udp" },
-  { "close-combat",    { NULL }, 1944,  "tcp" },
-  { "close-combat",    { NULL }, 1944,  "udp" },
-  { "dialogic-elmd",   { NULL }, 1945,  "tcp" },
-  { "dialogic-elmd",   { NULL }, 1945,  "udp" },
-  { "tekpls",          { NULL }, 1946,  "tcp" },
-  { "tekpls",          { NULL }, 1946,  "udp" },
-  { "sentinelsrm",     { NULL }, 1947,  "tcp" },
-  { "sentinelsrm",     { NULL }, 1947,  "udp" },
-  { "eye2eye",         { NULL }, 1948,  "tcp" },
-  { "eye2eye",         { NULL }, 1948,  "udp" },
-  { "ismaeasdaqlive",  { NULL }, 1949,  "tcp" },
-  { "ismaeasdaqlive",  { NULL }, 1949,  "udp" },
-  { "ismaeasdaqtest",  { NULL }, 1950,  "tcp" },
-  { "ismaeasdaqtest",  { NULL }, 1950,  "udp" },
-  { "bcs-lmserver",    { NULL }, 1951,  "tcp" },
-  { "bcs-lmserver",    { NULL }, 1951,  "udp" },
-  { "mpnjsc",          { NULL }, 1952,  "tcp" },
-  { "mpnjsc",          { NULL }, 1952,  "udp" },
-  { "rapidbase",       { NULL }, 1953,  "tcp" },
-  { "rapidbase",       { NULL }, 1953,  "udp" },
-  { "abr-api",         { NULL }, 1954,  "tcp" },
-  { "abr-api",         { NULL }, 1954,  "udp" },
-  { "abr-secure",      { NULL }, 1955,  "tcp" },
-  { "abr-secure",      { NULL }, 1955,  "udp" },
-  { "vrtl-vmf-ds",     { NULL }, 1956,  "tcp" },
-  { "vrtl-vmf-ds",     { NULL }, 1956,  "udp" },
-  { "unix-status",     { NULL }, 1957,  "tcp" },
-  { "unix-status",     { NULL }, 1957,  "udp" },
-  { "dxadmind",        { NULL }, 1958,  "tcp" },
-  { "dxadmind",        { NULL }, 1958,  "udp" },
-  { "simp-all",        { NULL }, 1959,  "tcp" },
-  { "simp-all",        { NULL }, 1959,  "udp" },
-  { "nasmanager",      { NULL }, 1960,  "tcp" },
-  { "nasmanager",      { NULL }, 1960,  "udp" },
-  { "bts-appserver",   { NULL }, 1961,  "tcp" },
-  { "bts-appserver",   { NULL }, 1961,  "udp" },
-  { "biap-mp",         { NULL }, 1962,  "tcp" },
-  { "biap-mp",         { NULL }, 1962,  "udp" },
-  { "webmachine",      { NULL }, 1963,  "tcp" },
-  { "webmachine",      { NULL }, 1963,  "udp" },
-  { "solid-e-engine",  { NULL }, 1964,  "tcp" },
-  { "solid-e-engine",  { NULL }, 1964,  "udp" },
-  { "tivoli-npm",      { NULL }, 1965,  "tcp" },
-  { "tivoli-npm",      { NULL }, 1965,  "udp" },
-  { "slush",           { NULL }, 1966,  "tcp" },
-  { "slush",           { NULL }, 1966,  "udp" },
-  { "sns-quote",       { NULL }, 1967,  "tcp" },
-  { "sns-quote",       { NULL }, 1967,  "udp" },
-  { "lipsinc",         { NULL }, 1968,  "tcp" },
-  { "lipsinc",         { NULL }, 1968,  "udp" },
-  { "lipsinc1",        { NULL }, 1969,  "tcp" },
-  { "lipsinc1",        { NULL }, 1969,  "udp" },
-  { "netop-rc",        { NULL }, 1970,  "tcp" },
-  { "netop-rc",        { NULL }, 1970,  "udp" },
-  { "netop-school",    { NULL }, 1971,  "tcp" },
-  { "netop-school",    { NULL }, 1971,  "udp" },
-  { "intersys-cache",  { NULL }, 1972,  "tcp" },
-  { "intersys-cache",  { NULL }, 1972,  "udp" },
-  { "dlsrap",          { NULL }, 1973,  "tcp" },
-  { "dlsrap",          { NULL }, 1973,  "udp" },
-  { "drp",             { NULL }, 1974,  "tcp" },
-  { "drp",             { NULL }, 1974,  "udp" },
-  { "tcoflashagent",   { NULL }, 1975,  "tcp" },
-  { "tcoflashagent",   { NULL }, 1975,  "udp" },
-  { "tcoregagent",     { NULL }, 1976,  "tcp" },
-  { "tcoregagent",     { NULL }, 1976,  "udp" },
-  { "tcoaddressbook",  { NULL }, 1977,  "tcp" },
-  { "tcoaddressbook",  { NULL }, 1977,  "udp" },
-  { "unisql",          { NULL }, 1978,  "tcp" },
-  { "unisql",          { NULL }, 1978,  "udp" },
-  { "unisql-java",     { NULL }, 1979,  "tcp" },
-  { "unisql-java",     { NULL }, 1979,  "udp" },
-  { "pearldoc-xact",   { NULL }, 1980,  "tcp" },
-  { "pearldoc-xact",   { NULL }, 1980,  "udp" },
-  { "p2pq",            { NULL }, 1981,  "tcp" },
-  { "p2pq",            { NULL }, 1981,  "udp" },
-  { "estamp",          { NULL }, 1982,  "tcp" },
-  { "estamp",          { NULL }, 1982,  "udp" },
-  { "lhtp",            { NULL }, 1983,  "tcp" },
-  { "lhtp",            { NULL }, 1983,  "udp" },
-  { "bb",              { NULL }, 1984,  "tcp" },
-  { "bb",              { NULL }, 1984,  "udp" },
-  { "hsrp",            { NULL }, 1985,  "tcp" },
-  { "hsrp",            { NULL }, 1985,  "udp" },
-  { "licensedaemon",   { NULL }, 1986,  "tcp" },
-  { "licensedaemon",   { NULL }, 1986,  "udp" },
-  { "tr-rsrb-p1",      { NULL }, 1987,  "tcp" },
-  { "tr-rsrb-p1",      { NULL }, 1987,  "udp" },
-  { "tr-rsrb-p2",      { NULL }, 1988,  "tcp" },
-  { "tr-rsrb-p2",      { NULL }, 1988,  "udp" },
-  { "tr-rsrb-p3",      { NULL }, 1989,  "tcp" },
-  { "tr-rsrb-p3",      { NULL }, 1989,  "udp" },
-  { "mshnet",          { NULL }, 1989,  "tcp" },
-  { "mshnet",          { NULL }, 1989,  "udp" },
-  { "stun-p1",         { NULL }, 1990,  "tcp" },
-  { "stun-p1",         { NULL }, 1990,  "udp" },
-  { "stun-p2",         { NULL }, 1991,  "tcp" },
-  { "stun-p2",         { NULL }, 1991,  "udp" },
-  { "stun-p3",         { NULL }, 1992,  "tcp" },
-  { "stun-p3",         { NULL }, 1992,  "udp" },
-  { "ipsendmsg",       { NULL }, 1992,  "tcp" },
-  { "ipsendmsg",       { NULL }, 1992,  "udp" },
-  { "snmp-tcp-port",   { NULL }, 1993,  "tcp" },
-  { "snmp-tcp-port",   { NULL }, 1993,  "udp" },
-  { "stun-port",       { NULL }, 1994,  "tcp" },
-  { "stun-port",       { NULL }, 1994,  "udp" },
-  { "perf-port",       { NULL }, 1995,  "tcp" },
-  { "perf-port",       { NULL }, 1995,  "udp" },
-  { "tr-rsrb-port",    { NULL }, 1996,  "tcp" },
-  { "tr-rsrb-port",    { NULL }, 1996,  "udp" },
-  { "gdp-port",        { NULL }, 1997,  "tcp" },
-  { "gdp-port",        { NULL }, 1997,  "udp" },
-  { "x25-svc-port",    { NULL }, 1998,  "tcp" },
-  { "x25-svc-port",    { NULL }, 1998,  "udp" },
-  { "tcp-id-port",     { NULL }, 1999,  "tcp" },
-  { "tcp-id-port",     { NULL }, 1999,  "udp" },
-  { "cisco-sccp",      { NULL }, 2000,  "tcp" },
-  { "cisco-sccp",      { NULL }, 2000,  "udp" },
-  { "dc",              { NULL }, 2001,  "tcp" },
-  { "wizard",          { NULL }, 2001,  "udp" },
-  { "globe",           { NULL }, 2002,  "tcp" },
-  { "globe",           { NULL }, 2002,  "udp" },
-  { "brutus",          { NULL }, 2003,  "tcp" },
-  { "brutus",          { NULL }, 2003,  "udp" },
-  { "mailbox",         { NULL }, 2004,  "tcp" },
-  { "emce",            { NULL }, 2004,  "udp" },
-  { "berknet",         { NULL }, 2005,  "tcp" },
-  { "oracle",          { NULL }, 2005,  "udp" },
-  { "invokator",       { NULL }, 2006,  "tcp" },
-  { "raid-cd",         { NULL }, 2006,  "udp" },
-  { "dectalk",         { NULL }, 2007,  "tcp" },
-  { "raid-am",         { NULL }, 2007,  "udp" },
-  { "conf",            { NULL }, 2008,  "tcp" },
-  { "terminaldb",      { NULL }, 2008,  "udp" },
-  { "news",            { NULL }, 2009,  "tcp" },
-  { "whosockami",      { NULL }, 2009,  "udp" },
-  { "search",          { NULL }, 2010,  "tcp" },
-  { "pipe_server",     { NULL }, 2010,  "udp" },
-  { "raid-cc",         { NULL }, 2011,  "tcp" },
-  { "servserv",        { NULL }, 2011,  "udp" },
-  { "ttyinfo",         { NULL }, 2012,  "tcp" },
-  { "raid-ac",         { NULL }, 2012,  "udp" },
-  { "raid-am",         { NULL }, 2013,  "tcp" },
-  { "raid-cd",         { NULL }, 2013,  "udp" },
-  { "troff",           { NULL }, 2014,  "tcp" },
-  { "raid-sf",         { NULL }, 2014,  "udp" },
-  { "cypress",         { NULL }, 2015,  "tcp" },
-  { "raid-cs",         { NULL }, 2015,  "udp" },
-  { "bootserver",      { NULL }, 2016,  "tcp" },
-  { "bootserver",      { NULL }, 2016,  "udp" },
-  { "cypress-stat",    { NULL }, 2017,  "tcp" },
-  { "bootclient",      { NULL }, 2017,  "udp" },
-  { "terminaldb",      { NULL }, 2018,  "tcp" },
-  { "rellpack",        { NULL }, 2018,  "udp" },
-  { "whosockami",      { NULL }, 2019,  "tcp" },
-  { "about",           { NULL }, 2019,  "udp" },
-  { "xinupageserver",  { NULL }, 2020,  "tcp" },
-  { "xinupageserver",  { NULL }, 2020,  "udp" },
-  { "servexec",        { NULL }, 2021,  "tcp" },
-  { "xinuexpansion1",  { NULL }, 2021,  "udp" },
-  { "down",            { NULL }, 2022,  "tcp" },
-  { "xinuexpansion2",  { NULL }, 2022,  "udp" },
-  { "xinuexpansion3",  { NULL }, 2023,  "tcp" },
-  { "xinuexpansion3",  { NULL }, 2023,  "udp" },
-  { "xinuexpansion4",  { NULL }, 2024,  "tcp" },
-  { "xinuexpansion4",  { NULL }, 2024,  "udp" },
-  { "ellpack",         { NULL }, 2025,  "tcp" },
-  { "xribs",           { NULL }, 2025,  "udp" },
-  { "scrabble",        { NULL }, 2026,  "tcp" },
-  { "scrabble",        { NULL }, 2026,  "udp" },
-  { "shadowserver",    { NULL }, 2027,  "tcp" },
-  { "shadowserver",    { NULL }, 2027,  "udp" },
-  { "submitserver",    { NULL }, 2028,  "tcp" },
-  { "submitserver",    { NULL }, 2028,  "udp" },
-  { "hsrpv6",          { NULL }, 2029,  "tcp" },
-  { "hsrpv6",          { NULL }, 2029,  "udp" },
-  { "device2",         { NULL }, 2030,  "tcp" },
-  { "device2",         { NULL }, 2030,  "udp" },
-  { "mobrien-chat",    { NULL }, 2031,  "tcp" },
-  { "mobrien-chat",    { NULL }, 2031,  "udp" },
-  { "blackboard",      { NULL }, 2032,  "tcp" },
-  { "blackboard",      { NULL }, 2032,  "udp" },
-  { "glogger",         { NULL }, 2033,  "tcp" },
-  { "glogger",         { NULL }, 2033,  "udp" },
-  { "scoremgr",        { NULL }, 2034,  "tcp" },
-  { "scoremgr",        { NULL }, 2034,  "udp" },
-  { "imsldoc",         { NULL }, 2035,  "tcp" },
-  { "imsldoc",         { NULL }, 2035,  "udp" },
-  { "e-dpnet",         { NULL }, 2036,  "tcp" },
-  { "e-dpnet",         { NULL }, 2036,  "udp" },
-  { "applus",          { NULL }, 2037,  "tcp" },
-  { "applus",          { NULL }, 2037,  "udp" },
-  { "objectmanager",   { NULL }, 2038,  "tcp" },
-  { "objectmanager",   { NULL }, 2038,  "udp" },
-  { "prizma",          { NULL }, 2039,  "tcp" },
-  { "prizma",          { NULL }, 2039,  "udp" },
-  { "lam",             { NULL }, 2040,  "tcp" },
-  { "lam",             { NULL }, 2040,  "udp" },
-  { "interbase",       { NULL }, 2041,  "tcp" },
-  { "interbase",       { NULL }, 2041,  "udp" },
-  { "isis",            { NULL }, 2042,  "tcp" },
-  { "isis",            { NULL }, 2042,  "udp" },
-  { "isis-bcast",      { NULL }, 2043,  "tcp" },
-  { "isis-bcast",      { NULL }, 2043,  "udp" },
-  { "rimsl",           { NULL }, 2044,  "tcp" },
-  { "rimsl",           { NULL }, 2044,  "udp" },
-  { "cdfunc",          { NULL }, 2045,  "tcp" },
-  { "cdfunc",          { NULL }, 2045,  "udp" },
-  { "sdfunc",          { NULL }, 2046,  "tcp" },
-  { "sdfunc",          { NULL }, 2046,  "udp" },
-  { "dls",             { NULL }, 2047,  "tcp" },
-  { "dls",             { NULL }, 2047,  "udp" },
-  { "dls-monitor",     { NULL }, 2048,  "tcp" },
-  { "dls-monitor",     { NULL }, 2048,  "udp" },
-  { "shilp",           { NULL }, 2049,  "tcp" },
-  { "shilp",           { NULL }, 2049,  "udp" },
-  { "nfs",             { NULL }, 2049,  "tcp" },
-  { "nfs",             { NULL }, 2049,  "udp" },
-  { "nfs",             { NULL }, 2049,  "sctp"},
-  { "av-emb-config",   { NULL }, 2050,  "tcp" },
-  { "av-emb-config",   { NULL }, 2050,  "udp" },
-  { "epnsdp",          { NULL }, 2051,  "tcp" },
-  { "epnsdp",          { NULL }, 2051,  "udp" },
-  { "clearvisn",       { NULL }, 2052,  "tcp" },
-  { "clearvisn",       { NULL }, 2052,  "udp" },
-  { "lot105-ds-upd",   { NULL }, 2053,  "tcp" },
-  { "lot105-ds-upd",   { NULL }, 2053,  "udp" },
-  { "weblogin",        { NULL }, 2054,  "tcp" },
-  { "weblogin",        { NULL }, 2054,  "udp" },
-  { "iop",             { NULL }, 2055,  "tcp" },
-  { "iop",             { NULL }, 2055,  "udp" },
-  { "omnisky",         { NULL }, 2056,  "tcp" },
-  { "omnisky",         { NULL }, 2056,  "udp" },
-  { "rich-cp",         { NULL }, 2057,  "tcp" },
-  { "rich-cp",         { NULL }, 2057,  "udp" },
-  { "newwavesearch",   { NULL }, 2058,  "tcp" },
-  { "newwavesearch",   { NULL }, 2058,  "udp" },
-  { "bmc-messaging",   { NULL }, 2059,  "tcp" },
-  { "bmc-messaging",   { NULL }, 2059,  "udp" },
-  { "teleniumdaemon",  { NULL }, 2060,  "tcp" },
-  { "teleniumdaemon",  { NULL }, 2060,  "udp" },
-  { "netmount",        { NULL }, 2061,  "tcp" },
-  { "netmount",        { NULL }, 2061,  "udp" },
-  { "icg-swp",         { NULL }, 2062,  "tcp" },
-  { "icg-swp",         { NULL }, 2062,  "udp" },
-  { "icg-bridge",      { NULL }, 2063,  "tcp" },
-  { "icg-bridge",      { NULL }, 2063,  "udp" },
-  { "icg-iprelay",     { NULL }, 2064,  "tcp" },
-  { "icg-iprelay",     { NULL }, 2064,  "udp" },
-  { "dlsrpn",          { NULL }, 2065,  "tcp" },
-  { "dlsrpn",          { NULL }, 2065,  "udp" },
-  { "aura",            { NULL }, 2066,  "tcp" },
-  { "aura",            { NULL }, 2066,  "udp" },
-  { "dlswpn",          { NULL }, 2067,  "tcp" },
-  { "dlswpn",          { NULL }, 2067,  "udp" },
-  { "avauthsrvprtcl",  { NULL }, 2068,  "tcp" },
-  { "avauthsrvprtcl",  { NULL }, 2068,  "udp" },
-  { "event-port",      { NULL }, 2069,  "tcp" },
-  { "event-port",      { NULL }, 2069,  "udp" },
-  { "ah-esp-encap",    { NULL }, 2070,  "tcp" },
-  { "ah-esp-encap",    { NULL }, 2070,  "udp" },
-  { "acp-port",        { NULL }, 2071,  "tcp" },
-  { "acp-port",        { NULL }, 2071,  "udp" },
-  { "msync",           { NULL }, 2072,  "tcp" },
-  { "msync",           { NULL }, 2072,  "udp" },
-  { "gxs-data-port",   { NULL }, 2073,  "tcp" },
-  { "gxs-data-port",   { NULL }, 2073,  "udp" },
-  { "vrtl-vmf-sa",     { NULL }, 2074,  "tcp" },
-  { "vrtl-vmf-sa",     { NULL }, 2074,  "udp" },
-  { "newlixengine",    { NULL }, 2075,  "tcp" },
-  { "newlixengine",    { NULL }, 2075,  "udp" },
-  { "newlixconfig",    { NULL }, 2076,  "tcp" },
-  { "newlixconfig",    { NULL }, 2076,  "udp" },
-  { "tsrmagt",         { NULL }, 2077,  "tcp" },
-  { "tsrmagt",         { NULL }, 2077,  "udp" },
-  { "tpcsrvr",         { NULL }, 2078,  "tcp" },
-  { "tpcsrvr",         { NULL }, 2078,  "udp" },
-  { "idware-router",   { NULL }, 2079,  "tcp" },
-  { "idware-router",   { NULL }, 2079,  "udp" },
-  { "autodesk-nlm",    { NULL }, 2080,  "tcp" },
-  { "autodesk-nlm",    { NULL }, 2080,  "udp" },
-  { "kme-trap-port",   { NULL }, 2081,  "tcp" },
-  { "kme-trap-port",   { NULL }, 2081,  "udp" },
-  { "infowave",        { NULL }, 2082,  "tcp" },
-  { "infowave",        { NULL }, 2082,  "udp" },
-  { "radsec",          { NULL }, 2083,  "tcp" },
-  { "radsec",          { NULL }, 2083,  "udp" },
-  { "sunclustergeo",   { NULL }, 2084,  "tcp" },
-  { "sunclustergeo",   { NULL }, 2084,  "udp" },
-  { "ada-cip",         { NULL }, 2085,  "tcp" },
-  { "ada-cip",         { NULL }, 2085,  "udp" },
-  { "gnunet",          { NULL }, 2086,  "tcp" },
-  { "gnunet",          { NULL }, 2086,  "udp" },
-  { "eli",             { NULL }, 2087,  "tcp" },
-  { "eli",             { NULL }, 2087,  "udp" },
-  { "ip-blf",          { NULL }, 2088,  "tcp" },
-  { "ip-blf",          { NULL }, 2088,  "udp" },
-  { "sep",             { NULL }, 2089,  "tcp" },
-  { "sep",             { NULL }, 2089,  "udp" },
-  { "lrp",             { NULL }, 2090,  "tcp" },
-  { "lrp",             { NULL }, 2090,  "udp" },
-  { "prp",             { NULL }, 2091,  "tcp" },
-  { "prp",             { NULL }, 2091,  "udp" },
-  { "descent3",        { NULL }, 2092,  "tcp" },
-  { "descent3",        { NULL }, 2092,  "udp" },
-  { "nbx-cc",          { NULL }, 2093,  "tcp" },
-  { "nbx-cc",          { NULL }, 2093,  "udp" },
-  { "nbx-au",          { NULL }, 2094,  "tcp" },
-  { "nbx-au",          { NULL }, 2094,  "udp" },
-  { "nbx-ser",         { NULL }, 2095,  "tcp" },
-  { "nbx-ser",         { NULL }, 2095,  "udp" },
-  { "nbx-dir",         { NULL }, 2096,  "tcp" },
-  { "nbx-dir",         { NULL }, 2096,  "udp" },
-  { "jetformpreview",  { NULL }, 2097,  "tcp" },
-  { "jetformpreview",  { NULL }, 2097,  "udp" },
-  { "dialog-port",     { NULL }, 2098,  "tcp" },
-  { "dialog-port",     { NULL }, 2098,  "udp" },
-  { "h2250-annex-g",   { NULL }, 2099,  "tcp" },
-  { "h2250-annex-g",   { NULL }, 2099,  "udp" },
-  { "amiganetfs",      { NULL }, 2100,  "tcp" },
-  { "amiganetfs",      { NULL }, 2100,  "udp" },
-  { "rtcm-sc104",      { NULL }, 2101,  "tcp" },
-  { "rtcm-sc104",      { NULL }, 2101,  "udp" },
-  { "zephyr-srv",      { NULL }, 2102,  "tcp" },
-  { "zephyr-srv",      { NULL }, 2102,  "udp" },
-  { "zephyr-clt",      { NULL }, 2103,  "tcp" },
-  { "zephyr-clt",      { NULL }, 2103,  "udp" },
-  { "zephyr-hm",       { NULL }, 2104,  "tcp" },
-  { "zephyr-hm",       { NULL }, 2104,  "udp" },
-  { "minipay",         { NULL }, 2105,  "tcp" },
-  { "minipay",         { NULL }, 2105,  "udp" },
-  { "mzap",            { NULL }, 2106,  "tcp" },
-  { "mzap",            { NULL }, 2106,  "udp" },
-  { "bintec-admin",    { NULL }, 2107,  "tcp" },
-  { "bintec-admin",    { NULL }, 2107,  "udp" },
-  { "comcam",          { NULL }, 2108,  "tcp" },
-  { "comcam",          { NULL }, 2108,  "udp" },
-  { "ergolight",       { NULL }, 2109,  "tcp" },
-  { "ergolight",       { NULL }, 2109,  "udp" },
-  { "umsp",            { NULL }, 2110,  "tcp" },
-  { "umsp",            { NULL }, 2110,  "udp" },
-  { "dsatp",           { NULL }, 2111,  "tcp" },
-  { "dsatp",           { NULL }, 2111,  "udp" },
-  { "idonix-metanet",  { NULL }, 2112,  "tcp" },
-  { "idonix-metanet",  { NULL }, 2112,  "udp" },
-  { "hsl-storm",       { NULL }, 2113,  "tcp" },
-  { "hsl-storm",       { NULL }, 2113,  "udp" },
-  { "newheights",      { NULL }, 2114,  "tcp" },
-  { "newheights",      { NULL }, 2114,  "udp" },
-  { "kdm",             { NULL }, 2115,  "tcp" },
-  { "kdm",             { NULL }, 2115,  "udp" },
-  { "ccowcmr",         { NULL }, 2116,  "tcp" },
-  { "ccowcmr",         { NULL }, 2116,  "udp" },
-  { "mentaclient",     { NULL }, 2117,  "tcp" },
-  { "mentaclient",     { NULL }, 2117,  "udp" },
-  { "mentaserver",     { NULL }, 2118,  "tcp" },
-  { "mentaserver",     { NULL }, 2118,  "udp" },
-  { "gsigatekeeper",   { NULL }, 2119,  "tcp" },
-  { "gsigatekeeper",   { NULL }, 2119,  "udp" },
-  { "qencp",           { NULL }, 2120,  "tcp" },
-  { "qencp",           { NULL }, 2120,  "udp" },
-  { "scientia-ssdb",   { NULL }, 2121,  "tcp" },
-  { "scientia-ssdb",   { NULL }, 2121,  "udp" },
-  { "caupc-remote",    { NULL }, 2122,  "tcp" },
-  { "caupc-remote",    { NULL }, 2122,  "udp" },
-  { "gtp-control",     { NULL }, 2123,  "tcp" },
-  { "gtp-control",     { NULL }, 2123,  "udp" },
-  { "elatelink",       { NULL }, 2124,  "tcp" },
-  { "elatelink",       { NULL }, 2124,  "udp" },
-  { "lockstep",        { NULL }, 2125,  "tcp" },
-  { "lockstep",        { NULL }, 2125,  "udp" },
-  { "pktcable-cops",   { NULL }, 2126,  "tcp" },
-  { "pktcable-cops",   { NULL }, 2126,  "udp" },
-  { "index-pc-wb",     { NULL }, 2127,  "tcp" },
-  { "index-pc-wb",     { NULL }, 2127,  "udp" },
-  { "net-steward",     { NULL }, 2128,  "tcp" },
-  { "net-steward",     { NULL }, 2128,  "udp" },
-  { "cs-live",         { NULL }, 2129,  "tcp" },
-  { "cs-live",         { NULL }, 2129,  "udp" },
-  { "xds",             { NULL }, 2130,  "tcp" },
-  { "xds",             { NULL }, 2130,  "udp" },
-  { "avantageb2b",     { NULL }, 2131,  "tcp" },
-  { "avantageb2b",     { NULL }, 2131,  "udp" },
-  { "solera-epmap",    { NULL }, 2132,  "tcp" },
-  { "solera-epmap",    { NULL }, 2132,  "udp" },
-  { "zymed-zpp",       { NULL }, 2133,  "tcp" },
-  { "zymed-zpp",       { NULL }, 2133,  "udp" },
-  { "avenue",          { NULL }, 2134,  "tcp" },
-  { "avenue",          { NULL }, 2134,  "udp" },
-  { "gris",            { NULL }, 2135,  "tcp" },
-  { "gris",            { NULL }, 2135,  "udp" },
-  { "appworxsrv",      { NULL }, 2136,  "tcp" },
-  { "appworxsrv",      { NULL }, 2136,  "udp" },
-  { "connect",         { NULL }, 2137,  "tcp" },
-  { "connect",         { NULL }, 2137,  "udp" },
-  { "unbind-cluster",  { NULL }, 2138,  "tcp" },
-  { "unbind-cluster",  { NULL }, 2138,  "udp" },
-  { "ias-auth",        { NULL }, 2139,  "tcp" },
-  { "ias-auth",        { NULL }, 2139,  "udp" },
-  { "ias-reg",         { NULL }, 2140,  "tcp" },
-  { "ias-reg",         { NULL }, 2140,  "udp" },
-  { "ias-admind",      { NULL }, 2141,  "tcp" },
-  { "ias-admind",      { NULL }, 2141,  "udp" },
-  { "tdmoip",          { NULL }, 2142,  "tcp" },
-  { "tdmoip",          { NULL }, 2142,  "udp" },
-  { "lv-jc",           { NULL }, 2143,  "tcp" },
-  { "lv-jc",           { NULL }, 2143,  "udp" },
-  { "lv-ffx",          { NULL }, 2144,  "tcp" },
-  { "lv-ffx",          { NULL }, 2144,  "udp" },
-  { "lv-pici",         { NULL }, 2145,  "tcp" },
-  { "lv-pici",         { NULL }, 2145,  "udp" },
-  { "lv-not",          { NULL }, 2146,  "tcp" },
-  { "lv-not",          { NULL }, 2146,  "udp" },
-  { "lv-auth",         { NULL }, 2147,  "tcp" },
-  { "lv-auth",         { NULL }, 2147,  "udp" },
-  { "veritas-ucl",     { NULL }, 2148,  "tcp" },
-  { "veritas-ucl",     { NULL }, 2148,  "udp" },
-  { "acptsys",         { NULL }, 2149,  "tcp" },
-  { "acptsys",         { NULL }, 2149,  "udp" },
-  { "dynamic3d",       { NULL }, 2150,  "tcp" },
-  { "dynamic3d",       { NULL }, 2150,  "udp" },
-  { "docent",          { NULL }, 2151,  "tcp" },
-  { "docent",          { NULL }, 2151,  "udp" },
-  { "gtp-user",        { NULL }, 2152,  "tcp" },
-  { "gtp-user",        { NULL }, 2152,  "udp" },
-  { "ctlptc",          { NULL }, 2153,  "tcp" },
-  { "ctlptc",          { NULL }, 2153,  "udp" },
-  { "stdptc",          { NULL }, 2154,  "tcp" },
-  { "stdptc",          { NULL }, 2154,  "udp" },
-  { "brdptc",          { NULL }, 2155,  "tcp" },
-  { "brdptc",          { NULL }, 2155,  "udp" },
-  { "trp",             { NULL }, 2156,  "tcp" },
-  { "trp",             { NULL }, 2156,  "udp" },
-  { "xnds",            { NULL }, 2157,  "tcp" },
-  { "xnds",            { NULL }, 2157,  "udp" },
-  { "touchnetplus",    { NULL }, 2158,  "tcp" },
-  { "touchnetplus",    { NULL }, 2158,  "udp" },
-  { "gdbremote",       { NULL }, 2159,  "tcp" },
-  { "gdbremote",       { NULL }, 2159,  "udp" },
-  { "apc-2160",        { NULL }, 2160,  "tcp" },
-  { "apc-2160",        { NULL }, 2160,  "udp" },
-  { "apc-2161",        { NULL }, 2161,  "tcp" },
-  { "apc-2161",        { NULL }, 2161,  "udp" },
-  { "navisphere",      { NULL }, 2162,  "tcp" },
-  { "navisphere",      { NULL }, 2162,  "udp" },
-  { "navisphere-sec",  { NULL }, 2163,  "tcp" },
-  { "navisphere-sec",  { NULL }, 2163,  "udp" },
-  { "ddns-v3",         { NULL }, 2164,  "tcp" },
-  { "ddns-v3",         { NULL }, 2164,  "udp" },
-  { "x-bone-api",      { NULL }, 2165,  "tcp" },
-  { "x-bone-api",      { NULL }, 2165,  "udp" },
-  { "iwserver",        { NULL }, 2166,  "tcp" },
-  { "iwserver",        { NULL }, 2166,  "udp" },
-  { "raw-serial",      { NULL }, 2167,  "tcp" },
-  { "raw-serial",      { NULL }, 2167,  "udp" },
-  { "easy-soft-mux",   { NULL }, 2168,  "tcp" },
-  { "easy-soft-mux",   { NULL }, 2168,  "udp" },
-  { "brain",           { NULL }, 2169,  "tcp" },
-  { "brain",           { NULL }, 2169,  "udp" },
-  { "eyetv",           { NULL }, 2170,  "tcp" },
-  { "eyetv",           { NULL }, 2170,  "udp" },
-  { "msfw-storage",    { NULL }, 2171,  "tcp" },
-  { "msfw-storage",    { NULL }, 2171,  "udp" },
-  { "msfw-s-storage",  { NULL }, 2172,  "tcp" },
-  { "msfw-s-storage",  { NULL }, 2172,  "udp" },
-  { "msfw-replica",    { NULL }, 2173,  "tcp" },
-  { "msfw-replica",    { NULL }, 2173,  "udp" },
-  { "msfw-array",      { NULL }, 2174,  "tcp" },
-  { "msfw-array",      { NULL }, 2174,  "udp" },
-  { "airsync",         { NULL }, 2175,  "tcp" },
-  { "airsync",         { NULL }, 2175,  "udp" },
-  { "rapi",            { NULL }, 2176,  "tcp" },
-  { "rapi",            { NULL }, 2176,  "udp" },
-  { "qwave",           { NULL }, 2177,  "tcp" },
-  { "qwave",           { NULL }, 2177,  "udp" },
-  { "bitspeer",        { NULL }, 2178,  "tcp" },
-  { "bitspeer",        { NULL }, 2178,  "udp" },
-  { "vmrdp",           { NULL }, 2179,  "tcp" },
-  { "vmrdp",           { NULL }, 2179,  "udp" },
-  { "mc-gt-srv",       { NULL }, 2180,  "tcp" },
-  { "mc-gt-srv",       { NULL }, 2180,  "udp" },
-  { "eforward",        { NULL }, 2181,  "tcp" },
-  { "eforward",        { NULL }, 2181,  "udp" },
-  { "cgn-stat",        { NULL }, 2182,  "tcp" },
-  { "cgn-stat",        { NULL }, 2182,  "udp" },
-  { "cgn-config",      { NULL }, 2183,  "tcp" },
-  { "cgn-config",      { NULL }, 2183,  "udp" },
-  { "nvd",             { NULL }, 2184,  "tcp" },
-  { "nvd",             { NULL }, 2184,  "udp" },
-  { "onbase-dds",      { NULL }, 2185,  "tcp" },
-  { "onbase-dds",      { NULL }, 2185,  "udp" },
-  { "gtaua",           { NULL }, 2186,  "tcp" },
-  { "gtaua",           { NULL }, 2186,  "udp" },
-  { "ssmc",            { NULL }, 2187,  "tcp" },
-  { "ssmd",            { NULL }, 2187,  "udp" },
-  { "tivoconnect",     { NULL }, 2190,  "tcp" },
-  { "tivoconnect",     { NULL }, 2190,  "udp" },
-  { "tvbus",           { NULL }, 2191,  "tcp" },
-  { "tvbus",           { NULL }, 2191,  "udp" },
-  { "asdis",           { NULL }, 2192,  "tcp" },
-  { "asdis",           { NULL }, 2192,  "udp" },
-  { "drwcs",           { NULL }, 2193,  "tcp" },
-  { "drwcs",           { NULL }, 2193,  "udp" },
-  { "mnp-exchange",    { NULL }, 2197,  "tcp" },
-  { "mnp-exchange",    { NULL }, 2197,  "udp" },
-  { "onehome-remote",  { NULL }, 2198,  "tcp" },
-  { "onehome-remote",  { NULL }, 2198,  "udp" },
-  { "onehome-help",    { NULL }, 2199,  "tcp" },
-  { "onehome-help",    { NULL }, 2199,  "udp" },
-  { "ici",             { NULL }, 2200,  "tcp" },
-  { "ici",             { NULL }, 2200,  "udp" },
-  { "ats",             { NULL }, 2201,  "tcp" },
-  { "ats",             { NULL }, 2201,  "udp" },
-  { "imtc-map",        { NULL }, 2202,  "tcp" },
-  { "imtc-map",        { NULL }, 2202,  "udp" },
-  { "b2-runtime",      { NULL }, 2203,  "tcp" },
-  { "b2-runtime",      { NULL }, 2203,  "udp" },
-  { "b2-license",      { NULL }, 2204,  "tcp" },
-  { "b2-license",      { NULL }, 2204,  "udp" },
-  { "jps",             { NULL }, 2205,  "tcp" },
-  { "jps",             { NULL }, 2205,  "udp" },
-  { "hpocbus",         { NULL }, 2206,  "tcp" },
-  { "hpocbus",         { NULL }, 2206,  "udp" },
-  { "hpssd",           { NULL }, 2207,  "tcp" },
-  { "hpssd",           { NULL }, 2207,  "udp" },
-  { "hpiod",           { NULL }, 2208,  "tcp" },
-  { "hpiod",           { NULL }, 2208,  "udp" },
-  { "rimf-ps",         { NULL }, 2209,  "tcp" },
-  { "rimf-ps",         { NULL }, 2209,  "udp" },
-  { "noaaport",        { NULL }, 2210,  "tcp" },
-  { "noaaport",        { NULL }, 2210,  "udp" },
-  { "emwin",           { NULL }, 2211,  "tcp" },
-  { "emwin",           { NULL }, 2211,  "udp" },
-  { "leecoposserver",  { NULL }, 2212,  "tcp" },
-  { "leecoposserver",  { NULL }, 2212,  "udp" },
-  { "kali",            { NULL }, 2213,  "tcp" },
-  { "kali",            { NULL }, 2213,  "udp" },
-  { "rpi",             { NULL }, 2214,  "tcp" },
-  { "rpi",             { NULL }, 2214,  "udp" },
-  { "ipcore",          { NULL }, 2215,  "tcp" },
-  { "ipcore",          { NULL }, 2215,  "udp" },
-  { "vtu-comms",       { NULL }, 2216,  "tcp" },
-  { "vtu-comms",       { NULL }, 2216,  "udp" },
-  { "gotodevice",      { NULL }, 2217,  "tcp" },
-  { "gotodevice",      { NULL }, 2217,  "udp" },
-  { "bounzza",         { NULL }, 2218,  "tcp" },
-  { "bounzza",         { NULL }, 2218,  "udp" },
-  { "netiq-ncap",      { NULL }, 2219,  "tcp" },
-  { "netiq-ncap",      { NULL }, 2219,  "udp" },
-  { "netiq",           { NULL }, 2220,  "tcp" },
-  { "netiq",           { NULL }, 2220,  "udp" },
-  { "rockwell-csp1",   { NULL }, 2221,  "tcp" },
-  { "rockwell-csp1",   { NULL }, 2221,  "udp" },
-  { "EtherNet/IP-1",   { NULL }, 2222,  "tcp" },
-  { "EtherNet/IP-1",   { NULL }, 2222,  "udp" },
-  { "rockwell-csp2",   { NULL }, 2223,  "tcp" },
-  { "rockwell-csp2",   { NULL }, 2223,  "udp" },
-  { "efi-mg",          { NULL }, 2224,  "tcp" },
-  { "efi-mg",          { NULL }, 2224,  "udp" },
-  { "rcip-itu",        { NULL }, 2225,  "tcp" },
-  { "rcip-itu",        { NULL }, 2225,  "sctp"},
-  { "di-drm",          { NULL }, 2226,  "tcp" },
-  { "di-drm",          { NULL }, 2226,  "udp" },
-  { "di-msg",          { NULL }, 2227,  "tcp" },
-  { "di-msg",          { NULL }, 2227,  "udp" },
-  { "ehome-ms",        { NULL }, 2228,  "tcp" },
-  { "ehome-ms",        { NULL }, 2228,  "udp" },
-  { "datalens",        { NULL }, 2229,  "tcp" },
-  { "datalens",        { NULL }, 2229,  "udp" },
-  { "queueadm",        { NULL }, 2230,  "tcp" },
-  { "queueadm",        { NULL }, 2230,  "udp" },
-  { "wimaxasncp",      { NULL }, 2231,  "tcp" },
-  { "wimaxasncp",      { NULL }, 2231,  "udp" },
-  { "ivs-video",       { NULL }, 2232,  "tcp" },
-  { "ivs-video",       { NULL }, 2232,  "udp" },
-  { "infocrypt",       { NULL }, 2233,  "tcp" },
-  { "infocrypt",       { NULL }, 2233,  "udp" },
-  { "directplay",      { NULL }, 2234,  "tcp" },
-  { "directplay",      { NULL }, 2234,  "udp" },
-  { "sercomm-wlink",   { NULL }, 2235,  "tcp" },
-  { "sercomm-wlink",   { NULL }, 2235,  "udp" },
-  { "nani",            { NULL }, 2236,  "tcp" },
-  { "nani",            { NULL }, 2236,  "udp" },
-  { "optech-port1-lm", { NULL }, 2237,  "tcp" },
-  { "optech-port1-lm", { NULL }, 2237,  "udp" },
-  { "aviva-sna",       { NULL }, 2238,  "tcp" },
-  { "aviva-sna",       { NULL }, 2238,  "udp" },
-  { "imagequery",      { NULL }, 2239,  "tcp" },
-  { "imagequery",      { NULL }, 2239,  "udp" },
-  { "recipe",          { NULL }, 2240,  "tcp" },
-  { "recipe",          { NULL }, 2240,  "udp" },
-  { "ivsd",            { NULL }, 2241,  "tcp" },
-  { "ivsd",            { NULL }, 2241,  "udp" },
-  { "foliocorp",       { NULL }, 2242,  "tcp" },
-  { "foliocorp",       { NULL }, 2242,  "udp" },
-  { "magicom",         { NULL }, 2243,  "tcp" },
-  { "magicom",         { NULL }, 2243,  "udp" },
-  { "nmsserver",       { NULL }, 2244,  "tcp" },
-  { "nmsserver",       { NULL }, 2244,  "udp" },
-  { "hao",             { NULL }, 2245,  "tcp" },
-  { "hao",             { NULL }, 2245,  "udp" },
-  { "pc-mta-addrmap",  { NULL }, 2246,  "tcp" },
-  { "pc-mta-addrmap",  { NULL }, 2246,  "udp" },
-  { "antidotemgrsvr",  { NULL }, 2247,  "tcp" },
-  { "antidotemgrsvr",  { NULL }, 2247,  "udp" },
-  { "ums",             { NULL }, 2248,  "tcp" },
-  { "ums",             { NULL }, 2248,  "udp" },
-  { "rfmp",            { NULL }, 2249,  "tcp" },
-  { "rfmp",            { NULL }, 2249,  "udp" },
-  { "remote-collab",   { NULL }, 2250,  "tcp" },
-  { "remote-collab",   { NULL }, 2250,  "udp" },
-  { "dif-port",        { NULL }, 2251,  "tcp" },
-  { "dif-port",        { NULL }, 2251,  "udp" },
-  { "njenet-ssl",      { NULL }, 2252,  "tcp" },
-  { "njenet-ssl",      { NULL }, 2252,  "udp" },
-  { "dtv-chan-req",    { NULL }, 2253,  "tcp" },
-  { "dtv-chan-req",    { NULL }, 2253,  "udp" },
-  { "seispoc",         { NULL }, 2254,  "tcp" },
-  { "seispoc",         { NULL }, 2254,  "udp" },
-  { "vrtp",            { NULL }, 2255,  "tcp" },
-  { "vrtp",            { NULL }, 2255,  "udp" },
-  { "pcc-mfp",         { NULL }, 2256,  "tcp" },
-  { "pcc-mfp",         { NULL }, 2256,  "udp" },
-  { "simple-tx-rx",    { NULL }, 2257,  "tcp" },
-  { "simple-tx-rx",    { NULL }, 2257,  "udp" },
-  { "rcts",            { NULL }, 2258,  "tcp" },
-  { "rcts",            { NULL }, 2258,  "udp" },
-  { "acd-pm",          { NULL }, 2259,  "tcp" },
-  { "acd-pm",          { NULL }, 2259,  "udp" },
-  { "apc-2260",        { NULL }, 2260,  "tcp" },
-  { "apc-2260",        { NULL }, 2260,  "udp" },
-  { "comotionmaster",  { NULL }, 2261,  "tcp" },
-  { "comotionmaster",  { NULL }, 2261,  "udp" },
-  { "comotionback",    { NULL }, 2262,  "tcp" },
-  { "comotionback",    { NULL }, 2262,  "udp" },
-  { "ecwcfg",          { NULL }, 2263,  "tcp" },
-  { "ecwcfg",          { NULL }, 2263,  "udp" },
-  { "apx500api-1",     { NULL }, 2264,  "tcp" },
-  { "apx500api-1",     { NULL }, 2264,  "udp" },
-  { "apx500api-2",     { NULL }, 2265,  "tcp" },
-  { "apx500api-2",     { NULL }, 2265,  "udp" },
-  { "mfserver",        { NULL }, 2266,  "tcp" },
-  { "mfserver",        { NULL }, 2266,  "udp" },
-  { "ontobroker",      { NULL }, 2267,  "tcp" },
-  { "ontobroker",      { NULL }, 2267,  "udp" },
-  { "amt",             { NULL }, 2268,  "tcp" },
-  { "amt",             { NULL }, 2268,  "udp" },
-  { "mikey",           { NULL }, 2269,  "tcp" },
-  { "mikey",           { NULL }, 2269,  "udp" },
-  { "starschool",      { NULL }, 2270,  "tcp" },
-  { "starschool",      { NULL }, 2270,  "udp" },
-  { "mmcals",          { NULL }, 2271,  "tcp" },
-  { "mmcals",          { NULL }, 2271,  "udp" },
-  { "mmcal",           { NULL }, 2272,  "tcp" },
-  { "mmcal",           { NULL }, 2272,  "udp" },
-  { "mysql-im",        { NULL }, 2273,  "tcp" },
-  { "mysql-im",        { NULL }, 2273,  "udp" },
-  { "pcttunnell",      { NULL }, 2274,  "tcp" },
-  { "pcttunnell",      { NULL }, 2274,  "udp" },
-  { "ibridge-data",    { NULL }, 2275,  "tcp" },
-  { "ibridge-data",    { NULL }, 2275,  "udp" },
-  { "ibridge-mgmt",    { NULL }, 2276,  "tcp" },
-  { "ibridge-mgmt",    { NULL }, 2276,  "udp" },
-  { "bluectrlproxy",   { NULL }, 2277,  "tcp" },
-  { "bluectrlproxy",   { NULL }, 2277,  "udp" },
-  { "s3db",            { NULL }, 2278,  "tcp" },
-  { "s3db",            { NULL }, 2278,  "udp" },
-  { "xmquery",         { NULL }, 2279,  "tcp" },
-  { "xmquery",         { NULL }, 2279,  "udp" },
-  { "lnvpoller",       { NULL }, 2280,  "tcp" },
-  { "lnvpoller",       { NULL }, 2280,  "udp" },
-  { "lnvconsole",      { NULL }, 2281,  "tcp" },
-  { "lnvconsole",      { NULL }, 2281,  "udp" },
-  { "lnvalarm",        { NULL }, 2282,  "tcp" },
-  { "lnvalarm",        { NULL }, 2282,  "udp" },
-  { "lnvstatus",       { NULL }, 2283,  "tcp" },
-  { "lnvstatus",       { NULL }, 2283,  "udp" },
-  { "lnvmaps",         { NULL }, 2284,  "tcp" },
-  { "lnvmaps",         { NULL }, 2284,  "udp" },
-  { "lnvmailmon",      { NULL }, 2285,  "tcp" },
-  { "lnvmailmon",      { NULL }, 2285,  "udp" },
-  { "nas-metering",    { NULL }, 2286,  "tcp" },
-  { "nas-metering",    { NULL }, 2286,  "udp" },
-  { "dna",             { NULL }, 2287,  "tcp" },
-  { "dna",             { NULL }, 2287,  "udp" },
-  { "netml",           { NULL }, 2288,  "tcp" },
-  { "netml",           { NULL }, 2288,  "udp" },
-  { "dict-lookup",     { NULL }, 2289,  "tcp" },
-  { "dict-lookup",     { NULL }, 2289,  "udp" },
-  { "sonus-logging",   { NULL }, 2290,  "tcp" },
-  { "sonus-logging",   { NULL }, 2290,  "udp" },
-  { "eapsp",           { NULL }, 2291,  "tcp" },
-  { "eapsp",           { NULL }, 2291,  "udp" },
-  { "mib-streaming",   { NULL }, 2292,  "tcp" },
-  { "mib-streaming",   { NULL }, 2292,  "udp" },
-  { "npdbgmngr",       { NULL }, 2293,  "tcp" },
-  { "npdbgmngr",       { NULL }, 2293,  "udp" },
-  { "konshus-lm",      { NULL }, 2294,  "tcp" },
-  { "konshus-lm",      { NULL }, 2294,  "udp" },
-  { "advant-lm",       { NULL }, 2295,  "tcp" },
-  { "advant-lm",       { NULL }, 2295,  "udp" },
-  { "theta-lm",        { NULL }, 2296,  "tcp" },
-  { "theta-lm",        { NULL }, 2296,  "udp" },
-  { "d2k-datamover1",  { NULL }, 2297,  "tcp" },
-  { "d2k-datamover1",  { NULL }, 2297,  "udp" },
-  { "d2k-datamover2",  { NULL }, 2298,  "tcp" },
-  { "d2k-datamover2",  { NULL }, 2298,  "udp" },
-  { "pc-telecommute",  { NULL }, 2299,  "tcp" },
-  { "pc-telecommute",  { NULL }, 2299,  "udp" },
-  { "cvmmon",          { NULL }, 2300,  "tcp" },
-  { "cvmmon",          { NULL }, 2300,  "udp" },
-  { "cpq-wbem",        { NULL }, 2301,  "tcp" },
-  { "cpq-wbem",        { NULL }, 2301,  "udp" },
-  { "binderysupport",  { NULL }, 2302,  "tcp" },
-  { "binderysupport",  { NULL }, 2302,  "udp" },
-  { "proxy-gateway",   { NULL }, 2303,  "tcp" },
-  { "proxy-gateway",   { NULL }, 2303,  "udp" },
-  { "attachmate-uts",  { NULL }, 2304,  "tcp" },
-  { "attachmate-uts",  { NULL }, 2304,  "udp" },
-  { "mt-scaleserver",  { NULL }, 2305,  "tcp" },
-  { "mt-scaleserver",  { NULL }, 2305,  "udp" },
-  { "tappi-boxnet",    { NULL }, 2306,  "tcp" },
-  { "tappi-boxnet",    { NULL }, 2306,  "udp" },
-  { "pehelp",          { NULL }, 2307,  "tcp" },
-  { "pehelp",          { NULL }, 2307,  "udp" },
-  { "sdhelp",          { NULL }, 2308,  "tcp" },
-  { "sdhelp",          { NULL }, 2308,  "udp" },
-  { "sdserver",        { NULL }, 2309,  "tcp" },
-  { "sdserver",        { NULL }, 2309,  "udp" },
-  { "sdclient",        { NULL }, 2310,  "tcp" },
-  { "sdclient",        { NULL }, 2310,  "udp" },
-  { "messageservice",  { NULL }, 2311,  "tcp" },
-  { "messageservice",  { NULL }, 2311,  "udp" },
-  { "wanscaler",       { NULL }, 2312,  "tcp" },
-  { "wanscaler",       { NULL }, 2312,  "udp" },
-  { "iapp",            { NULL }, 2313,  "tcp" },
-  { "iapp",            { NULL }, 2313,  "udp" },
-  { "cr-websystems",   { NULL }, 2314,  "tcp" },
-  { "cr-websystems",   { NULL }, 2314,  "udp" },
-  { "precise-sft",     { NULL }, 2315,  "tcp" },
-  { "precise-sft",     { NULL }, 2315,  "udp" },
-  { "sent-lm",         { NULL }, 2316,  "tcp" },
-  { "sent-lm",         { NULL }, 2316,  "udp" },
-  { "attachmate-g32",  { NULL }, 2317,  "tcp" },
-  { "attachmate-g32",  { NULL }, 2317,  "udp" },
-  { "cadencecontrol",  { NULL }, 2318,  "tcp" },
-  { "cadencecontrol",  { NULL }, 2318,  "udp" },
-  { "infolibria",      { NULL }, 2319,  "tcp" },
-  { "infolibria",      { NULL }, 2319,  "udp" },
-  { "siebel-ns",       { NULL }, 2320,  "tcp" },
-  { "siebel-ns",       { NULL }, 2320,  "udp" },
-  { "rdlap",           { NULL }, 2321,  "tcp" },
-  { "rdlap",           { NULL }, 2321,  "udp" },
-  { "ofsd",            { NULL }, 2322,  "tcp" },
-  { "ofsd",            { NULL }, 2322,  "udp" },
-  { "3d-nfsd",         { NULL }, 2323,  "tcp" },
-  { "3d-nfsd",         { NULL }, 2323,  "udp" },
-  { "cosmocall",       { NULL }, 2324,  "tcp" },
-  { "cosmocall",       { NULL }, 2324,  "udp" },
-  { "ansysli",         { NULL }, 2325,  "tcp" },
-  { "ansysli",         { NULL }, 2325,  "udp" },
-  { "idcp",            { NULL }, 2326,  "tcp" },
-  { "idcp",            { NULL }, 2326,  "udp" },
-  { "xingcsm",         { NULL }, 2327,  "tcp" },
-  { "xingcsm",         { NULL }, 2327,  "udp" },
-  { "netrix-sftm",     { NULL }, 2328,  "tcp" },
-  { "netrix-sftm",     { NULL }, 2328,  "udp" },
-  { "nvd",             { NULL }, 2329,  "tcp" },
-  { "nvd",             { NULL }, 2329,  "udp" },
-  { "tscchat",         { NULL }, 2330,  "tcp" },
-  { "tscchat",         { NULL }, 2330,  "udp" },
-  { "agentview",       { NULL }, 2331,  "tcp" },
-  { "agentview",       { NULL }, 2331,  "udp" },
-  { "rcc-host",        { NULL }, 2332,  "tcp" },
-  { "rcc-host",        { NULL }, 2332,  "udp" },
-  { "snapp",           { NULL }, 2333,  "tcp" },
-  { "snapp",           { NULL }, 2333,  "udp" },
-  { "ace-client",      { NULL }, 2334,  "tcp" },
-  { "ace-client",      { NULL }, 2334,  "udp" },
-  { "ace-proxy",       { NULL }, 2335,  "tcp" },
-  { "ace-proxy",       { NULL }, 2335,  "udp" },
-  { "appleugcontrol",  { NULL }, 2336,  "tcp" },
-  { "appleugcontrol",  { NULL }, 2336,  "udp" },
-  { "ideesrv",         { NULL }, 2337,  "tcp" },
-  { "ideesrv",         { NULL }, 2337,  "udp" },
-  { "norton-lambert",  { NULL }, 2338,  "tcp" },
-  { "norton-lambert",  { NULL }, 2338,  "udp" },
-  { "3com-webview",    { NULL }, 2339,  "tcp" },
-  { "3com-webview",    { NULL }, 2339,  "udp" },
-  { "wrs_registry",    { NULL }, 2340,  "tcp" },
-  { "wrs_registry",    { NULL }, 2340,  "udp" },
-  { "xiostatus",       { NULL }, 2341,  "tcp" },
-  { "xiostatus",       { NULL }, 2341,  "udp" },
-  { "manage-exec",     { NULL }, 2342,  "tcp" },
-  { "manage-exec",     { NULL }, 2342,  "udp" },
-  { "nati-logos",      { NULL }, 2343,  "tcp" },
-  { "nati-logos",      { NULL }, 2343,  "udp" },
-  { "fcmsys",          { NULL }, 2344,  "tcp" },
-  { "fcmsys",          { NULL }, 2344,  "udp" },
-  { "dbm",             { NULL }, 2345,  "tcp" },
-  { "dbm",             { NULL }, 2345,  "udp" },
-  { "redstorm_join",   { NULL }, 2346,  "tcp" },
-  { "redstorm_join",   { NULL }, 2346,  "udp" },
-  { "redstorm_find",   { NULL }, 2347,  "tcp" },
-  { "redstorm_find",   { NULL }, 2347,  "udp" },
-  { "redstorm_info",   { NULL }, 2348,  "tcp" },
-  { "redstorm_info",   { NULL }, 2348,  "udp" },
-  { "redstorm_diag",   { NULL }, 2349,  "tcp" },
-  { "redstorm_diag",   { NULL }, 2349,  "udp" },
-  { "psbserver",       { NULL }, 2350,  "tcp" },
-  { "psbserver",       { NULL }, 2350,  "udp" },
-  { "psrserver",       { NULL }, 2351,  "tcp" },
-  { "psrserver",       { NULL }, 2351,  "udp" },
-  { "pslserver",       { NULL }, 2352,  "tcp" },
-  { "pslserver",       { NULL }, 2352,  "udp" },
-  { "pspserver",       { NULL }, 2353,  "tcp" },
-  { "pspserver",       { NULL }, 2353,  "udp" },
-  { "psprserver",      { NULL }, 2354,  "tcp" },
-  { "psprserver",      { NULL }, 2354,  "udp" },
-  { "psdbserver",      { NULL }, 2355,  "tcp" },
-  { "psdbserver",      { NULL }, 2355,  "udp" },
-  { "gxtelmd",         { NULL }, 2356,  "tcp" },
-  { "gxtelmd",         { NULL }, 2356,  "udp" },
-  { "unihub-server",   { NULL }, 2357,  "tcp" },
-  { "unihub-server",   { NULL }, 2357,  "udp" },
-  { "futrix",          { NULL }, 2358,  "tcp" },
-  { "futrix",          { NULL }, 2358,  "udp" },
-  { "flukeserver",     { NULL }, 2359,  "tcp" },
-  { "flukeserver",     { NULL }, 2359,  "udp" },
-  { "nexstorindltd",   { NULL }, 2360,  "tcp" },
-  { "nexstorindltd",   { NULL }, 2360,  "udp" },
-  { "tl1",             { NULL }, 2361,  "tcp" },
-  { "tl1",             { NULL }, 2361,  "udp" },
-  { "digiman",         { NULL }, 2362,  "tcp" },
-  { "digiman",         { NULL }, 2362,  "udp" },
-  { "mediacntrlnfsd",  { NULL }, 2363,  "tcp" },
-  { "mediacntrlnfsd",  { NULL }, 2363,  "udp" },
-  { "oi-2000",         { NULL }, 2364,  "tcp" },
-  { "oi-2000",         { NULL }, 2364,  "udp" },
-  { "dbref",           { NULL }, 2365,  "tcp" },
-  { "dbref",           { NULL }, 2365,  "udp" },
-  { "qip-login",       { NULL }, 2366,  "tcp" },
-  { "qip-login",       { NULL }, 2366,  "udp" },
-  { "service-ctrl",    { NULL }, 2367,  "tcp" },
-  { "service-ctrl",    { NULL }, 2367,  "udp" },
-  { "opentable",       { NULL }, 2368,  "tcp" },
-  { "opentable",       { NULL }, 2368,  "udp" },
-  { "l3-hbmon",        { NULL }, 2370,  "tcp" },
-  { "l3-hbmon",        { NULL }, 2370,  "udp" },
-  { "worldwire",       { NULL }, 2371,  "tcp" },
-  { "worldwire",       { NULL }, 2371,  "udp" },
-  { "lanmessenger",    { NULL }, 2372,  "tcp" },
-  { "lanmessenger",    { NULL }, 2372,  "udp" },
-  { "remographlm",     { NULL }, 2373,  "tcp" },
-  { "hydra",           { NULL }, 2374,  "tcp" },
-  { "compaq-https",    { NULL }, 2381,  "tcp" },
-  { "compaq-https",    { NULL }, 2381,  "udp" },
-  { "ms-olap3",        { NULL }, 2382,  "tcp" },
-  { "ms-olap3",        { NULL }, 2382,  "udp" },
-  { "ms-olap4",        { NULL }, 2383,  "tcp" },
-  { "ms-olap4",        { NULL }, 2383,  "udp" },
-  { "sd-request",      { NULL }, 2384,  "tcp" },
-  { "sd-capacity",     { NULL }, 2384,  "udp" },
-  { "sd-data",         { NULL }, 2385,  "tcp" },
-  { "sd-data",         { NULL }, 2385,  "udp" },
-  { "virtualtape",     { NULL }, 2386,  "tcp" },
-  { "virtualtape",     { NULL }, 2386,  "udp" },
-  { "vsamredirector",  { NULL }, 2387,  "tcp" },
-  { "vsamredirector",  { NULL }, 2387,  "udp" },
-  { "mynahautostart",  { NULL }, 2388,  "tcp" },
-  { "mynahautostart",  { NULL }, 2388,  "udp" },
-  { "ovsessionmgr",    { NULL }, 2389,  "tcp" },
-  { "ovsessionmgr",    { NULL }, 2389,  "udp" },
-  { "rsmtp",           { NULL }, 2390,  "tcp" },
-  { "rsmtp",           { NULL }, 2390,  "udp" },
-  { "3com-net-mgmt",   { NULL }, 2391,  "tcp" },
-  { "3com-net-mgmt",   { NULL }, 2391,  "udp" },
-  { "tacticalauth",    { NULL }, 2392,  "tcp" },
-  { "tacticalauth",    { NULL }, 2392,  "udp" },
-  { "ms-olap1",        { NULL }, 2393,  "tcp" },
-  { "ms-olap1",        { NULL }, 2393,  "udp" },
-  { "ms-olap2",        { NULL }, 2394,  "tcp" },
-  { "ms-olap2",        { NULL }, 2394,  "udp" },
-  { "lan900_remote",   { NULL }, 2395,  "tcp" },
-  { "lan900_remote",   { NULL }, 2395,  "udp" },
-  { "wusage",          { NULL }, 2396,  "tcp" },
-  { "wusage",          { NULL }, 2396,  "udp" },
-  { "ncl",             { NULL }, 2397,  "tcp" },
-  { "ncl",             { NULL }, 2397,  "udp" },
-  { "orbiter",         { NULL }, 2398,  "tcp" },
-  { "orbiter",         { NULL }, 2398,  "udp" },
-  { "fmpro-fdal",      { NULL }, 2399,  "tcp" },
-  { "fmpro-fdal",      { NULL }, 2399,  "udp" },
-  { "opequus-server",  { NULL }, 2400,  "tcp" },
-  { "opequus-server",  { NULL }, 2400,  "udp" },
-  { "cvspserver",      { NULL }, 2401,  "tcp" },
-  { "cvspserver",      { NULL }, 2401,  "udp" },
-  { "taskmaster2000",  { NULL }, 2402,  "tcp" },
-  { "taskmaster2000",  { NULL }, 2402,  "udp" },
-  { "taskmaster2000",  { NULL }, 2403,  "tcp" },
-  { "taskmaster2000",  { NULL }, 2403,  "udp" },
-  { "iec-104",         { NULL }, 2404,  "tcp" },
-  { "iec-104",         { NULL }, 2404,  "udp" },
-  { "trc-netpoll",     { NULL }, 2405,  "tcp" },
-  { "trc-netpoll",     { NULL }, 2405,  "udp" },
-  { "jediserver",      { NULL }, 2406,  "tcp" },
-  { "jediserver",      { NULL }, 2406,  "udp" },
-  { "orion",           { NULL }, 2407,  "tcp" },
-  { "orion",           { NULL }, 2407,  "udp" },
-  { "optimanet",       { NULL }, 2408,  "tcp" },
-  { "optimanet",       { NULL }, 2408,  "udp" },
-  { "sns-protocol",    { NULL }, 2409,  "tcp" },
-  { "sns-protocol",    { NULL }, 2409,  "udp" },
-  { "vrts-registry",   { NULL }, 2410,  "tcp" },
-  { "vrts-registry",   { NULL }, 2410,  "udp" },
-  { "netwave-ap-mgmt", { NULL }, 2411,  "tcp" },
-  { "netwave-ap-mgmt", { NULL }, 2411,  "udp" },
-  { "cdn",             { NULL }, 2412,  "tcp" },
-  { "cdn",             { NULL }, 2412,  "udp" },
-  { "orion-rmi-reg",   { NULL }, 2413,  "tcp" },
-  { "orion-rmi-reg",   { NULL }, 2413,  "udp" },
-  { "beeyond",         { NULL }, 2414,  "tcp" },
-  { "beeyond",         { NULL }, 2414,  "udp" },
-  { "codima-rtp",      { NULL }, 2415,  "tcp" },
-  { "codima-rtp",      { NULL }, 2415,  "udp" },
-  { "rmtserver",       { NULL }, 2416,  "tcp" },
-  { "rmtserver",       { NULL }, 2416,  "udp" },
-  { "composit-server", { NULL }, 2417,  "tcp" },
-  { "composit-server", { NULL }, 2417,  "udp" },
-  { "cas",             { NULL }, 2418,  "tcp" },
-  { "cas",             { NULL }, 2418,  "udp" },
-  { "attachmate-s2s",  { NULL }, 2419,  "tcp" },
-  { "attachmate-s2s",  { NULL }, 2419,  "udp" },
-  { "dslremote-mgmt",  { NULL }, 2420,  "tcp" },
-  { "dslremote-mgmt",  { NULL }, 2420,  "udp" },
-  { "g-talk",          { NULL }, 2421,  "tcp" },
-  { "g-talk",          { NULL }, 2421,  "udp" },
-  { "crmsbits",        { NULL }, 2422,  "tcp" },
-  { "crmsbits",        { NULL }, 2422,  "udp" },
-  { "rnrp",            { NULL }, 2423,  "tcp" },
-  { "rnrp",            { NULL }, 2423,  "udp" },
-  { "kofax-svr",       { NULL }, 2424,  "tcp" },
-  { "kofax-svr",       { NULL }, 2424,  "udp" },
-  { "fjitsuappmgr",    { NULL }, 2425,  "tcp" },
-  { "fjitsuappmgr",    { NULL }, 2425,  "udp" },
-  { "mgcp-gateway",    { NULL }, 2427,  "tcp" },
-  { "mgcp-gateway",    { NULL }, 2427,  "udp" },
-  { "ott",             { NULL }, 2428,  "tcp" },
-  { "ott",             { NULL }, 2428,  "udp" },
-  { "ft-role",         { NULL }, 2429,  "tcp" },
-  { "ft-role",         { NULL }, 2429,  "udp" },
-  { "venus",           { NULL }, 2430,  "tcp" },
-  { "venus",           { NULL }, 2430,  "udp" },
-  { "venus-se",        { NULL }, 2431,  "tcp" },
-  { "venus-se",        { NULL }, 2431,  "udp" },
-  { "codasrv",         { NULL }, 2432,  "tcp" },
-  { "codasrv",         { NULL }, 2432,  "udp" },
-  { "codasrv-se",      { NULL }, 2433,  "tcp" },
-  { "codasrv-se",      { NULL }, 2433,  "udp" },
-  { "pxc-epmap",       { NULL }, 2434,  "tcp" },
-  { "pxc-epmap",       { NULL }, 2434,  "udp" },
-  { "optilogic",       { NULL }, 2435,  "tcp" },
-  { "optilogic",       { NULL }, 2435,  "udp" },
-  { "topx",            { NULL }, 2436,  "tcp" },
-  { "topx",            { NULL }, 2436,  "udp" },
-  { "unicontrol",      { NULL }, 2437,  "tcp" },
-  { "unicontrol",      { NULL }, 2437,  "udp" },
-  { "msp",             { NULL }, 2438,  "tcp" },
-  { "msp",             { NULL }, 2438,  "udp" },
-  { "sybasedbsynch",   { NULL }, 2439,  "tcp" },
-  { "sybasedbsynch",   { NULL }, 2439,  "udp" },
-  { "spearway",        { NULL }, 2440,  "tcp" },
-  { "spearway",        { NULL }, 2440,  "udp" },
-  { "pvsw-inet",       { NULL }, 2441,  "tcp" },
-  { "pvsw-inet",       { NULL }, 2441,  "udp" },
-  { "netangel",        { NULL }, 2442,  "tcp" },
-  { "netangel",        { NULL }, 2442,  "udp" },
-  { "powerclientcsf",  { NULL }, 2443,  "tcp" },
-  { "powerclientcsf",  { NULL }, 2443,  "udp" },
-  { "btpp2sectrans",   { NULL }, 2444,  "tcp" },
-  { "btpp2sectrans",   { NULL }, 2444,  "udp" },
-  { "dtn1",            { NULL }, 2445,  "tcp" },
-  { "dtn1",            { NULL }, 2445,  "udp" },
-  { "bues_service",    { NULL }, 2446,  "tcp" },
-  { "bues_service",    { NULL }, 2446,  "udp" },
-  { "ovwdb",           { NULL }, 2447,  "tcp" },
-  { "ovwdb",           { NULL }, 2447,  "udp" },
-  { "hpppssvr",        { NULL }, 2448,  "tcp" },
-  { "hpppssvr",        { NULL }, 2448,  "udp" },
-  { "ratl",            { NULL }, 2449,  "tcp" },
-  { "ratl",            { NULL }, 2449,  "udp" },
-  { "netadmin",        { NULL }, 2450,  "tcp" },
-  { "netadmin",        { NULL }, 2450,  "udp" },
-  { "netchat",         { NULL }, 2451,  "tcp" },
-  { "netchat",         { NULL }, 2451,  "udp" },
-  { "snifferclient",   { NULL }, 2452,  "tcp" },
-  { "snifferclient",   { NULL }, 2452,  "udp" },
-  { "madge-ltd",       { NULL }, 2453,  "tcp" },
-  { "madge-ltd",       { NULL }, 2453,  "udp" },
-  { "indx-dds",        { NULL }, 2454,  "tcp" },
-  { "indx-dds",        { NULL }, 2454,  "udp" },
-  { "wago-io-system",  { NULL }, 2455,  "tcp" },
-  { "wago-io-system",  { NULL }, 2455,  "udp" },
-  { "altav-remmgt",    { NULL }, 2456,  "tcp" },
-  { "altav-remmgt",    { NULL }, 2456,  "udp" },
-  { "rapido-ip",       { NULL }, 2457,  "tcp" },
-  { "rapido-ip",       { NULL }, 2457,  "udp" },
-  { "griffin",         { NULL }, 2458,  "tcp" },
-  { "griffin",         { NULL }, 2458,  "udp" },
-  { "community",       { NULL }, 2459,  "tcp" },
-  { "community",       { NULL }, 2459,  "udp" },
-  { "ms-theater",      { NULL }, 2460,  "tcp" },
-  { "ms-theater",      { NULL }, 2460,  "udp" },
-  { "qadmifoper",      { NULL }, 2461,  "tcp" },
-  { "qadmifoper",      { NULL }, 2461,  "udp" },
-  { "qadmifevent",     { NULL }, 2462,  "tcp" },
-  { "qadmifevent",     { NULL }, 2462,  "udp" },
-  { "lsi-raid-mgmt",   { NULL }, 2463,  "tcp" },
-  { "lsi-raid-mgmt",   { NULL }, 2463,  "udp" },
-  { "direcpc-si",      { NULL }, 2464,  "tcp" },
-  { "direcpc-si",      { NULL }, 2464,  "udp" },
-  { "lbm",             { NULL }, 2465,  "tcp" },
-  { "lbm",             { NULL }, 2465,  "udp" },
-  { "lbf",             { NULL }, 2466,  "tcp" },
-  { "lbf",             { NULL }, 2466,  "udp" },
-  { "high-criteria",   { NULL }, 2467,  "tcp" },
-  { "high-criteria",   { NULL }, 2467,  "udp" },
-  { "qip-msgd",        { NULL }, 2468,  "tcp" },
-  { "qip-msgd",        { NULL }, 2468,  "udp" },
-  { "mti-tcs-comm",    { NULL }, 2469,  "tcp" },
-  { "mti-tcs-comm",    { NULL }, 2469,  "udp" },
-  { "taskman-port",    { NULL }, 2470,  "tcp" },
-  { "taskman-port",    { NULL }, 2470,  "udp" },
-  { "seaodbc",         { NULL }, 2471,  "tcp" },
-  { "seaodbc",         { NULL }, 2471,  "udp" },
-  { "c3",              { NULL }, 2472,  "tcp" },
-  { "c3",              { NULL }, 2472,  "udp" },
-  { "aker-cdp",        { NULL }, 2473,  "tcp" },
-  { "aker-cdp",        { NULL }, 2473,  "udp" },
-  { "vitalanalysis",   { NULL }, 2474,  "tcp" },
-  { "vitalanalysis",   { NULL }, 2474,  "udp" },
-  { "ace-server",      { NULL }, 2475,  "tcp" },
-  { "ace-server",      { NULL }, 2475,  "udp" },
-  { "ace-svr-prop",    { NULL }, 2476,  "tcp" },
-  { "ace-svr-prop",    { NULL }, 2476,  "udp" },
-  { "ssm-cvs",         { NULL }, 2477,  "tcp" },
-  { "ssm-cvs",         { NULL }, 2477,  "udp" },
-  { "ssm-cssps",       { NULL }, 2478,  "tcp" },
-  { "ssm-cssps",       { NULL }, 2478,  "udp" },
-  { "ssm-els",         { NULL }, 2479,  "tcp" },
-  { "ssm-els",         { NULL }, 2479,  "udp" },
-  { "powerexchange",   { NULL }, 2480,  "tcp" },
-  { "powerexchange",   { NULL }, 2480,  "udp" },
-  { "giop",            { NULL }, 2481,  "tcp" },
-  { "giop",            { NULL }, 2481,  "udp" },
-  { "giop-ssl",        { NULL }, 2482,  "tcp" },
-  { "giop-ssl",        { NULL }, 2482,  "udp" },
-  { "ttc",             { NULL }, 2483,  "tcp" },
-  { "ttc",             { NULL }, 2483,  "udp" },
-  { "ttc-ssl",         { NULL }, 2484,  "tcp" },
-  { "ttc-ssl",         { NULL }, 2484,  "udp" },
-  { "netobjects1",     { NULL }, 2485,  "tcp" },
-  { "netobjects1",     { NULL }, 2485,  "udp" },
-  { "netobjects2",     { NULL }, 2486,  "tcp" },
-  { "netobjects2",     { NULL }, 2486,  "udp" },
-  { "pns",             { NULL }, 2487,  "tcp" },
-  { "pns",             { NULL }, 2487,  "udp" },
-  { "moy-corp",        { NULL }, 2488,  "tcp" },
-  { "moy-corp",        { NULL }, 2488,  "udp" },
-  { "tsilb",           { NULL }, 2489,  "tcp" },
-  { "tsilb",           { NULL }, 2489,  "udp" },
-  { "qip-qdhcp",       { NULL }, 2490,  "tcp" },
-  { "qip-qdhcp",       { NULL }, 2490,  "udp" },
-  { "conclave-cpp",    { NULL }, 2491,  "tcp" },
-  { "conclave-cpp",    { NULL }, 2491,  "udp" },
-  { "groove",          { NULL }, 2492,  "tcp" },
-  { "groove",          { NULL }, 2492,  "udp" },
-  { "talarian-mqs",    { NULL }, 2493,  "tcp" },
-  { "talarian-mqs",    { NULL }, 2493,  "udp" },
-  { "bmc-ar",          { NULL }, 2494,  "tcp" },
-  { "bmc-ar",          { NULL }, 2494,  "udp" },
-  { "fast-rem-serv",   { NULL }, 2495,  "tcp" },
-  { "fast-rem-serv",   { NULL }, 2495,  "udp" },
-  { "dirgis",          { NULL }, 2496,  "tcp" },
-  { "dirgis",          { NULL }, 2496,  "udp" },
-  { "quaddb",          { NULL }, 2497,  "tcp" },
-  { "quaddb",          { NULL }, 2497,  "udp" },
-  { "odn-castraq",     { NULL }, 2498,  "tcp" },
-  { "odn-castraq",     { NULL }, 2498,  "udp" },
-  { "unicontrol",      { NULL }, 2499,  "tcp" },
-  { "unicontrol",      { NULL }, 2499,  "udp" },
-  { "rtsserv",         { NULL }, 2500,  "tcp" },
-  { "rtsserv",         { NULL }, 2500,  "udp" },
-  { "rtsclient",       { NULL }, 2501,  "tcp" },
-  { "rtsclient",       { NULL }, 2501,  "udp" },
-  { "kentrox-prot",    { NULL }, 2502,  "tcp" },
-  { "kentrox-prot",    { NULL }, 2502,  "udp" },
-  { "nms-dpnss",       { NULL }, 2503,  "tcp" },
-  { "nms-dpnss",       { NULL }, 2503,  "udp" },
-  { "wlbs",            { NULL }, 2504,  "tcp" },
-  { "wlbs",            { NULL }, 2504,  "udp" },
-  { "ppcontrol",       { NULL }, 2505,  "tcp" },
-  { "ppcontrol",       { NULL }, 2505,  "udp" },
-  { "jbroker",         { NULL }, 2506,  "tcp" },
-  { "jbroker",         { NULL }, 2506,  "udp" },
-  { "spock",           { NULL }, 2507,  "tcp" },
-  { "spock",           { NULL }, 2507,  "udp" },
-  { "jdatastore",      { NULL }, 2508,  "tcp" },
-  { "jdatastore",      { NULL }, 2508,  "udp" },
-  { "fjmpss",          { NULL }, 2509,  "tcp" },
-  { "fjmpss",          { NULL }, 2509,  "udp" },
-  { "fjappmgrbulk",    { NULL }, 2510,  "tcp" },
-  { "fjappmgrbulk",    { NULL }, 2510,  "udp" },
-  { "metastorm",       { NULL }, 2511,  "tcp" },
-  { "metastorm",       { NULL }, 2511,  "udp" },
-  { "citrixima",       { NULL }, 2512,  "tcp" },
-  { "citrixima",       { NULL }, 2512,  "udp" },
-  { "citrixadmin",     { NULL }, 2513,  "tcp" },
-  { "citrixadmin",     { NULL }, 2513,  "udp" },
-  { "facsys-ntp",      { NULL }, 2514,  "tcp" },
-  { "facsys-ntp",      { NULL }, 2514,  "udp" },
-  { "facsys-router",   { NULL }, 2515,  "tcp" },
-  { "facsys-router",   { NULL }, 2515,  "udp" },
-  { "maincontrol",     { NULL }, 2516,  "tcp" },
-  { "maincontrol",     { NULL }, 2516,  "udp" },
-  { "call-sig-trans",  { NULL }, 2517,  "tcp" },
-  { "call-sig-trans",  { NULL }, 2517,  "udp" },
-  { "willy",           { NULL }, 2518,  "tcp" },
-  { "willy",           { NULL }, 2518,  "udp" },
-  { "globmsgsvc",      { NULL }, 2519,  "tcp" },
-  { "globmsgsvc",      { NULL }, 2519,  "udp" },
-  { "pvsw",            { NULL }, 2520,  "tcp" },
-  { "pvsw",            { NULL }, 2520,  "udp" },
-  { "adaptecmgr",      { NULL }, 2521,  "tcp" },
-  { "adaptecmgr",      { NULL }, 2521,  "udp" },
-  { "windb",           { NULL }, 2522,  "tcp" },
-  { "windb",           { NULL }, 2522,  "udp" },
-  { "qke-llc-v3",      { NULL }, 2523,  "tcp" },
-  { "qke-llc-v3",      { NULL }, 2523,  "udp" },
-  { "optiwave-lm",     { NULL }, 2524,  "tcp" },
-  { "optiwave-lm",     { NULL }, 2524,  "udp" },
-  { "ms-v-worlds",     { NULL }, 2525,  "tcp" },
-  { "ms-v-worlds",     { NULL }, 2525,  "udp" },
-  { "ema-sent-lm",     { NULL }, 2526,  "tcp" },
-  { "ema-sent-lm",     { NULL }, 2526,  "udp" },
-  { "iqserver",        { NULL }, 2527,  "tcp" },
-  { "iqserver",        { NULL }, 2527,  "udp" },
-  { "ncr_ccl",         { NULL }, 2528,  "tcp" },
-  { "ncr_ccl",         { NULL }, 2528,  "udp" },
-  { "utsftp",          { NULL }, 2529,  "tcp" },
-  { "utsftp",          { NULL }, 2529,  "udp" },
-  { "vrcommerce",      { NULL }, 2530,  "tcp" },
-  { "vrcommerce",      { NULL }, 2530,  "udp" },
-  { "ito-e-gui",       { NULL }, 2531,  "tcp" },
-  { "ito-e-gui",       { NULL }, 2531,  "udp" },
-  { "ovtopmd",         { NULL }, 2532,  "tcp" },
-  { "ovtopmd",         { NULL }, 2532,  "udp" },
-  { "snifferserver",   { NULL }, 2533,  "tcp" },
-  { "snifferserver",   { NULL }, 2533,  "udp" },
-  { "combox-web-acc",  { NULL }, 2534,  "tcp" },
-  { "combox-web-acc",  { NULL }, 2534,  "udp" },
-  { "madcap",          { NULL }, 2535,  "tcp" },
-  { "madcap",          { NULL }, 2535,  "udp" },
-  { "btpp2audctr1",    { NULL }, 2536,  "tcp" },
-  { "btpp2audctr1",    { NULL }, 2536,  "udp" },
-  { "upgrade",         { NULL }, 2537,  "tcp" },
-  { "upgrade",         { NULL }, 2537,  "udp" },
-  { "vnwk-prapi",      { NULL }, 2538,  "tcp" },
-  { "vnwk-prapi",      { NULL }, 2538,  "udp" },
-  { "vsiadmin",        { NULL }, 2539,  "tcp" },
-  { "vsiadmin",        { NULL }, 2539,  "udp" },
-  { "lonworks",        { NULL }, 2540,  "tcp" },
-  { "lonworks",        { NULL }, 2540,  "udp" },
-  { "lonworks2",       { NULL }, 2541,  "tcp" },
-  { "lonworks2",       { NULL }, 2541,  "udp" },
-  { "udrawgraph",      { NULL }, 2542,  "tcp" },
-  { "udrawgraph",      { NULL }, 2542,  "udp" },
-  { "reftek",          { NULL }, 2543,  "tcp" },
-  { "reftek",          { NULL }, 2543,  "udp" },
-  { "novell-zen",      { NULL }, 2544,  "tcp" },
-  { "novell-zen",      { NULL }, 2544,  "udp" },
-  { "sis-emt",         { NULL }, 2545,  "tcp" },
-  { "sis-emt",         { NULL }, 2545,  "udp" },
-  { "vytalvaultbrtp",  { NULL }, 2546,  "tcp" },
-  { "vytalvaultbrtp",  { NULL }, 2546,  "udp" },
-  { "vytalvaultvsmp",  { NULL }, 2547,  "tcp" },
-  { "vytalvaultvsmp",  { NULL }, 2547,  "udp" },
-  { "vytalvaultpipe",  { NULL }, 2548,  "tcp" },
-  { "vytalvaultpipe",  { NULL }, 2548,  "udp" },
-  { "ipass",           { NULL }, 2549,  "tcp" },
-  { "ipass",           { NULL }, 2549,  "udp" },
-  { "ads",             { NULL }, 2550,  "tcp" },
-  { "ads",             { NULL }, 2550,  "udp" },
-  { "isg-uda-server",  { NULL }, 2551,  "tcp" },
-  { "isg-uda-server",  { NULL }, 2551,  "udp" },
-  { "call-logging",    { NULL }, 2552,  "tcp" },
-  { "call-logging",    { NULL }, 2552,  "udp" },
-  { "efidiningport",   { NULL }, 2553,  "tcp" },
-  { "efidiningport",   { NULL }, 2553,  "udp" },
-  { "vcnet-link-v10",  { NULL }, 2554,  "tcp" },
-  { "vcnet-link-v10",  { NULL }, 2554,  "udp" },
-  { "compaq-wcp",      { NULL }, 2555,  "tcp" },
-  { "compaq-wcp",      { NULL }, 2555,  "udp" },
-  { "nicetec-nmsvc",   { NULL }, 2556,  "tcp" },
-  { "nicetec-nmsvc",   { NULL }, 2556,  "udp" },
-  { "nicetec-mgmt",    { NULL }, 2557,  "tcp" },
-  { "nicetec-mgmt",    { NULL }, 2557,  "udp" },
-  { "pclemultimedia",  { NULL }, 2558,  "tcp" },
-  { "pclemultimedia",  { NULL }, 2558,  "udp" },
-  { "lstp",            { NULL }, 2559,  "tcp" },
-  { "lstp",            { NULL }, 2559,  "udp" },
-  { "labrat",          { NULL }, 2560,  "tcp" },
-  { "labrat",          { NULL }, 2560,  "udp" },
-  { "mosaixcc",        { NULL }, 2561,  "tcp" },
-  { "mosaixcc",        { NULL }, 2561,  "udp" },
-  { "delibo",          { NULL }, 2562,  "tcp" },
-  { "delibo",          { NULL }, 2562,  "udp" },
-  { "cti-redwood",     { NULL }, 2563,  "tcp" },
-  { "cti-redwood",     { NULL }, 2563,  "udp" },
-  { "hp-3000-telnet",  { NULL }, 2564,  "tcp" },
-  { "coord-svr",       { NULL }, 2565,  "tcp" },
-  { "coord-svr",       { NULL }, 2565,  "udp" },
-  { "pcs-pcw",         { NULL }, 2566,  "tcp" },
-  { "pcs-pcw",         { NULL }, 2566,  "udp" },
-  { "clp",             { NULL }, 2567,  "tcp" },
-  { "clp",             { NULL }, 2567,  "udp" },
-  { "spamtrap",        { NULL }, 2568,  "tcp" },
-  { "spamtrap",        { NULL }, 2568,  "udp" },
-  { "sonuscallsig",    { NULL }, 2569,  "tcp" },
-  { "sonuscallsig",    { NULL }, 2569,  "udp" },
-  { "hs-port",         { NULL }, 2570,  "tcp" },
-  { "hs-port",         { NULL }, 2570,  "udp" },
-  { "cecsvc",          { NULL }, 2571,  "tcp" },
-  { "cecsvc",          { NULL }, 2571,  "udp" },
-  { "ibp",             { NULL }, 2572,  "tcp" },
-  { "ibp",             { NULL }, 2572,  "udp" },
-  { "trustestablish",  { NULL }, 2573,  "tcp" },
-  { "trustestablish",  { NULL }, 2573,  "udp" },
-  { "blockade-bpsp",   { NULL }, 2574,  "tcp" },
-  { "blockade-bpsp",   { NULL }, 2574,  "udp" },
-  { "hl7",             { NULL }, 2575,  "tcp" },
-  { "hl7",             { NULL }, 2575,  "udp" },
-  { "tclprodebugger",  { NULL }, 2576,  "tcp" },
-  { "tclprodebugger",  { NULL }, 2576,  "udp" },
-  { "scipticslsrvr",   { NULL }, 2577,  "tcp" },
-  { "scipticslsrvr",   { NULL }, 2577,  "udp" },
-  { "rvs-isdn-dcp",    { NULL }, 2578,  "tcp" },
-  { "rvs-isdn-dcp",    { NULL }, 2578,  "udp" },
-  { "mpfoncl",         { NULL }, 2579,  "tcp" },
-  { "mpfoncl",         { NULL }, 2579,  "udp" },
-  { "tributary",       { NULL }, 2580,  "tcp" },
-  { "tributary",       { NULL }, 2580,  "udp" },
-  { "argis-te",        { NULL }, 2581,  "tcp" },
-  { "argis-te",        { NULL }, 2581,  "udp" },
-  { "argis-ds",        { NULL }, 2582,  "tcp" },
-  { "argis-ds",        { NULL }, 2582,  "udp" },
-  { "mon",             { NULL }, 2583,  "tcp" },
-  { "mon",             { NULL }, 2583,  "udp" },
-  { "cyaserv",         { NULL }, 2584,  "tcp" },
-  { "cyaserv",         { NULL }, 2584,  "udp" },
-  { "netx-server",     { NULL }, 2585,  "tcp" },
-  { "netx-server",     { NULL }, 2585,  "udp" },
-  { "netx-agent",      { NULL }, 2586,  "tcp" },
-  { "netx-agent",      { NULL }, 2586,  "udp" },
-  { "masc",            { NULL }, 2587,  "tcp" },
-  { "masc",            { NULL }, 2587,  "udp" },
-  { "privilege",       { NULL }, 2588,  "tcp" },
-  { "privilege",       { NULL }, 2588,  "udp" },
-  { "quartus-tcl",     { NULL }, 2589,  "tcp" },
-  { "quartus-tcl",     { NULL }, 2589,  "udp" },
-  { "idotdist",        { NULL }, 2590,  "tcp" },
-  { "idotdist",        { NULL }, 2590,  "udp" },
-  { "maytagshuffle",   { NULL }, 2591,  "tcp" },
-  { "maytagshuffle",   { NULL }, 2591,  "udp" },
-  { "netrek",          { NULL }, 2592,  "tcp" },
-  { "netrek",          { NULL }, 2592,  "udp" },
-  { "mns-mail",        { NULL }, 2593,  "tcp" },
-  { "mns-mail",        { NULL }, 2593,  "udp" },
-  { "dts",             { NULL }, 2594,  "tcp" },
-  { "dts",             { NULL }, 2594,  "udp" },
-  { "worldfusion1",    { NULL }, 2595,  "tcp" },
-  { "worldfusion1",    { NULL }, 2595,  "udp" },
-  { "worldfusion2",    { NULL }, 2596,  "tcp" },
-  { "worldfusion2",    { NULL }, 2596,  "udp" },
-  { "homesteadglory",  { NULL }, 2597,  "tcp" },
-  { "homesteadglory",  { NULL }, 2597,  "udp" },
-  { "citriximaclient", { NULL }, 2598,  "tcp" },
-  { "citriximaclient", { NULL }, 2598,  "udp" },
-  { "snapd",           { NULL }, 2599,  "tcp" },
-  { "snapd",           { NULL }, 2599,  "udp" },
-  { "hpstgmgr",        { NULL }, 2600,  "tcp" },
-  { "hpstgmgr",        { NULL }, 2600,  "udp" },
-  { "discp-client",    { NULL }, 2601,  "tcp" },
-  { "discp-client",    { NULL }, 2601,  "udp" },
-  { "discp-server",    { NULL }, 2602,  "tcp" },
-  { "discp-server",    { NULL }, 2602,  "udp" },
-  { "servicemeter",    { NULL }, 2603,  "tcp" },
-  { "servicemeter",    { NULL }, 2603,  "udp" },
-  { "nsc-ccs",         { NULL }, 2604,  "tcp" },
-  { "nsc-ccs",         { NULL }, 2604,  "udp" },
-  { "nsc-posa",        { NULL }, 2605,  "tcp" },
-  { "nsc-posa",        { NULL }, 2605,  "udp" },
-  { "netmon",          { NULL }, 2606,  "tcp" },
-  { "netmon",          { NULL }, 2606,  "udp" },
-  { "connection",      { NULL }, 2607,  "tcp" },
-  { "connection",      { NULL }, 2607,  "udp" },
-  { "wag-service",     { NULL }, 2608,  "tcp" },
-  { "wag-service",     { NULL }, 2608,  "udp" },
-  { "system-monitor",  { NULL }, 2609,  "tcp" },
-  { "system-monitor",  { NULL }, 2609,  "udp" },
-  { "versa-tek",       { NULL }, 2610,  "tcp" },
-  { "versa-tek",       { NULL }, 2610,  "udp" },
-  { "lionhead",        { NULL }, 2611,  "tcp" },
-  { "lionhead",        { NULL }, 2611,  "udp" },
-  { "qpasa-agent",     { NULL }, 2612,  "tcp" },
-  { "qpasa-agent",     { NULL }, 2612,  "udp" },
-  { "smntubootstrap",  { NULL }, 2613,  "tcp" },
-  { "smntubootstrap",  { NULL }, 2613,  "udp" },
-  { "neveroffline",    { NULL }, 2614,  "tcp" },
-  { "neveroffline",    { NULL }, 2614,  "udp" },
-  { "firepower",       { NULL }, 2615,  "tcp" },
-  { "firepower",       { NULL }, 2615,  "udp" },
-  { "appswitch-emp",   { NULL }, 2616,  "tcp" },
-  { "appswitch-emp",   { NULL }, 2616,  "udp" },
-  { "cmadmin",         { NULL }, 2617,  "tcp" },
-  { "cmadmin",         { NULL }, 2617,  "udp" },
-  { "priority-e-com",  { NULL }, 2618,  "tcp" },
-  { "priority-e-com",  { NULL }, 2618,  "udp" },
-  { "bruce",           { NULL }, 2619,  "tcp" },
-  { "bruce",           { NULL }, 2619,  "udp" },
-  { "lpsrecommender",  { NULL }, 2620,  "tcp" },
-  { "lpsrecommender",  { NULL }, 2620,  "udp" },
-  { "miles-apart",     { NULL }, 2621,  "tcp" },
-  { "miles-apart",     { NULL }, 2621,  "udp" },
-  { "metricadbc",      { NULL }, 2622,  "tcp" },
-  { "metricadbc",      { NULL }, 2622,  "udp" },
-  { "lmdp",            { NULL }, 2623,  "tcp" },
-  { "lmdp",            { NULL }, 2623,  "udp" },
-  { "aria",            { NULL }, 2624,  "tcp" },
-  { "aria",            { NULL }, 2624,  "udp" },
-  { "blwnkl-port",     { NULL }, 2625,  "tcp" },
-  { "blwnkl-port",     { NULL }, 2625,  "udp" },
-  { "gbjd816",         { NULL }, 2626,  "tcp" },
-  { "gbjd816",         { NULL }, 2626,  "udp" },
-  { "moshebeeri",      { NULL }, 2627,  "tcp" },
-  { "moshebeeri",      { NULL }, 2627,  "udp" },
-  { "dict",            { NULL }, 2628,  "tcp" },
-  { "dict",            { NULL }, 2628,  "udp" },
-  { "sitaraserver",    { NULL }, 2629,  "tcp" },
-  { "sitaraserver",    { NULL }, 2629,  "udp" },
-  { "sitaramgmt",      { NULL }, 2630,  "tcp" },
-  { "sitaramgmt",      { NULL }, 2630,  "udp" },
-  { "sitaradir",       { NULL }, 2631,  "tcp" },
-  { "sitaradir",       { NULL }, 2631,  "udp" },
-  { "irdg-post",       { NULL }, 2632,  "tcp" },
-  { "irdg-post",       { NULL }, 2632,  "udp" },
-  { "interintelli",    { NULL }, 2633,  "tcp" },
-  { "interintelli",    { NULL }, 2633,  "udp" },
-  { "pk-electronics",  { NULL }, 2634,  "tcp" },
-  { "pk-electronics",  { NULL }, 2634,  "udp" },
-  { "backburner",      { NULL }, 2635,  "tcp" },
-  { "backburner",      { NULL }, 2635,  "udp" },
-  { "solve",           { NULL }, 2636,  "tcp" },
-  { "solve",           { NULL }, 2636,  "udp" },
-  { "imdocsvc",        { NULL }, 2637,  "tcp" },
-  { "imdocsvc",        { NULL }, 2637,  "udp" },
-  { "sybaseanywhere",  { NULL }, 2638,  "tcp" },
-  { "sybaseanywhere",  { NULL }, 2638,  "udp" },
-  { "aminet",          { NULL }, 2639,  "tcp" },
-  { "aminet",          { NULL }, 2639,  "udp" },
-  { "sai_sentlm",      { NULL }, 2640,  "tcp" },
-  { "sai_sentlm",      { NULL }, 2640,  "udp" },
-  { "hdl-srv",         { NULL }, 2641,  "tcp" },
-  { "hdl-srv",         { NULL }, 2641,  "udp" },
-  { "tragic",          { NULL }, 2642,  "tcp" },
-  { "tragic",          { NULL }, 2642,  "udp" },
-  { "gte-samp",        { NULL }, 2643,  "tcp" },
-  { "gte-samp",        { NULL }, 2643,  "udp" },
-  { "travsoft-ipx-t",  { NULL }, 2644,  "tcp" },
-  { "travsoft-ipx-t",  { NULL }, 2644,  "udp" },
-  { "novell-ipx-cmd",  { NULL }, 2645,  "tcp" },
-  { "novell-ipx-cmd",  { NULL }, 2645,  "udp" },
-  { "and-lm",          { NULL }, 2646,  "tcp" },
-  { "and-lm",          { NULL }, 2646,  "udp" },
-  { "syncserver",      { NULL }, 2647,  "tcp" },
-  { "syncserver",      { NULL }, 2647,  "udp" },
-  { "upsnotifyprot",   { NULL }, 2648,  "tcp" },
-  { "upsnotifyprot",   { NULL }, 2648,  "udp" },
-  { "vpsipport",       { NULL }, 2649,  "tcp" },
-  { "vpsipport",       { NULL }, 2649,  "udp" },
-  { "eristwoguns",     { NULL }, 2650,  "tcp" },
-  { "eristwoguns",     { NULL }, 2650,  "udp" },
-  { "ebinsite",        { NULL }, 2651,  "tcp" },
-  { "ebinsite",        { NULL }, 2651,  "udp" },
-  { "interpathpanel",  { NULL }, 2652,  "tcp" },
-  { "interpathpanel",  { NULL }, 2652,  "udp" },
-  { "sonus",           { NULL }, 2653,  "tcp" },
-  { "sonus",           { NULL }, 2653,  "udp" },
-  { "corel_vncadmin",  { NULL }, 2654,  "tcp" },
-  { "corel_vncadmin",  { NULL }, 2654,  "udp" },
-  { "unglue",          { NULL }, 2655,  "tcp" },
-  { "unglue",          { NULL }, 2655,  "udp" },
-  { "kana",            { NULL }, 2656,  "tcp" },
-  { "kana",            { NULL }, 2656,  "udp" },
-  { "sns-dispatcher",  { NULL }, 2657,  "tcp" },
-  { "sns-dispatcher",  { NULL }, 2657,  "udp" },
-  { "sns-admin",       { NULL }, 2658,  "tcp" },
-  { "sns-admin",       { NULL }, 2658,  "udp" },
-  { "sns-query",       { NULL }, 2659,  "tcp" },
-  { "sns-query",       { NULL }, 2659,  "udp" },
-  { "gcmonitor",       { NULL }, 2660,  "tcp" },
-  { "gcmonitor",       { NULL }, 2660,  "udp" },
-  { "olhost",          { NULL }, 2661,  "tcp" },
-  { "olhost",          { NULL }, 2661,  "udp" },
-  { "bintec-capi",     { NULL }, 2662,  "tcp" },
-  { "bintec-capi",     { NULL }, 2662,  "udp" },
-  { "bintec-tapi",     { NULL }, 2663,  "tcp" },
-  { "bintec-tapi",     { NULL }, 2663,  "udp" },
-  { "patrol-mq-gm",    { NULL }, 2664,  "tcp" },
-  { "patrol-mq-gm",    { NULL }, 2664,  "udp" },
-  { "patrol-mq-nm",    { NULL }, 2665,  "tcp" },
-  { "patrol-mq-nm",    { NULL }, 2665,  "udp" },
-  { "extensis",        { NULL }, 2666,  "tcp" },
-  { "extensis",        { NULL }, 2666,  "udp" },
-  { "alarm-clock-s",   { NULL }, 2667,  "tcp" },
-  { "alarm-clock-s",   { NULL }, 2667,  "udp" },
-  { "alarm-clock-c",   { NULL }, 2668,  "tcp" },
-  { "alarm-clock-c",   { NULL }, 2668,  "udp" },
-  { "toad",            { NULL }, 2669,  "tcp" },
-  { "toad",            { NULL }, 2669,  "udp" },
-  { "tve-announce",    { NULL }, 2670,  "tcp" },
-  { "tve-announce",    { NULL }, 2670,  "udp" },
-  { "newlixreg",       { NULL }, 2671,  "tcp" },
-  { "newlixreg",       { NULL }, 2671,  "udp" },
-  { "nhserver",        { NULL }, 2672,  "tcp" },
-  { "nhserver",        { NULL }, 2672,  "udp" },
-  { "firstcall42",     { NULL }, 2673,  "tcp" },
-  { "firstcall42",     { NULL }, 2673,  "udp" },
-  { "ewnn",            { NULL }, 2674,  "tcp" },
-  { "ewnn",            { NULL }, 2674,  "udp" },
-  { "ttc-etap",        { NULL }, 2675,  "tcp" },
-  { "ttc-etap",        { NULL }, 2675,  "udp" },
-  { "simslink",        { NULL }, 2676,  "tcp" },
-  { "simslink",        { NULL }, 2676,  "udp" },
-  { "gadgetgate1way",  { NULL }, 2677,  "tcp" },
-  { "gadgetgate1way",  { NULL }, 2677,  "udp" },
-  { "gadgetgate2way",  { NULL }, 2678,  "tcp" },
-  { "gadgetgate2way",  { NULL }, 2678,  "udp" },
-  { "syncserverssl",   { NULL }, 2679,  "tcp" },
-  { "syncserverssl",   { NULL }, 2679,  "udp" },
-  { "pxc-sapxom",      { NULL }, 2680,  "tcp" },
-  { "pxc-sapxom",      { NULL }, 2680,  "udp" },
-  { "mpnjsomb",        { NULL }, 2681,  "tcp" },
-  { "mpnjsomb",        { NULL }, 2681,  "udp" },
-  { "ncdloadbalance",  { NULL }, 2683,  "tcp" },
-  { "ncdloadbalance",  { NULL }, 2683,  "udp" },
-  { "mpnjsosv",        { NULL }, 2684,  "tcp" },
-  { "mpnjsosv",        { NULL }, 2684,  "udp" },
-  { "mpnjsocl",        { NULL }, 2685,  "tcp" },
-  { "mpnjsocl",        { NULL }, 2685,  "udp" },
-  { "mpnjsomg",        { NULL }, 2686,  "tcp" },
-  { "mpnjsomg",        { NULL }, 2686,  "udp" },
-  { "pq-lic-mgmt",     { NULL }, 2687,  "tcp" },
-  { "pq-lic-mgmt",     { NULL }, 2687,  "udp" },
-  { "md-cg-http",      { NULL }, 2688,  "tcp" },
-  { "md-cg-http",      { NULL }, 2688,  "udp" },
-  { "fastlynx",        { NULL }, 2689,  "tcp" },
-  { "fastlynx",        { NULL }, 2689,  "udp" },
-  { "hp-nnm-data",     { NULL }, 2690,  "tcp" },
-  { "hp-nnm-data",     { NULL }, 2690,  "udp" },
-  { "itinternet",      { NULL }, 2691,  "tcp" },
-  { "itinternet",      { NULL }, 2691,  "udp" },
-  { "admins-lms",      { NULL }, 2692,  "tcp" },
-  { "admins-lms",      { NULL }, 2692,  "udp" },
-  { "pwrsevent",       { NULL }, 2694,  "tcp" },
-  { "pwrsevent",       { NULL }, 2694,  "udp" },
-  { "vspread",         { NULL }, 2695,  "tcp" },
-  { "vspread",         { NULL }, 2695,  "udp" },
-  { "unifyadmin",      { NULL }, 2696,  "tcp" },
-  { "unifyadmin",      { NULL }, 2696,  "udp" },
-  { "oce-snmp-trap",   { NULL }, 2697,  "tcp" },
-  { "oce-snmp-trap",   { NULL }, 2697,  "udp" },
-  { "mck-ivpip",       { NULL }, 2698,  "tcp" },
-  { "mck-ivpip",       { NULL }, 2698,  "udp" },
-  { "csoft-plusclnt",  { NULL }, 2699,  "tcp" },
-  { "csoft-plusclnt",  { NULL }, 2699,  "udp" },
-  { "tqdata",          { NULL }, 2700,  "tcp" },
-  { "tqdata",          { NULL }, 2700,  "udp" },
-  { "sms-rcinfo",      { NULL }, 2701,  "tcp" },
-  { "sms-rcinfo",      { NULL }, 2701,  "udp" },
-  { "sms-xfer",        { NULL }, 2702,  "tcp" },
-  { "sms-xfer",        { NULL }, 2702,  "udp" },
-  { "sms-chat",        { NULL }, 2703,  "tcp" },
-  { "sms-chat",        { NULL }, 2703,  "udp" },
-  { "sms-remctrl",     { NULL }, 2704,  "tcp" },
-  { "sms-remctrl",     { NULL }, 2704,  "udp" },
-  { "sds-admin",       { NULL }, 2705,  "tcp" },
-  { "sds-admin",       { NULL }, 2705,  "udp" },
-  { "ncdmirroring",    { NULL }, 2706,  "tcp" },
-  { "ncdmirroring",    { NULL }, 2706,  "udp" },
-  { "emcsymapiport",   { NULL }, 2707,  "tcp" },
-  { "emcsymapiport",   { NULL }, 2707,  "udp" },
-  { "banyan-net",      { NULL }, 2708,  "tcp" },
-  { "banyan-net",      { NULL }, 2708,  "udp" },
-  { "supermon",        { NULL }, 2709,  "tcp" },
-  { "supermon",        { NULL }, 2709,  "udp" },
-  { "sso-service",     { NULL }, 2710,  "tcp" },
-  { "sso-service",     { NULL }, 2710,  "udp" },
-  { "sso-control",     { NULL }, 2711,  "tcp" },
-  { "sso-control",     { NULL }, 2711,  "udp" },
-  { "aocp",            { NULL }, 2712,  "tcp" },
-  { "aocp",            { NULL }, 2712,  "udp" },
-  { "raventbs",        { NULL }, 2713,  "tcp" },
-  { "raventbs",        { NULL }, 2713,  "udp" },
-  { "raventdm",        { NULL }, 2714,  "tcp" },
-  { "raventdm",        { NULL }, 2714,  "udp" },
-  { "hpstgmgr2",       { NULL }, 2715,  "tcp" },
-  { "hpstgmgr2",       { NULL }, 2715,  "udp" },
-  { "inova-ip-disco",  { NULL }, 2716,  "tcp" },
-  { "inova-ip-disco",  { NULL }, 2716,  "udp" },
-  { "pn-requester",    { NULL }, 2717,  "tcp" },
-  { "pn-requester",    { NULL }, 2717,  "udp" },
-  { "pn-requester2",   { NULL }, 2718,  "tcp" },
-  { "pn-requester2",   { NULL }, 2718,  "udp" },
-  { "scan-change",     { NULL }, 2719,  "tcp" },
-  { "scan-change",     { NULL }, 2719,  "udp" },
-  { "wkars",           { NULL }, 2720,  "tcp" },
-  { "wkars",           { NULL }, 2720,  "udp" },
-  { "smart-diagnose",  { NULL }, 2721,  "tcp" },
-  { "smart-diagnose",  { NULL }, 2721,  "udp" },
-  { "proactivesrvr",   { NULL }, 2722,  "tcp" },
-  { "proactivesrvr",   { NULL }, 2722,  "udp" },
-  { "watchdog-nt",     { NULL }, 2723,  "tcp" },
-  { "watchdog-nt",     { NULL }, 2723,  "udp" },
-  { "qotps",           { NULL }, 2724,  "tcp" },
-  { "qotps",           { NULL }, 2724,  "udp" },
-  { "msolap-ptp2",     { NULL }, 2725,  "tcp" },
-  { "msolap-ptp2",     { NULL }, 2725,  "udp" },
-  { "tams",            { NULL }, 2726,  "tcp" },
-  { "tams",            { NULL }, 2726,  "udp" },
-  { "mgcp-callagent",  { NULL }, 2727,  "tcp" },
-  { "mgcp-callagent",  { NULL }, 2727,  "udp" },
-  { "sqdr",            { NULL }, 2728,  "tcp" },
-  { "sqdr",            { NULL }, 2728,  "udp" },
-  { "tcim-control",    { NULL }, 2729,  "tcp" },
-  { "tcim-control",    { NULL }, 2729,  "udp" },
-  { "nec-raidplus",    { NULL }, 2730,  "tcp" },
-  { "nec-raidplus",    { NULL }, 2730,  "udp" },
-  { "fyre-messanger",  { NULL }, 2731,  "tcp" },
-  { "fyre-messanger",  { NULL }, 2731,  "udp" },
-  { "g5m",             { NULL }, 2732,  "tcp" },
-  { "g5m",             { NULL }, 2732,  "udp" },
-  { "signet-ctf",      { NULL }, 2733,  "tcp" },
-  { "signet-ctf",      { NULL }, 2733,  "udp" },
-  { "ccs-software",    { NULL }, 2734,  "tcp" },
-  { "ccs-software",    { NULL }, 2734,  "udp" },
-  { "netiq-mc",        { NULL }, 2735,  "tcp" },
-  { "netiq-mc",        { NULL }, 2735,  "udp" },
-  { "radwiz-nms-srv",  { NULL }, 2736,  "tcp" },
-  { "radwiz-nms-srv",  { NULL }, 2736,  "udp" },
-  { "srp-feedback",    { NULL }, 2737,  "tcp" },
-  { "srp-feedback",    { NULL }, 2737,  "udp" },
-  { "ndl-tcp-ois-gw",  { NULL }, 2738,  "tcp" },
-  { "ndl-tcp-ois-gw",  { NULL }, 2738,  "udp" },
-  { "tn-timing",       { NULL }, 2739,  "tcp" },
-  { "tn-timing",       { NULL }, 2739,  "udp" },
-  { "alarm",           { NULL }, 2740,  "tcp" },
-  { "alarm",           { NULL }, 2740,  "udp" },
-  { "tsb",             { NULL }, 2741,  "tcp" },
-  { "tsb",             { NULL }, 2741,  "udp" },
-  { "tsb2",            { NULL }, 2742,  "tcp" },
-  { "tsb2",            { NULL }, 2742,  "udp" },
-  { "murx",            { NULL }, 2743,  "tcp" },
-  { "murx",            { NULL }, 2743,  "udp" },
-  { "honyaku",         { NULL }, 2744,  "tcp" },
-  { "honyaku",         { NULL }, 2744,  "udp" },
-  { "urbisnet",        { NULL }, 2745,  "tcp" },
-  { "urbisnet",        { NULL }, 2745,  "udp" },
-  { "cpudpencap",      { NULL }, 2746,  "tcp" },
-  { "cpudpencap",      { NULL }, 2746,  "udp" },
-  { "fjippol-swrly",   { NULL }, 2747,  "tcp" },
-  { "fjippol-swrly",   { NULL }, 2747,  "udp" },
-  { "fjippol-polsvr",  { NULL }, 2748,  "tcp" },
-  { "fjippol-polsvr",  { NULL }, 2748,  "udp" },
-  { "fjippol-cnsl",    { NULL }, 2749,  "tcp" },
-  { "fjippol-cnsl",    { NULL }, 2749,  "udp" },
-  { "fjippol-port1",   { NULL }, 2750,  "tcp" },
-  { "fjippol-port1",   { NULL }, 2750,  "udp" },
-  { "fjippol-port2",   { NULL }, 2751,  "tcp" },
-  { "fjippol-port2",   { NULL }, 2751,  "udp" },
-  { "rsisysaccess",    { NULL }, 2752,  "tcp" },
-  { "rsisysaccess",    { NULL }, 2752,  "udp" },
-  { "de-spot",         { NULL }, 2753,  "tcp" },
-  { "de-spot",         { NULL }, 2753,  "udp" },
-  { "apollo-cc",       { NULL }, 2754,  "tcp" },
-  { "apollo-cc",       { NULL }, 2754,  "udp" },
-  { "expresspay",      { NULL }, 2755,  "tcp" },
-  { "expresspay",      { NULL }, 2755,  "udp" },
-  { "simplement-tie",  { NULL }, 2756,  "tcp" },
-  { "simplement-tie",  { NULL }, 2756,  "udp" },
-  { "cnrp",            { NULL }, 2757,  "tcp" },
-  { "cnrp",            { NULL }, 2757,  "udp" },
-  { "apollo-status",   { NULL }, 2758,  "tcp" },
-  { "apollo-status",   { NULL }, 2758,  "udp" },
-  { "apollo-gms",      { NULL }, 2759,  "tcp" },
-  { "apollo-gms",      { NULL }, 2759,  "udp" },
-  { "sabams",          { NULL }, 2760,  "tcp" },
-  { "sabams",          { NULL }, 2760,  "udp" },
-  { "dicom-iscl",      { NULL }, 2761,  "tcp" },
-  { "dicom-iscl",      { NULL }, 2761,  "udp" },
-  { "dicom-tls",       { NULL }, 2762,  "tcp" },
-  { "dicom-tls",       { NULL }, 2762,  "udp" },
-  { "desktop-dna",     { NULL }, 2763,  "tcp" },
-  { "desktop-dna",     { NULL }, 2763,  "udp" },
-  { "data-insurance",  { NULL }, 2764,  "tcp" },
-  { "data-insurance",  { NULL }, 2764,  "udp" },
-  { "qip-audup",       { NULL }, 2765,  "tcp" },
-  { "qip-audup",       { NULL }, 2765,  "udp" },
-  { "compaq-scp",      { NULL }, 2766,  "tcp" },
-  { "compaq-scp",      { NULL }, 2766,  "udp" },
-  { "uadtc",           { NULL }, 2767,  "tcp" },
-  { "uadtc",           { NULL }, 2767,  "udp" },
-  { "uacs",            { NULL }, 2768,  "tcp" },
-  { "uacs",            { NULL }, 2768,  "udp" },
-  { "exce",            { NULL }, 2769,  "tcp" },
-  { "exce",            { NULL }, 2769,  "udp" },
-  { "veronica",        { NULL }, 2770,  "tcp" },
-  { "veronica",        { NULL }, 2770,  "udp" },
-  { "vergencecm",      { NULL }, 2771,  "tcp" },
-  { "vergencecm",      { NULL }, 2771,  "udp" },
-  { "auris",           { NULL }, 2772,  "tcp" },
-  { "auris",           { NULL }, 2772,  "udp" },
-  { "rbakcup1",        { NULL }, 2773,  "tcp" },
-  { "rbakcup1",        { NULL }, 2773,  "udp" },
-  { "rbakcup2",        { NULL }, 2774,  "tcp" },
-  { "rbakcup2",        { NULL }, 2774,  "udp" },
-  { "smpp",            { NULL }, 2775,  "tcp" },
-  { "smpp",            { NULL }, 2775,  "udp" },
-  { "ridgeway1",       { NULL }, 2776,  "tcp" },
-  { "ridgeway1",       { NULL }, 2776,  "udp" },
-  { "ridgeway2",       { NULL }, 2777,  "tcp" },
-  { "ridgeway2",       { NULL }, 2777,  "udp" },
-  { "gwen-sonya",      { NULL }, 2778,  "tcp" },
-  { "gwen-sonya",      { NULL }, 2778,  "udp" },
-  { "lbc-sync",        { NULL }, 2779,  "tcp" },
-  { "lbc-sync",        { NULL }, 2779,  "udp" },
-  { "lbc-control",     { NULL }, 2780,  "tcp" },
-  { "lbc-control",     { NULL }, 2780,  "udp" },
-  { "whosells",        { NULL }, 2781,  "tcp" },
-  { "whosells",        { NULL }, 2781,  "udp" },
-  { "everydayrc",      { NULL }, 2782,  "tcp" },
-  { "everydayrc",      { NULL }, 2782,  "udp" },
-  { "aises",           { NULL }, 2783,  "tcp" },
-  { "aises",           { NULL }, 2783,  "udp" },
-  { "www-dev",         { NULL }, 2784,  "tcp" },
-  { "www-dev",         { NULL }, 2784,  "udp" },
-  { "aic-np",          { NULL }, 2785,  "tcp" },
-  { "aic-np",          { NULL }, 2785,  "udp" },
-  { "aic-oncrpc",      { NULL }, 2786,  "tcp" },
-  { "aic-oncrpc",      { NULL }, 2786,  "udp" },
-  { "piccolo",         { NULL }, 2787,  "tcp" },
-  { "piccolo",         { NULL }, 2787,  "udp" },
-  { "fryeserv",        { NULL }, 2788,  "tcp" },
-  { "fryeserv",        { NULL }, 2788,  "udp" },
-  { "media-agent",     { NULL }, 2789,  "tcp" },
-  { "media-agent",     { NULL }, 2789,  "udp" },
-  { "plgproxy",        { NULL }, 2790,  "tcp" },
-  { "plgproxy",        { NULL }, 2790,  "udp" },
-  { "mtport-regist",   { NULL }, 2791,  "tcp" },
-  { "mtport-regist",   { NULL }, 2791,  "udp" },
-  { "f5-globalsite",   { NULL }, 2792,  "tcp" },
-  { "f5-globalsite",   { NULL }, 2792,  "udp" },
-  { "initlsmsad",      { NULL }, 2793,  "tcp" },
-  { "initlsmsad",      { NULL }, 2793,  "udp" },
-  { "livestats",       { NULL }, 2795,  "tcp" },
-  { "livestats",       { NULL }, 2795,  "udp" },
-  { "ac-tech",         { NULL }, 2796,  "tcp" },
-  { "ac-tech",         { NULL }, 2796,  "udp" },
-  { "esp-encap",       { NULL }, 2797,  "tcp" },
-  { "esp-encap",       { NULL }, 2797,  "udp" },
-  { "tmesis-upshot",   { NULL }, 2798,  "tcp" },
-  { "tmesis-upshot",   { NULL }, 2798,  "udp" },
-  { "icon-discover",   { NULL }, 2799,  "tcp" },
-  { "icon-discover",   { NULL }, 2799,  "udp" },
-  { "acc-raid",        { NULL }, 2800,  "tcp" },
-  { "acc-raid",        { NULL }, 2800,  "udp" },
-  { "igcp",            { NULL }, 2801,  "tcp" },
-  { "igcp",            { NULL }, 2801,  "udp" },
-  { "veritas-tcp1",    { NULL }, 2802,  "tcp" },
-  { "veritas-udp1",    { NULL }, 2802,  "udp" },
-  { "btprjctrl",       { NULL }, 2803,  "tcp" },
-  { "btprjctrl",       { NULL }, 2803,  "udp" },
-  { "dvr-esm",         { NULL }, 2804,  "tcp" },
-  { "dvr-esm",         { NULL }, 2804,  "udp" },
-  { "wta-wsp-s",       { NULL }, 2805,  "tcp" },
-  { "wta-wsp-s",       { NULL }, 2805,  "udp" },
-  { "cspuni",          { NULL }, 2806,  "tcp" },
-  { "cspuni",          { NULL }, 2806,  "udp" },
-  { "cspmulti",        { NULL }, 2807,  "tcp" },
-  { "cspmulti",        { NULL }, 2807,  "udp" },
-  { "j-lan-p",         { NULL }, 2808,  "tcp" },
-  { "j-lan-p",         { NULL }, 2808,  "udp" },
-  { "corbaloc",        { NULL }, 2809,  "tcp" },
-  { "corbaloc",        { NULL }, 2809,  "udp" },
-  { "netsteward",      { NULL }, 2810,  "tcp" },
-  { "netsteward",      { NULL }, 2810,  "udp" },
-  { "gsiftp",          { NULL }, 2811,  "tcp" },
-  { "gsiftp",          { NULL }, 2811,  "udp" },
-  { "atmtcp",          { NULL }, 2812,  "tcp" },
-  { "atmtcp",          { NULL }, 2812,  "udp" },
-  { "llm-pass",        { NULL }, 2813,  "tcp" },
-  { "llm-pass",        { NULL }, 2813,  "udp" },
-  { "llm-csv",         { NULL }, 2814,  "tcp" },
-  { "llm-csv",         { NULL }, 2814,  "udp" },
-  { "lbc-measure",     { NULL }, 2815,  "tcp" },
-  { "lbc-measure",     { NULL }, 2815,  "udp" },
-  { "lbc-watchdog",    { NULL }, 2816,  "tcp" },
-  { "lbc-watchdog",    { NULL }, 2816,  "udp" },
-  { "nmsigport",       { NULL }, 2817,  "tcp" },
-  { "nmsigport",       { NULL }, 2817,  "udp" },
-  { "rmlnk",           { NULL }, 2818,  "tcp" },
-  { "rmlnk",           { NULL }, 2818,  "udp" },
-  { "fc-faultnotify",  { NULL }, 2819,  "tcp" },
-  { "fc-faultnotify",  { NULL }, 2819,  "udp" },
-  { "univision",       { NULL }, 2820,  "tcp" },
-  { "univision",       { NULL }, 2820,  "udp" },
-  { "vrts-at-port",    { NULL }, 2821,  "tcp" },
-  { "vrts-at-port",    { NULL }, 2821,  "udp" },
-  { "ka0wuc",          { NULL }, 2822,  "tcp" },
-  { "ka0wuc",          { NULL }, 2822,  "udp" },
-  { "cqg-netlan",      { NULL }, 2823,  "tcp" },
-  { "cqg-netlan",      { NULL }, 2823,  "udp" },
-  { "cqg-netlan-1",    { NULL }, 2824,  "tcp" },
-  { "cqg-netlan-1",    { NULL }, 2824,  "udp" },
-  { "slc-systemlog",   { NULL }, 2826,  "tcp" },
-  { "slc-systemlog",   { NULL }, 2826,  "udp" },
-  { "slc-ctrlrloops",  { NULL }, 2827,  "tcp" },
-  { "slc-ctrlrloops",  { NULL }, 2827,  "udp" },
-  { "itm-lm",          { NULL }, 2828,  "tcp" },
-  { "itm-lm",          { NULL }, 2828,  "udp" },
-  { "silkp1",          { NULL }, 2829,  "tcp" },
-  { "silkp1",          { NULL }, 2829,  "udp" },
-  { "silkp2",          { NULL }, 2830,  "tcp" },
-  { "silkp2",          { NULL }, 2830,  "udp" },
-  { "silkp3",          { NULL }, 2831,  "tcp" },
-  { "silkp3",          { NULL }, 2831,  "udp" },
-  { "silkp4",          { NULL }, 2832,  "tcp" },
-  { "silkp4",          { NULL }, 2832,  "udp" },
-  { "glishd",          { NULL }, 2833,  "tcp" },
-  { "glishd",          { NULL }, 2833,  "udp" },
-  { "evtp",            { NULL }, 2834,  "tcp" },
-  { "evtp",            { NULL }, 2834,  "udp" },
-  { "evtp-data",       { NULL }, 2835,  "tcp" },
-  { "evtp-data",       { NULL }, 2835,  "udp" },
-  { "catalyst",        { NULL }, 2836,  "tcp" },
-  { "catalyst",        { NULL }, 2836,  "udp" },
-  { "repliweb",        { NULL }, 2837,  "tcp" },
-  { "repliweb",        { NULL }, 2837,  "udp" },
-  { "starbot",         { NULL }, 2838,  "tcp" },
-  { "starbot",         { NULL }, 2838,  "udp" },
-  { "nmsigport",       { NULL }, 2839,  "tcp" },
-  { "nmsigport",       { NULL }, 2839,  "udp" },
-  { "l3-exprt",        { NULL }, 2840,  "tcp" },
-  { "l3-exprt",        { NULL }, 2840,  "udp" },
-  { "l3-ranger",       { NULL }, 2841,  "tcp" },
-  { "l3-ranger",       { NULL }, 2841,  "udp" },
-  { "l3-hawk",         { NULL }, 2842,  "tcp" },
-  { "l3-hawk",         { NULL }, 2842,  "udp" },
-  { "pdnet",           { NULL }, 2843,  "tcp" },
-  { "pdnet",           { NULL }, 2843,  "udp" },
-  { "bpcp-poll",       { NULL }, 2844,  "tcp" },
-  { "bpcp-poll",       { NULL }, 2844,  "udp" },
-  { "bpcp-trap",       { NULL }, 2845,  "tcp" },
-  { "bpcp-trap",       { NULL }, 2845,  "udp" },
-  { "aimpp-hello",     { NULL }, 2846,  "tcp" },
-  { "aimpp-hello",     { NULL }, 2846,  "udp" },
-  { "aimpp-port-req",  { NULL }, 2847,  "tcp" },
-  { "aimpp-port-req",  { NULL }, 2847,  "udp" },
-  { "amt-blc-port",    { NULL }, 2848,  "tcp" },
-  { "amt-blc-port",    { NULL }, 2848,  "udp" },
-  { "fxp",             { NULL }, 2849,  "tcp" },
-  { "fxp",             { NULL }, 2849,  "udp" },
-  { "metaconsole",     { NULL }, 2850,  "tcp" },
-  { "metaconsole",     { NULL }, 2850,  "udp" },
-  { "webemshttp",      { NULL }, 2851,  "tcp" },
-  { "webemshttp",      { NULL }, 2851,  "udp" },
-  { "bears-01",        { NULL }, 2852,  "tcp" },
-  { "bears-01",        { NULL }, 2852,  "udp" },
-  { "ispipes",         { NULL }, 2853,  "tcp" },
-  { "ispipes",         { NULL }, 2853,  "udp" },
-  { "infomover",       { NULL }, 2854,  "tcp" },
-  { "infomover",       { NULL }, 2854,  "udp" },
-  { "msrp",            { NULL }, 2855,  "tcp" },
-  { "msrp",            { NULL }, 2855,  "udp" },
-  { "cesdinv",         { NULL }, 2856,  "tcp" },
-  { "cesdinv",         { NULL }, 2856,  "udp" },
-  { "simctlp",         { NULL }, 2857,  "tcp" },
-  { "simctlp",         { NULL }, 2857,  "udp" },
-  { "ecnp",            { NULL }, 2858,  "tcp" },
-  { "ecnp",            { NULL }, 2858,  "udp" },
-  { "activememory",    { NULL }, 2859,  "tcp" },
-  { "activememory",    { NULL }, 2859,  "udp" },
-  { "dialpad-voice1",  { NULL }, 2860,  "tcp" },
-  { "dialpad-voice1",  { NULL }, 2860,  "udp" },
-  { "dialpad-voice2",  { NULL }, 2861,  "tcp" },
-  { "dialpad-voice2",  { NULL }, 2861,  "udp" },
-  { "ttg-protocol",    { NULL }, 2862,  "tcp" },
-  { "ttg-protocol",    { NULL }, 2862,  "udp" },
-  { "sonardata",       { NULL }, 2863,  "tcp" },
-  { "sonardata",       { NULL }, 2863,  "udp" },
-  { "astromed-main",   { NULL }, 2864,  "tcp" },
-  { "astromed-main",   { NULL }, 2864,  "udp" },
-  { "pit-vpn",         { NULL }, 2865,  "tcp" },
-  { "pit-vpn",         { NULL }, 2865,  "udp" },
-  { "iwlistener",      { NULL }, 2866,  "tcp" },
-  { "iwlistener",      { NULL }, 2866,  "udp" },
-  { "esps-portal",     { NULL }, 2867,  "tcp" },
-  { "esps-portal",     { NULL }, 2867,  "udp" },
-  { "npep-messaging",  { NULL }, 2868,  "tcp" },
-  { "npep-messaging",  { NULL }, 2868,  "udp" },
-  { "icslap",          { NULL }, 2869,  "tcp" },
-  { "icslap",          { NULL }, 2869,  "udp" },
-  { "daishi",          { NULL }, 2870,  "tcp" },
-  { "daishi",          { NULL }, 2870,  "udp" },
-  { "msi-selectplay",  { NULL }, 2871,  "tcp" },
-  { "msi-selectplay",  { NULL }, 2871,  "udp" },
-  { "radix",           { NULL }, 2872,  "tcp" },
-  { "radix",           { NULL }, 2872,  "udp" },
-  { "dxmessagebase1",  { NULL }, 2874,  "tcp" },
-  { "dxmessagebase1",  { NULL }, 2874,  "udp" },
-  { "dxmessagebase2",  { NULL }, 2875,  "tcp" },
-  { "dxmessagebase2",  { NULL }, 2875,  "udp" },
-  { "sps-tunnel",      { NULL }, 2876,  "tcp" },
-  { "sps-tunnel",      { NULL }, 2876,  "udp" },
-  { "bluelance",       { NULL }, 2877,  "tcp" },
-  { "bluelance",       { NULL }, 2877,  "udp" },
-  { "aap",             { NULL }, 2878,  "tcp" },
-  { "aap",             { NULL }, 2878,  "udp" },
-  { "ucentric-ds",     { NULL }, 2879,  "tcp" },
-  { "ucentric-ds",     { NULL }, 2879,  "udp" },
-  { "synapse",         { NULL }, 2880,  "tcp" },
-  { "synapse",         { NULL }, 2880,  "udp" },
-  { "ndsp",            { NULL }, 2881,  "tcp" },
-  { "ndsp",            { NULL }, 2881,  "udp" },
-  { "ndtp",            { NULL }, 2882,  "tcp" },
-  { "ndtp",            { NULL }, 2882,  "udp" },
-  { "ndnp",            { NULL }, 2883,  "tcp" },
-  { "ndnp",            { NULL }, 2883,  "udp" },
-  { "flashmsg",        { NULL }, 2884,  "tcp" },
-  { "flashmsg",        { NULL }, 2884,  "udp" },
-  { "topflow",         { NULL }, 2885,  "tcp" },
-  { "topflow",         { NULL }, 2885,  "udp" },
-  { "responselogic",   { NULL }, 2886,  "tcp" },
-  { "responselogic",   { NULL }, 2886,  "udp" },
-  { "aironetddp",      { NULL }, 2887,  "tcp" },
-  { "aironetddp",      { NULL }, 2887,  "udp" },
-  { "spcsdlobby",      { NULL }, 2888,  "tcp" },
-  { "spcsdlobby",      { NULL }, 2888,  "udp" },
-  { "rsom",            { NULL }, 2889,  "tcp" },
-  { "rsom",            { NULL }, 2889,  "udp" },
-  { "cspclmulti",      { NULL }, 2890,  "tcp" },
-  { "cspclmulti",      { NULL }, 2890,  "udp" },
-  { "cinegrfx-elmd",   { NULL }, 2891,  "tcp" },
-  { "cinegrfx-elmd",   { NULL }, 2891,  "udp" },
-  { "snifferdata",     { NULL }, 2892,  "tcp" },
-  { "snifferdata",     { NULL }, 2892,  "udp" },
-  { "vseconnector",    { NULL }, 2893,  "tcp" },
-  { "vseconnector",    { NULL }, 2893,  "udp" },
-  { "abacus-remote",   { NULL }, 2894,  "tcp" },
-  { "abacus-remote",   { NULL }, 2894,  "udp" },
-  { "natuslink",       { NULL }, 2895,  "tcp" },
-  { "natuslink",       { NULL }, 2895,  "udp" },
-  { "ecovisiong6-1",   { NULL }, 2896,  "tcp" },
-  { "ecovisiong6-1",   { NULL }, 2896,  "udp" },
-  { "citrix-rtmp",     { NULL }, 2897,  "tcp" },
-  { "citrix-rtmp",     { NULL }, 2897,  "udp" },
-  { "appliance-cfg",   { NULL }, 2898,  "tcp" },
-  { "appliance-cfg",   { NULL }, 2898,  "udp" },
-  { "powergemplus",    { NULL }, 2899,  "tcp" },
-  { "powergemplus",    { NULL }, 2899,  "udp" },
-  { "quicksuite",      { NULL }, 2900,  "tcp" },
-  { "quicksuite",      { NULL }, 2900,  "udp" },
-  { "allstorcns",      { NULL }, 2901,  "tcp" },
-  { "allstorcns",      { NULL }, 2901,  "udp" },
-  { "netaspi",         { NULL }, 2902,  "tcp" },
-  { "netaspi",         { NULL }, 2902,  "udp" },
-  { "suitcase",        { NULL }, 2903,  "tcp" },
-  { "suitcase",        { NULL }, 2903,  "udp" },
-  { "m2ua",            { NULL }, 2904,  "tcp" },
-  { "m2ua",            { NULL }, 2904,  "udp" },
-  { "m2ua",            { NULL }, 2904,  "sctp"},
-  { "m3ua",            { NULL }, 2905,  "tcp" },
-  { "m3ua",            { NULL }, 2905,  "sctp"},
-  { "caller9",         { NULL }, 2906,  "tcp" },
-  { "caller9",         { NULL }, 2906,  "udp" },
-  { "webmethods-b2b",  { NULL }, 2907,  "tcp" },
-  { "webmethods-b2b",  { NULL }, 2907,  "udp" },
-  { "mao",             { NULL }, 2908,  "tcp" },
-  { "mao",             { NULL }, 2908,  "udp" },
-  { "funk-dialout",    { NULL }, 2909,  "tcp" },
-  { "funk-dialout",    { NULL }, 2909,  "udp" },
-  { "tdaccess",        { NULL }, 2910,  "tcp" },
-  { "tdaccess",        { NULL }, 2910,  "udp" },
-  { "blockade",        { NULL }, 2911,  "tcp" },
-  { "blockade",        { NULL }, 2911,  "udp" },
-  { "epicon",          { NULL }, 2912,  "tcp" },
-  { "epicon",          { NULL }, 2912,  "udp" },
-  { "boosterware",     { NULL }, 2913,  "tcp" },
-  { "boosterware",     { NULL }, 2913,  "udp" },
-  { "gamelobby",       { NULL }, 2914,  "tcp" },
-  { "gamelobby",       { NULL }, 2914,  "udp" },
-  { "tksocket",        { NULL }, 2915,  "tcp" },
-  { "tksocket",        { NULL }, 2915,  "udp" },
-  { "elvin_server",    { NULL }, 2916,  "tcp" },
-  { "elvin_server",    { NULL }, 2916,  "udp" },
-  { "elvin_client",    { NULL }, 2917,  "tcp" },
-  { "elvin_client",    { NULL }, 2917,  "udp" },
-  { "kastenchasepad",  { NULL }, 2918,  "tcp" },
-  { "kastenchasepad",  { NULL }, 2918,  "udp" },
-  { "roboer",          { NULL }, 2919,  "tcp" },
-  { "roboer",          { NULL }, 2919,  "udp" },
-  { "roboeda",         { NULL }, 2920,  "tcp" },
-  { "roboeda",         { NULL }, 2920,  "udp" },
-  { "cesdcdman",       { NULL }, 2921,  "tcp" },
-  { "cesdcdman",       { NULL }, 2921,  "udp" },
-  { "cesdcdtrn",       { NULL }, 2922,  "tcp" },
-  { "cesdcdtrn",       { NULL }, 2922,  "udp" },
-  { "wta-wsp-wtp-s",   { NULL }, 2923,  "tcp" },
-  { "wta-wsp-wtp-s",   { NULL }, 2923,  "udp" },
-  { "precise-vip",     { NULL }, 2924,  "tcp" },
-  { "precise-vip",     { NULL }, 2924,  "udp" },
-  { "mobile-file-dl",  { NULL }, 2926,  "tcp" },
-  { "mobile-file-dl",  { NULL }, 2926,  "udp" },
-  { "unimobilectrl",   { NULL }, 2927,  "tcp" },
-  { "unimobilectrl",   { NULL }, 2927,  "udp" },
-  { "redstone-cpss",   { NULL }, 2928,  "tcp" },
-  { "redstone-cpss",   { NULL }, 2928,  "udp" },
-  { "amx-webadmin",    { NULL }, 2929,  "tcp" },
-  { "amx-webadmin",    { NULL }, 2929,  "udp" },
-  { "amx-weblinx",     { NULL }, 2930,  "tcp" },
-  { "amx-weblinx",     { NULL }, 2930,  "udp" },
-  { "circle-x",        { NULL }, 2931,  "tcp" },
-  { "circle-x",        { NULL }, 2931,  "udp" },
-  { "incp",            { NULL }, 2932,  "tcp" },
-  { "incp",            { NULL }, 2932,  "udp" },
-  { "4-tieropmgw",     { NULL }, 2933,  "tcp" },
-  { "4-tieropmgw",     { NULL }, 2933,  "udp" },
-  { "4-tieropmcli",    { NULL }, 2934,  "tcp" },
-  { "4-tieropmcli",    { NULL }, 2934,  "udp" },
-  { "qtp",             { NULL }, 2935,  "tcp" },
-  { "qtp",             { NULL }, 2935,  "udp" },
-  { "otpatch",         { NULL }, 2936,  "tcp" },
-  { "otpatch",         { NULL }, 2936,  "udp" },
-  { "pnaconsult-lm",   { NULL }, 2937,  "tcp" },
-  { "pnaconsult-lm",   { NULL }, 2937,  "udp" },
-  { "sm-pas-1",        { NULL }, 2938,  "tcp" },
-  { "sm-pas-1",        { NULL }, 2938,  "udp" },
-  { "sm-pas-2",        { NULL }, 2939,  "tcp" },
-  { "sm-pas-2",        { NULL }, 2939,  "udp" },
-  { "sm-pas-3",        { NULL }, 2940,  "tcp" },
-  { "sm-pas-3",        { NULL }, 2940,  "udp" },
-  { "sm-pas-4",        { NULL }, 2941,  "tcp" },
-  { "sm-pas-4",        { NULL }, 2941,  "udp" },
-  { "sm-pas-5",        { NULL }, 2942,  "tcp" },
-  { "sm-pas-5",        { NULL }, 2942,  "udp" },
-  { "ttnrepository",   { NULL }, 2943,  "tcp" },
-  { "ttnrepository",   { NULL }, 2943,  "udp" },
-  { "megaco-h248",     { NULL }, 2944,  "tcp" },
-  { "megaco-h248",     { NULL }, 2944,  "udp" },
-  { "megaco-h248",     { NULL }, 2944,  "sctp"},
-  { "h248-binary",     { NULL }, 2945,  "tcp" },
-  { "h248-binary",     { NULL }, 2945,  "udp" },
-  { "h248-binary",     { NULL }, 2945,  "sctp"},
-  { "fjsvmpor",        { NULL }, 2946,  "tcp" },
-  { "fjsvmpor",        { NULL }, 2946,  "udp" },
-  { "gpsd",            { NULL }, 2947,  "tcp" },
-  { "gpsd",            { NULL }, 2947,  "udp" },
-  { "wap-push",        { NULL }, 2948,  "tcp" },
-  { "wap-push",        { NULL }, 2948,  "udp" },
-  { "wap-pushsecure",  { NULL }, 2949,  "tcp" },
-  { "wap-pushsecure",  { NULL }, 2949,  "udp" },
-  { "esip",            { NULL }, 2950,  "tcp" },
-  { "esip",            { NULL }, 2950,  "udp" },
-  { "ottp",            { NULL }, 2951,  "tcp" },
-  { "ottp",            { NULL }, 2951,  "udp" },
-  { "mpfwsas",         { NULL }, 2952,  "tcp" },
-  { "mpfwsas",         { NULL }, 2952,  "udp" },
-  { "ovalarmsrv",      { NULL }, 2953,  "tcp" },
-  { "ovalarmsrv",      { NULL }, 2953,  "udp" },
-  { "ovalarmsrv-cmd",  { NULL }, 2954,  "tcp" },
-  { "ovalarmsrv-cmd",  { NULL }, 2954,  "udp" },
-  { "csnotify",        { NULL }, 2955,  "tcp" },
-  { "csnotify",        { NULL }, 2955,  "udp" },
-  { "ovrimosdbman",    { NULL }, 2956,  "tcp" },
-  { "ovrimosdbman",    { NULL }, 2956,  "udp" },
-  { "jmact5",          { NULL }, 2957,  "tcp" },
-  { "jmact5",          { NULL }, 2957,  "udp" },
-  { "jmact6",          { NULL }, 2958,  "tcp" },
-  { "jmact6",          { NULL }, 2958,  "udp" },
-  { "rmopagt",         { NULL }, 2959,  "tcp" },
-  { "rmopagt",         { NULL }, 2959,  "udp" },
-  { "dfoxserver",      { NULL }, 2960,  "tcp" },
-  { "dfoxserver",      { NULL }, 2960,  "udp" },
-  { "boldsoft-lm",     { NULL }, 2961,  "tcp" },
-  { "boldsoft-lm",     { NULL }, 2961,  "udp" },
-  { "iph-policy-cli",  { NULL }, 2962,  "tcp" },
-  { "iph-policy-cli",  { NULL }, 2962,  "udp" },
-  { "iph-policy-adm",  { NULL }, 2963,  "tcp" },
-  { "iph-policy-adm",  { NULL }, 2963,  "udp" },
-  { "bullant-srap",    { NULL }, 2964,  "tcp" },
-  { "bullant-srap",    { NULL }, 2964,  "udp" },
-  { "bullant-rap",     { NULL }, 2965,  "tcp" },
-  { "bullant-rap",     { NULL }, 2965,  "udp" },
-  { "idp-infotrieve",  { NULL }, 2966,  "tcp" },
-  { "idp-infotrieve",  { NULL }, 2966,  "udp" },
-  { "ssc-agent",       { NULL }, 2967,  "tcp" },
-  { "ssc-agent",       { NULL }, 2967,  "udp" },
-  { "enpp",            { NULL }, 2968,  "tcp" },
-  { "enpp",            { NULL }, 2968,  "udp" },
-  { "essp",            { NULL }, 2969,  "tcp" },
-  { "essp",            { NULL }, 2969,  "udp" },
-  { "index-net",       { NULL }, 2970,  "tcp" },
-  { "index-net",       { NULL }, 2970,  "udp" },
-  { "netclip",         { NULL }, 2971,  "tcp" },
-  { "netclip",         { NULL }, 2971,  "udp" },
-  { "pmsm-webrctl",    { NULL }, 2972,  "tcp" },
-  { "pmsm-webrctl",    { NULL }, 2972,  "udp" },
-  { "svnetworks",      { NULL }, 2973,  "tcp" },
-  { "svnetworks",      { NULL }, 2973,  "udp" },
-  { "signal",          { NULL }, 2974,  "tcp" },
-  { "signal",          { NULL }, 2974,  "udp" },
-  { "fjmpcm",          { NULL }, 2975,  "tcp" },
-  { "fjmpcm",          { NULL }, 2975,  "udp" },
-  { "cns-srv-port",    { NULL }, 2976,  "tcp" },
-  { "cns-srv-port",    { NULL }, 2976,  "udp" },
-  { "ttc-etap-ns",     { NULL }, 2977,  "tcp" },
-  { "ttc-etap-ns",     { NULL }, 2977,  "udp" },
-  { "ttc-etap-ds",     { NULL }, 2978,  "tcp" },
-  { "ttc-etap-ds",     { NULL }, 2978,  "udp" },
-  { "h263-video",      { NULL }, 2979,  "tcp" },
-  { "h263-video",      { NULL }, 2979,  "udp" },
-  { "wimd",            { NULL }, 2980,  "tcp" },
-  { "wimd",            { NULL }, 2980,  "udp" },
-  { "mylxamport",      { NULL }, 2981,  "tcp" },
-  { "mylxamport",      { NULL }, 2981,  "udp" },
-  { "iwb-whiteboard",  { NULL }, 2982,  "tcp" },
-  { "iwb-whiteboard",  { NULL }, 2982,  "udp" },
-  { "netplan",         { NULL }, 2983,  "tcp" },
-  { "netplan",         { NULL }, 2983,  "udp" },
-  { "hpidsadmin",      { NULL }, 2984,  "tcp" },
-  { "hpidsadmin",      { NULL }, 2984,  "udp" },
-  { "hpidsagent",      { NULL }, 2985,  "tcp" },
-  { "hpidsagent",      { NULL }, 2985,  "udp" },
-  { "stonefalls",      { NULL }, 2986,  "tcp" },
-  { "stonefalls",      { NULL }, 2986,  "udp" },
-  { "identify",        { NULL }, 2987,  "tcp" },
-  { "identify",        { NULL }, 2987,  "udp" },
-  { "hippad",          { NULL }, 2988,  "tcp" },
-  { "hippad",          { NULL }, 2988,  "udp" },
-  { "zarkov",          { NULL }, 2989,  "tcp" },
-  { "zarkov",          { NULL }, 2989,  "udp" },
-  { "boscap",          { NULL }, 2990,  "tcp" },
-  { "boscap",          { NULL }, 2990,  "udp" },
-  { "wkstn-mon",       { NULL }, 2991,  "tcp" },
-  { "wkstn-mon",       { NULL }, 2991,  "udp" },
-  { "avenyo",          { NULL }, 2992,  "tcp" },
-  { "avenyo",          { NULL }, 2992,  "udp" },
-  { "veritas-vis1",    { NULL }, 2993,  "tcp" },
-  { "veritas-vis1",    { NULL }, 2993,  "udp" },
-  { "veritas-vis2",    { NULL }, 2994,  "tcp" },
-  { "veritas-vis2",    { NULL }, 2994,  "udp" },
-  { "idrs",            { NULL }, 2995,  "tcp" },
-  { "idrs",            { NULL }, 2995,  "udp" },
-  { "vsixml",          { NULL }, 2996,  "tcp" },
-  { "vsixml",          { NULL }, 2996,  "udp" },
-  { "rebol",           { NULL }, 2997,  "tcp" },
-  { "rebol",           { NULL }, 2997,  "udp" },
-  { "realsecure",      { NULL }, 2998,  "tcp" },
-  { "realsecure",      { NULL }, 2998,  "udp" },
-  { "remoteware-un",   { NULL }, 2999,  "tcp" },
-  { "remoteware-un",   { NULL }, 2999,  "udp" },
-  { "hbci",            { NULL }, 3000,  "tcp" },
-  { "hbci",            { NULL }, 3000,  "udp" },
-  { "remoteware-cl",   { NULL }, 3000,  "tcp" },
-  { "remoteware-cl",   { NULL }, 3000,  "udp" },
-  { "exlm-agent",      { NULL }, 3002,  "tcp" },
-  { "exlm-agent",      { NULL }, 3002,  "udp" },
-  { "remoteware-srv",  { NULL }, 3002,  "tcp" },
-  { "remoteware-srv",  { NULL }, 3002,  "udp" },
-  { "cgms",            { NULL }, 3003,  "tcp" },
-  { "cgms",            { NULL }, 3003,  "udp" },
-  { "csoftragent",     { NULL }, 3004,  "tcp" },
-  { "csoftragent",     { NULL }, 3004,  "udp" },
-  { "geniuslm",        { NULL }, 3005,  "tcp" },
-  { "geniuslm",        { NULL }, 3005,  "udp" },
-  { "ii-admin",        { NULL }, 3006,  "tcp" },
-  { "ii-admin",        { NULL }, 3006,  "udp" },
-  { "lotusmtap",       { NULL }, 3007,  "tcp" },
-  { "lotusmtap",       { NULL }, 3007,  "udp" },
-  { "midnight-tech",   { NULL }, 3008,  "tcp" },
-  { "midnight-tech",   { NULL }, 3008,  "udp" },
-  { "pxc-ntfy",        { NULL }, 3009,  "tcp" },
-  { "pxc-ntfy",        { NULL }, 3009,  "udp" },
-  { "gw",              { NULL }, 3010,  "tcp" },
-  { "ping-pong",       { NULL }, 3010,  "udp" },
-  { "trusted-web",     { NULL }, 3011,  "tcp" },
-  { "trusted-web",     { NULL }, 3011,  "udp" },
-  { "twsdss",          { NULL }, 3012,  "tcp" },
-  { "twsdss",          { NULL }, 3012,  "udp" },
-  { "gilatskysurfer",  { NULL }, 3013,  "tcp" },
-  { "gilatskysurfer",  { NULL }, 3013,  "udp" },
-  { "broker_service",  { NULL }, 3014,  "tcp" },
-  { "broker_service",  { NULL }, 3014,  "udp" },
-  { "nati-dstp",       { NULL }, 3015,  "tcp" },
-  { "nati-dstp",       { NULL }, 3015,  "udp" },
-  { "notify_srvr",     { NULL }, 3016,  "tcp" },
-  { "notify_srvr",     { NULL }, 3016,  "udp" },
-  { "event_listener",  { NULL }, 3017,  "tcp" },
-  { "event_listener",  { NULL }, 3017,  "udp" },
-  { "srvc_registry",   { NULL }, 3018,  "tcp" },
-  { "srvc_registry",   { NULL }, 3018,  "udp" },
-  { "resource_mgr",    { NULL }, 3019,  "tcp" },
-  { "resource_mgr",    { NULL }, 3019,  "udp" },
-  { "cifs",            { NULL }, 3020,  "tcp" },
-  { "cifs",            { NULL }, 3020,  "udp" },
-  { "agriserver",      { NULL }, 3021,  "tcp" },
-  { "agriserver",      { NULL }, 3021,  "udp" },
-  { "csregagent",      { NULL }, 3022,  "tcp" },
-  { "csregagent",      { NULL }, 3022,  "udp" },
-  { "magicnotes",      { NULL }, 3023,  "tcp" },
-  { "magicnotes",      { NULL }, 3023,  "udp" },
-  { "nds_sso",         { NULL }, 3024,  "tcp" },
-  { "nds_sso",         { NULL }, 3024,  "udp" },
-  { "arepa-raft",      { NULL }, 3025,  "tcp" },
-  { "arepa-raft",      { NULL }, 3025,  "udp" },
-  { "agri-gateway",    { NULL }, 3026,  "tcp" },
-  { "agri-gateway",    { NULL }, 3026,  "udp" },
-  { "LiebDevMgmt_C",   { NULL }, 3027,  "tcp" },
-  { "LiebDevMgmt_C",   { NULL }, 3027,  "udp" },
-  { "LiebDevMgmt_DM",  { NULL }, 3028,  "tcp" },
-  { "LiebDevMgmt_DM",  { NULL }, 3028,  "udp" },
-  { "LiebDevMgmt_A",   { NULL }, 3029,  "tcp" },
-  { "LiebDevMgmt_A",   { NULL }, 3029,  "udp" },
-  { "arepa-cas",       { NULL }, 3030,  "tcp" },
-  { "arepa-cas",       { NULL }, 3030,  "udp" },
-  { "eppc",            { NULL }, 3031,  "tcp" },
-  { "eppc",            { NULL }, 3031,  "udp" },
-  { "redwood-chat",    { NULL }, 3032,  "tcp" },
-  { "redwood-chat",    { NULL }, 3032,  "udp" },
-  { "pdb",             { NULL }, 3033,  "tcp" },
-  { "pdb",             { NULL }, 3033,  "udp" },
-  { "osmosis-aeea",    { NULL }, 3034,  "tcp" },
-  { "osmosis-aeea",    { NULL }, 3034,  "udp" },
-  { "fjsv-gssagt",     { NULL }, 3035,  "tcp" },
-  { "fjsv-gssagt",     { NULL }, 3035,  "udp" },
-  { "hagel-dump",      { NULL }, 3036,  "tcp" },
-  { "hagel-dump",      { NULL }, 3036,  "udp" },
-  { "hp-san-mgmt",     { NULL }, 3037,  "tcp" },
-  { "hp-san-mgmt",     { NULL }, 3037,  "udp" },
-  { "santak-ups",      { NULL }, 3038,  "tcp" },
-  { "santak-ups",      { NULL }, 3038,  "udp" },
-  { "cogitate",        { NULL }, 3039,  "tcp" },
-  { "cogitate",        { NULL }, 3039,  "udp" },
-  { "tomato-springs",  { NULL }, 3040,  "tcp" },
-  { "tomato-springs",  { NULL }, 3040,  "udp" },
-  { "di-traceware",    { NULL }, 3041,  "tcp" },
-  { "di-traceware",    { NULL }, 3041,  "udp" },
-  { "journee",         { NULL }, 3042,  "tcp" },
-  { "journee",         { NULL }, 3042,  "udp" },
-  { "brp",             { NULL }, 3043,  "tcp" },
-  { "brp",             { NULL }, 3043,  "udp" },
-  { "epp",             { NULL }, 3044,  "tcp" },
-  { "epp",             { NULL }, 3044,  "udp" },
-  { "responsenet",     { NULL }, 3045,  "tcp" },
-  { "responsenet",     { NULL }, 3045,  "udp" },
-  { "di-ase",          { NULL }, 3046,  "tcp" },
-  { "di-ase",          { NULL }, 3046,  "udp" },
-  { "hlserver",        { NULL }, 3047,  "tcp" },
-  { "hlserver",        { NULL }, 3047,  "udp" },
-  { "pctrader",        { NULL }, 3048,  "tcp" },
-  { "pctrader",        { NULL }, 3048,  "udp" },
-  { "nsws",            { NULL }, 3049,  "tcp" },
-  { "nsws",            { NULL }, 3049,  "udp" },
-  { "gds_db",          { NULL }, 3050,  "tcp" },
-  { "gds_db",          { NULL }, 3050,  "udp" },
-  { "galaxy-server",   { NULL }, 3051,  "tcp" },
-  { "galaxy-server",   { NULL }, 3051,  "udp" },
-  { "apc-3052",        { NULL }, 3052,  "tcp" },
-  { "apc-3052",        { NULL }, 3052,  "udp" },
-  { "dsom-server",     { NULL }, 3053,  "tcp" },
-  { "dsom-server",     { NULL }, 3053,  "udp" },
-  { "amt-cnf-prot",    { NULL }, 3054,  "tcp" },
-  { "amt-cnf-prot",    { NULL }, 3054,  "udp" },
-  { "policyserver",    { NULL }, 3055,  "tcp" },
-  { "policyserver",    { NULL }, 3055,  "udp" },
-  { "cdl-server",      { NULL }, 3056,  "tcp" },
-  { "cdl-server",      { NULL }, 3056,  "udp" },
-  { "goahead-fldup",   { NULL }, 3057,  "tcp" },
-  { "goahead-fldup",   { NULL }, 3057,  "udp" },
-  { "videobeans",      { NULL }, 3058,  "tcp" },
-  { "videobeans",      { NULL }, 3058,  "udp" },
-  { "qsoft",           { NULL }, 3059,  "tcp" },
-  { "qsoft",           { NULL }, 3059,  "udp" },
-  { "interserver",     { NULL }, 3060,  "tcp" },
-  { "interserver",     { NULL }, 3060,  "udp" },
-  { "cautcpd",         { NULL }, 3061,  "tcp" },
-  { "cautcpd",         { NULL }, 3061,  "udp" },
-  { "ncacn-ip-tcp",    { NULL }, 3062,  "tcp" },
-  { "ncacn-ip-tcp",    { NULL }, 3062,  "udp" },
-  { "ncadg-ip-udp",    { NULL }, 3063,  "tcp" },
-  { "ncadg-ip-udp",    { NULL }, 3063,  "udp" },
-  { "rprt",            { NULL }, 3064,  "tcp" },
-  { "rprt",            { NULL }, 3064,  "udp" },
-  { "slinterbase",     { NULL }, 3065,  "tcp" },
-  { "slinterbase",     { NULL }, 3065,  "udp" },
-  { "netattachsdmp",   { NULL }, 3066,  "tcp" },
-  { "netattachsdmp",   { NULL }, 3066,  "udp" },
-  { "fjhpjp",          { NULL }, 3067,  "tcp" },
-  { "fjhpjp",          { NULL }, 3067,  "udp" },
-  { "ls3bcast",        { NULL }, 3068,  "tcp" },
-  { "ls3bcast",        { NULL }, 3068,  "udp" },
-  { "ls3",             { NULL }, 3069,  "tcp" },
-  { "ls3",             { NULL }, 3069,  "udp" },
-  { "mgxswitch",       { NULL }, 3070,  "tcp" },
-  { "mgxswitch",       { NULL }, 3070,  "udp" },
-  { "csd-mgmt-port",   { NULL }, 3071,  "tcp" },
-  { "csd-mgmt-port",   { NULL }, 3071,  "udp" },
-  { "csd-monitor",     { NULL }, 3072,  "tcp" },
-  { "csd-monitor",     { NULL }, 3072,  "udp" },
-  { "vcrp",            { NULL }, 3073,  "tcp" },
-  { "vcrp",            { NULL }, 3073,  "udp" },
-  { "xbox",            { NULL }, 3074,  "tcp" },
-  { "xbox",            { NULL }, 3074,  "udp" },
-  { "orbix-locator",   { NULL }, 3075,  "tcp" },
-  { "orbix-locator",   { NULL }, 3075,  "udp" },
-  { "orbix-config",    { NULL }, 3076,  "tcp" },
-  { "orbix-config",    { NULL }, 3076,  "udp" },
-  { "orbix-loc-ssl",   { NULL }, 3077,  "tcp" },
-  { "orbix-loc-ssl",   { NULL }, 3077,  "udp" },
-  { "orbix-cfg-ssl",   { NULL }, 3078,  "tcp" },
-  { "orbix-cfg-ssl",   { NULL }, 3078,  "udp" },
-  { "lv-frontpanel",   { NULL }, 3079,  "tcp" },
-  { "lv-frontpanel",   { NULL }, 3079,  "udp" },
-  { "stm_pproc",       { NULL }, 3080,  "tcp" },
-  { "stm_pproc",       { NULL }, 3080,  "udp" },
-  { "tl1-lv",          { NULL }, 3081,  "tcp" },
-  { "tl1-lv",          { NULL }, 3081,  "udp" },
-  { "tl1-raw",         { NULL }, 3082,  "tcp" },
-  { "tl1-raw",         { NULL }, 3082,  "udp" },
-  { "tl1-telnet",      { NULL }, 3083,  "tcp" },
-  { "tl1-telnet",      { NULL }, 3083,  "udp" },
-  { "itm-mccs",        { NULL }, 3084,  "tcp" },
-  { "itm-mccs",        { NULL }, 3084,  "udp" },
-  { "pcihreq",         { NULL }, 3085,  "tcp" },
-  { "pcihreq",         { NULL }, 3085,  "udp" },
-  { "jdl-dbkitchen",   { NULL }, 3086,  "tcp" },
-  { "jdl-dbkitchen",   { NULL }, 3086,  "udp" },
-  { "asoki-sma",       { NULL }, 3087,  "tcp" },
-  { "asoki-sma",       { NULL }, 3087,  "udp" },
-  { "xdtp",            { NULL }, 3088,  "tcp" },
-  { "xdtp",            { NULL }, 3088,  "udp" },
-  { "ptk-alink",       { NULL }, 3089,  "tcp" },
-  { "ptk-alink",       { NULL }, 3089,  "udp" },
-  { "stss",            { NULL }, 3090,  "tcp" },
-  { "stss",            { NULL }, 3090,  "udp" },
-  { "1ci-smcs",        { NULL }, 3091,  "tcp" },
-  { "1ci-smcs",        { NULL }, 3091,  "udp" },
-  { "rapidmq-center",  { NULL }, 3093,  "tcp" },
-  { "rapidmq-center",  { NULL }, 3093,  "udp" },
-  { "rapidmq-reg",     { NULL }, 3094,  "tcp" },
-  { "rapidmq-reg",     { NULL }, 3094,  "udp" },
-  { "panasas",         { NULL }, 3095,  "tcp" },
-  { "panasas",         { NULL }, 3095,  "udp" },
-  { "ndl-aps",         { NULL }, 3096,  "tcp" },
-  { "ndl-aps",         { NULL }, 3096,  "udp" },
-  { "itu-bicc-stc",    { NULL }, 3097,  "sctp"},
-  { "umm-port",        { NULL }, 3098,  "tcp" },
-  { "umm-port",        { NULL }, 3098,  "udp" },
-  { "chmd",            { NULL }, 3099,  "tcp" },
-  { "chmd",            { NULL }, 3099,  "udp" },
-  { "opcon-xps",       { NULL }, 3100,  "tcp" },
-  { "opcon-xps",       { NULL }, 3100,  "udp" },
-  { "hp-pxpib",        { NULL }, 3101,  "tcp" },
-  { "hp-pxpib",        { NULL }, 3101,  "udp" },
-  { "slslavemon",      { NULL }, 3102,  "tcp" },
-  { "slslavemon",      { NULL }, 3102,  "udp" },
-  { "autocuesmi",      { NULL }, 3103,  "tcp" },
-  { "autocuesmi",      { NULL }, 3103,  "udp" },
-  { "autocuelog",      { NULL }, 3104,  "tcp" },
-  { "autocuetime",     { NULL }, 3104,  "udp" },
-  { "cardbox",         { NULL }, 3105,  "tcp" },
-  { "cardbox",         { NULL }, 3105,  "udp" },
-  { "cardbox-http",    { NULL }, 3106,  "tcp" },
-  { "cardbox-http",    { NULL }, 3106,  "udp" },
-  { "business",        { NULL }, 3107,  "tcp" },
-  { "business",        { NULL }, 3107,  "udp" },
-  { "geolocate",       { NULL }, 3108,  "tcp" },
-  { "geolocate",       { NULL }, 3108,  "udp" },
-  { "personnel",       { NULL }, 3109,  "tcp" },
-  { "personnel",       { NULL }, 3109,  "udp" },
-  { "sim-control",     { NULL }, 3110,  "tcp" },
-  { "sim-control",     { NULL }, 3110,  "udp" },
-  { "wsynch",          { NULL }, 3111,  "tcp" },
-  { "wsynch",          { NULL }, 3111,  "udp" },
-  { "ksysguard",       { NULL }, 3112,  "tcp" },
-  { "ksysguard",       { NULL }, 3112,  "udp" },
-  { "cs-auth-svr",     { NULL }, 3113,  "tcp" },
-  { "cs-auth-svr",     { NULL }, 3113,  "udp" },
-  { "ccmad",           { NULL }, 3114,  "tcp" },
-  { "ccmad",           { NULL }, 3114,  "udp" },
-  { "mctet-master",    { NULL }, 3115,  "tcp" },
-  { "mctet-master",    { NULL }, 3115,  "udp" },
-  { "mctet-gateway",   { NULL }, 3116,  "tcp" },
-  { "mctet-gateway",   { NULL }, 3116,  "udp" },
-  { "mctet-jserv",     { NULL }, 3117,  "tcp" },
-  { "mctet-jserv",     { NULL }, 3117,  "udp" },
-  { "pkagent",         { NULL }, 3118,  "tcp" },
-  { "pkagent",         { NULL }, 3118,  "udp" },
-  { "d2000kernel",     { NULL }, 3119,  "tcp" },
-  { "d2000kernel",     { NULL }, 3119,  "udp" },
-  { "d2000webserver",  { NULL }, 3120,  "tcp" },
-  { "d2000webserver",  { NULL }, 3120,  "udp" },
-  { "vtr-emulator",    { NULL }, 3122,  "tcp" },
-  { "vtr-emulator",    { NULL }, 3122,  "udp" },
-  { "edix",            { NULL }, 3123,  "tcp" },
-  { "edix",            { NULL }, 3123,  "udp" },
-  { "beacon-port",     { NULL }, 3124,  "tcp" },
-  { "beacon-port",     { NULL }, 3124,  "udp" },
-  { "a13-an",          { NULL }, 3125,  "tcp" },
-  { "a13-an",          { NULL }, 3125,  "udp" },
-  { "ctx-bridge",      { NULL }, 3127,  "tcp" },
-  { "ctx-bridge",      { NULL }, 3127,  "udp" },
-  { "ndl-aas",         { NULL }, 3128,  "tcp" },
-  { "ndl-aas",         { NULL }, 3128,  "udp" },
-  { "netport-id",      { NULL }, 3129,  "tcp" },
-  { "netport-id",      { NULL }, 3129,  "udp" },
-  { "icpv2",           { NULL }, 3130,  "tcp" },
-  { "icpv2",           { NULL }, 3130,  "udp" },
-  { "netbookmark",     { NULL }, 3131,  "tcp" },
-  { "netbookmark",     { NULL }, 3131,  "udp" },
-  { "ms-rule-engine",  { NULL }, 3132,  "tcp" },
-  { "ms-rule-engine",  { NULL }, 3132,  "udp" },
-  { "prism-deploy",    { NULL }, 3133,  "tcp" },
-  { "prism-deploy",    { NULL }, 3133,  "udp" },
-  { "ecp",             { NULL }, 3134,  "tcp" },
-  { "ecp",             { NULL }, 3134,  "udp" },
-  { "peerbook-port",   { NULL }, 3135,  "tcp" },
-  { "peerbook-port",   { NULL }, 3135,  "udp" },
-  { "grubd",           { NULL }, 3136,  "tcp" },
-  { "grubd",           { NULL }, 3136,  "udp" },
-  { "rtnt-1",          { NULL }, 3137,  "tcp" },
-  { "rtnt-1",          { NULL }, 3137,  "udp" },
-  { "rtnt-2",          { NULL }, 3138,  "tcp" },
-  { "rtnt-2",          { NULL }, 3138,  "udp" },
-  { "incognitorv",     { NULL }, 3139,  "tcp" },
-  { "incognitorv",     { NULL }, 3139,  "udp" },
-  { "ariliamulti",     { NULL }, 3140,  "tcp" },
-  { "ariliamulti",     { NULL }, 3140,  "udp" },
-  { "vmodem",          { NULL }, 3141,  "tcp" },
-  { "vmodem",          { NULL }, 3141,  "udp" },
-  { "rdc-wh-eos",      { NULL }, 3142,  "tcp" },
-  { "rdc-wh-eos",      { NULL }, 3142,  "udp" },
-  { "seaview",         { NULL }, 3143,  "tcp" },
-  { "seaview",         { NULL }, 3143,  "udp" },
-  { "tarantella",      { NULL }, 3144,  "tcp" },
-  { "tarantella",      { NULL }, 3144,  "udp" },
-  { "csi-lfap",        { NULL }, 3145,  "tcp" },
-  { "csi-lfap",        { NULL }, 3145,  "udp" },
-  { "bears-02",        { NULL }, 3146,  "tcp" },
-  { "bears-02",        { NULL }, 3146,  "udp" },
-  { "rfio",            { NULL }, 3147,  "tcp" },
-  { "rfio",            { NULL }, 3147,  "udp" },
-  { "nm-game-admin",   { NULL }, 3148,  "tcp" },
-  { "nm-game-admin",   { NULL }, 3148,  "udp" },
-  { "nm-game-server",  { NULL }, 3149,  "tcp" },
-  { "nm-game-server",  { NULL }, 3149,  "udp" },
-  { "nm-asses-admin",  { NULL }, 3150,  "tcp" },
-  { "nm-asses-admin",  { NULL }, 3150,  "udp" },
-  { "nm-assessor",     { NULL }, 3151,  "tcp" },
-  { "nm-assessor",     { NULL }, 3151,  "udp" },
-  { "feitianrockey",   { NULL }, 3152,  "tcp" },
-  { "feitianrockey",   { NULL }, 3152,  "udp" },
-  { "s8-client-port",  { NULL }, 3153,  "tcp" },
-  { "s8-client-port",  { NULL }, 3153,  "udp" },
-  { "ccmrmi",          { NULL }, 3154,  "tcp" },
-  { "ccmrmi",          { NULL }, 3154,  "udp" },
-  { "jpegmpeg",        { NULL }, 3155,  "tcp" },
-  { "jpegmpeg",        { NULL }, 3155,  "udp" },
-  { "indura",          { NULL }, 3156,  "tcp" },
-  { "indura",          { NULL }, 3156,  "udp" },
-  { "e3consultants",   { NULL }, 3157,  "tcp" },
-  { "e3consultants",   { NULL }, 3157,  "udp" },
-  { "stvp",            { NULL }, 3158,  "tcp" },
-  { "stvp",            { NULL }, 3158,  "udp" },
-  { "navegaweb-port",  { NULL }, 3159,  "tcp" },
-  { "navegaweb-port",  { NULL }, 3159,  "udp" },
-  { "tip-app-server",  { NULL }, 3160,  "tcp" },
-  { "tip-app-server",  { NULL }, 3160,  "udp" },
-  { "doc1lm",          { NULL }, 3161,  "tcp" },
-  { "doc1lm",          { NULL }, 3161,  "udp" },
-  { "sflm",            { NULL }, 3162,  "tcp" },
-  { "sflm",            { NULL }, 3162,  "udp" },
-  { "res-sap",         { NULL }, 3163,  "tcp" },
-  { "res-sap",         { NULL }, 3163,  "udp" },
-  { "imprs",           { NULL }, 3164,  "tcp" },
-  { "imprs",           { NULL }, 3164,  "udp" },
-  { "newgenpay",       { NULL }, 3165,  "tcp" },
-  { "newgenpay",       { NULL }, 3165,  "udp" },
-  { "sossecollector",  { NULL }, 3166,  "tcp" },
-  { "sossecollector",  { NULL }, 3166,  "udp" },
-  { "nowcontact",      { NULL }, 3167,  "tcp" },
-  { "nowcontact",      { NULL }, 3167,  "udp" },
-  { "poweronnud",      { NULL }, 3168,  "tcp" },
-  { "poweronnud",      { NULL }, 3168,  "udp" },
-  { "serverview-as",   { NULL }, 3169,  "tcp" },
-  { "serverview-as",   { NULL }, 3169,  "udp" },
-  { "serverview-asn",  { NULL }, 3170,  "tcp" },
-  { "serverview-asn",  { NULL }, 3170,  "udp" },
-  { "serverview-gf",   { NULL }, 3171,  "tcp" },
-  { "serverview-gf",   { NULL }, 3171,  "udp" },
-  { "serverview-rm",   { NULL }, 3172,  "tcp" },
-  { "serverview-rm",   { NULL }, 3172,  "udp" },
-  { "serverview-icc",  { NULL }, 3173,  "tcp" },
-  { "serverview-icc",  { NULL }, 3173,  "udp" },
-  { "armi-server",     { NULL }, 3174,  "tcp" },
-  { "armi-server",     { NULL }, 3174,  "udp" },
-  { "t1-e1-over-ip",   { NULL }, 3175,  "tcp" },
-  { "t1-e1-over-ip",   { NULL }, 3175,  "udp" },
-  { "ars-master",      { NULL }, 3176,  "tcp" },
-  { "ars-master",      { NULL }, 3176,  "udp" },
-  { "phonex-port",     { NULL }, 3177,  "tcp" },
-  { "phonex-port",     { NULL }, 3177,  "udp" },
-  { "radclientport",   { NULL }, 3178,  "tcp" },
-  { "radclientport",   { NULL }, 3178,  "udp" },
-  { "h2gf-w-2m",       { NULL }, 3179,  "tcp" },
-  { "h2gf-w-2m",       { NULL }, 3179,  "udp" },
-  { "mc-brk-srv",      { NULL }, 3180,  "tcp" },
-  { "mc-brk-srv",      { NULL }, 3180,  "udp" },
-  { "bmcpatrolagent",  { NULL }, 3181,  "tcp" },
-  { "bmcpatrolagent",  { NULL }, 3181,  "udp" },
-  { "bmcpatrolrnvu",   { NULL }, 3182,  "tcp" },
-  { "bmcpatrolrnvu",   { NULL }, 3182,  "udp" },
-  { "cops-tls",        { NULL }, 3183,  "tcp" },
-  { "cops-tls",        { NULL }, 3183,  "udp" },
-  { "apogeex-port",    { NULL }, 3184,  "tcp" },
-  { "apogeex-port",    { NULL }, 3184,  "udp" },
-  { "smpppd",          { NULL }, 3185,  "tcp" },
-  { "smpppd",          { NULL }, 3185,  "udp" },
-  { "iiw-port",        { NULL }, 3186,  "tcp" },
-  { "iiw-port",        { NULL }, 3186,  "udp" },
-  { "odi-port",        { NULL }, 3187,  "tcp" },
-  { "odi-port",        { NULL }, 3187,  "udp" },
-  { "brcm-comm-port",  { NULL }, 3188,  "tcp" },
-  { "brcm-comm-port",  { NULL }, 3188,  "udp" },
-  { "pcle-infex",      { NULL }, 3189,  "tcp" },
-  { "pcle-infex",      { NULL }, 3189,  "udp" },
-  { "csvr-proxy",      { NULL }, 3190,  "tcp" },
-  { "csvr-proxy",      { NULL }, 3190,  "udp" },
-  { "csvr-sslproxy",   { NULL }, 3191,  "tcp" },
-  { "csvr-sslproxy",   { NULL }, 3191,  "udp" },
-  { "firemonrcc",      { NULL }, 3192,  "tcp" },
-  { "firemonrcc",      { NULL }, 3192,  "udp" },
-  { "spandataport",    { NULL }, 3193,  "tcp" },
-  { "spandataport",    { NULL }, 3193,  "udp" },
-  { "magbind",         { NULL }, 3194,  "tcp" },
-  { "magbind",         { NULL }, 3194,  "udp" },
-  { "ncu-1",           { NULL }, 3195,  "tcp" },
-  { "ncu-1",           { NULL }, 3195,  "udp" },
-  { "ncu-2",           { NULL }, 3196,  "tcp" },
-  { "ncu-2",           { NULL }, 3196,  "udp" },
-  { "embrace-dp-s",    { NULL }, 3197,  "tcp" },
-  { "embrace-dp-s",    { NULL }, 3197,  "udp" },
-  { "embrace-dp-c",    { NULL }, 3198,  "tcp" },
-  { "embrace-dp-c",    { NULL }, 3198,  "udp" },
-  { "dmod-workspace",  { NULL }, 3199,  "tcp" },
-  { "dmod-workspace",  { NULL }, 3199,  "udp" },
-  { "tick-port",       { NULL }, 3200,  "tcp" },
-  { "tick-port",       { NULL }, 3200,  "udp" },
-  { "cpq-tasksmart",   { NULL }, 3201,  "tcp" },
-  { "cpq-tasksmart",   { NULL }, 3201,  "udp" },
-  { "intraintra",      { NULL }, 3202,  "tcp" },
-  { "intraintra",      { NULL }, 3202,  "udp" },
-  { "netwatcher-mon",  { NULL }, 3203,  "tcp" },
-  { "netwatcher-mon",  { NULL }, 3203,  "udp" },
-  { "netwatcher-db",   { NULL }, 3204,  "tcp" },
-  { "netwatcher-db",   { NULL }, 3204,  "udp" },
-  { "isns",            { NULL }, 3205,  "tcp" },
-  { "isns",            { NULL }, 3205,  "udp" },
-  { "ironmail",        { NULL }, 3206,  "tcp" },
-  { "ironmail",        { NULL }, 3206,  "udp" },
-  { "vx-auth-port",    { NULL }, 3207,  "tcp" },
-  { "vx-auth-port",    { NULL }, 3207,  "udp" },
-  { "pfu-prcallback",  { NULL }, 3208,  "tcp" },
-  { "pfu-prcallback",  { NULL }, 3208,  "udp" },
-  { "netwkpathengine", { NULL }, 3209,  "tcp" },
-  { "netwkpathengine", { NULL }, 3209,  "udp" },
-  { "flamenco-proxy",  { NULL }, 3210,  "tcp" },
-  { "flamenco-proxy",  { NULL }, 3210,  "udp" },
-  { "avsecuremgmt",    { NULL }, 3211,  "tcp" },
-  { "avsecuremgmt",    { NULL }, 3211,  "udp" },
-  { "surveyinst",      { NULL }, 3212,  "tcp" },
-  { "surveyinst",      { NULL }, 3212,  "udp" },
-  { "neon24x7",        { NULL }, 3213,  "tcp" },
-  { "neon24x7",        { NULL }, 3213,  "udp" },
-  { "jmq-daemon-1",    { NULL }, 3214,  "tcp" },
-  { "jmq-daemon-1",    { NULL }, 3214,  "udp" },
-  { "jmq-daemon-2",    { NULL }, 3215,  "tcp" },
-  { "jmq-daemon-2",    { NULL }, 3215,  "udp" },
-  { "ferrari-foam",    { NULL }, 3216,  "tcp" },
-  { "ferrari-foam",    { NULL }, 3216,  "udp" },
-  { "unite",           { NULL }, 3217,  "tcp" },
-  { "unite",           { NULL }, 3217,  "udp" },
-  { "smartpackets",    { NULL }, 3218,  "tcp" },
-  { "smartpackets",    { NULL }, 3218,  "udp" },
-  { "wms-messenger",   { NULL }, 3219,  "tcp" },
-  { "wms-messenger",   { NULL }, 3219,  "udp" },
-  { "xnm-ssl",         { NULL }, 3220,  "tcp" },
-  { "xnm-ssl",         { NULL }, 3220,  "udp" },
-  { "xnm-clear-text",  { NULL }, 3221,  "tcp" },
-  { "xnm-clear-text",  { NULL }, 3221,  "udp" },
-  { "glbp",            { NULL }, 3222,  "tcp" },
-  { "glbp",            { NULL }, 3222,  "udp" },
-  { "digivote",        { NULL }, 3223,  "tcp" },
-  { "digivote",        { NULL }, 3223,  "udp" },
-  { "aes-discovery",   { NULL }, 3224,  "tcp" },
-  { "aes-discovery",   { NULL }, 3224,  "udp" },
-  { "fcip-port",       { NULL }, 3225,  "tcp" },
-  { "fcip-port",       { NULL }, 3225,  "udp" },
-  { "isi-irp",         { NULL }, 3226,  "tcp" },
-  { "isi-irp",         { NULL }, 3226,  "udp" },
-  { "dwnmshttp",       { NULL }, 3227,  "tcp" },
-  { "dwnmshttp",       { NULL }, 3227,  "udp" },
-  { "dwmsgserver",     { NULL }, 3228,  "tcp" },
-  { "dwmsgserver",     { NULL }, 3228,  "udp" },
-  { "global-cd-port",  { NULL }, 3229,  "tcp" },
-  { "global-cd-port",  { NULL }, 3229,  "udp" },
-  { "sftdst-port",     { NULL }, 3230,  "tcp" },
-  { "sftdst-port",     { NULL }, 3230,  "udp" },
-  { "vidigo",          { NULL }, 3231,  "tcp" },
-  { "vidigo",          { NULL }, 3231,  "udp" },
-  { "mdtp",            { NULL }, 3232,  "tcp" },
-  { "mdtp",            { NULL }, 3232,  "udp" },
-  { "whisker",         { NULL }, 3233,  "tcp" },
-  { "whisker",         { NULL }, 3233,  "udp" },
-  { "alchemy",         { NULL }, 3234,  "tcp" },
-  { "alchemy",         { NULL }, 3234,  "udp" },
-  { "mdap-port",       { NULL }, 3235,  "tcp" },
-  { "mdap-port",       { NULL }, 3235,  "udp" },
-  { "apparenet-ts",    { NULL }, 3236,  "tcp" },
-  { "apparenet-ts",    { NULL }, 3236,  "udp" },
-  { "apparenet-tps",   { NULL }, 3237,  "tcp" },
-  { "apparenet-tps",   { NULL }, 3237,  "udp" },
-  { "apparenet-as",    { NULL }, 3238,  "tcp" },
-  { "apparenet-as",    { NULL }, 3238,  "udp" },
-  { "apparenet-ui",    { NULL }, 3239,  "tcp" },
-  { "apparenet-ui",    { NULL }, 3239,  "udp" },
-  { "triomotion",      { NULL }, 3240,  "tcp" },
-  { "triomotion",      { NULL }, 3240,  "udp" },
-  { "sysorb",          { NULL }, 3241,  "tcp" },
-  { "sysorb",          { NULL }, 3241,  "udp" },
-  { "sdp-id-port",     { NULL }, 3242,  "tcp" },
-  { "sdp-id-port",     { NULL }, 3242,  "udp" },
-  { "timelot",         { NULL }, 3243,  "tcp" },
-  { "timelot",         { NULL }, 3243,  "udp" },
-  { "onesaf",          { NULL }, 3244,  "tcp" },
-  { "onesaf",          { NULL }, 3244,  "udp" },
-  { "vieo-fe",         { NULL }, 3245,  "tcp" },
-  { "vieo-fe",         { NULL }, 3245,  "udp" },
-  { "dvt-system",      { NULL }, 3246,  "tcp" },
-  { "dvt-system",      { NULL }, 3246,  "udp" },
-  { "dvt-data",        { NULL }, 3247,  "tcp" },
-  { "dvt-data",        { NULL }, 3247,  "udp" },
-  { "procos-lm",       { NULL }, 3248,  "tcp" },
-  { "procos-lm",       { NULL }, 3248,  "udp" },
-  { "ssp",             { NULL }, 3249,  "tcp" },
-  { "ssp",             { NULL }, 3249,  "udp" },
-  { "hicp",            { NULL }, 3250,  "tcp" },
-  { "hicp",            { NULL }, 3250,  "udp" },
-  { "sysscanner",      { NULL }, 3251,  "tcp" },
-  { "sysscanner",      { NULL }, 3251,  "udp" },
-  { "dhe",             { NULL }, 3252,  "tcp" },
-  { "dhe",             { NULL }, 3252,  "udp" },
-  { "pda-data",        { NULL }, 3253,  "tcp" },
-  { "pda-data",        { NULL }, 3253,  "udp" },
-  { "pda-sys",         { NULL }, 3254,  "tcp" },
-  { "pda-sys",         { NULL }, 3254,  "udp" },
-  { "semaphore",       { NULL }, 3255,  "tcp" },
-  { "semaphore",       { NULL }, 3255,  "udp" },
-  { "cpqrpm-agent",    { NULL }, 3256,  "tcp" },
-  { "cpqrpm-agent",    { NULL }, 3256,  "udp" },
-  { "cpqrpm-server",   { NULL }, 3257,  "tcp" },
-  { "cpqrpm-server",   { NULL }, 3257,  "udp" },
-  { "ivecon-port",     { NULL }, 3258,  "tcp" },
-  { "ivecon-port",     { NULL }, 3258,  "udp" },
-  { "epncdp2",         { NULL }, 3259,  "tcp" },
-  { "epncdp2",         { NULL }, 3259,  "udp" },
-  { "iscsi-target",    { NULL }, 3260,  "tcp" },
-  { "iscsi-target",    { NULL }, 3260,  "udp" },
-  { "winshadow",       { NULL }, 3261,  "tcp" },
-  { "winshadow",       { NULL }, 3261,  "udp" },
-  { "necp",            { NULL }, 3262,  "tcp" },
-  { "necp",            { NULL }, 3262,  "udp" },
-  { "ecolor-imager",   { NULL }, 3263,  "tcp" },
-  { "ecolor-imager",   { NULL }, 3263,  "udp" },
-  { "ccmail",          { NULL }, 3264,  "tcp" },
-  { "ccmail",          { NULL }, 3264,  "udp" },
-  { "altav-tunnel",    { NULL }, 3265,  "tcp" },
-  { "altav-tunnel",    { NULL }, 3265,  "udp" },
-  { "ns-cfg-server",   { NULL }, 3266,  "tcp" },
-  { "ns-cfg-server",   { NULL }, 3266,  "udp" },
-  { "ibm-dial-out",    { NULL }, 3267,  "tcp" },
-  { "ibm-dial-out",    { NULL }, 3267,  "udp" },
-  { "msft-gc",         { NULL }, 3268,  "tcp" },
-  { "msft-gc",         { NULL }, 3268,  "udp" },
-  { "msft-gc-ssl",     { NULL }, 3269,  "tcp" },
-  { "msft-gc-ssl",     { NULL }, 3269,  "udp" },
-  { "verismart",       { NULL }, 3270,  "tcp" },
-  { "verismart",       { NULL }, 3270,  "udp" },
-  { "csoft-prev",      { NULL }, 3271,  "tcp" },
-  { "csoft-prev",      { NULL }, 3271,  "udp" },
-  { "user-manager",    { NULL }, 3272,  "tcp" },
-  { "user-manager",    { NULL }, 3272,  "udp" },
-  { "sxmp",            { NULL }, 3273,  "tcp" },
-  { "sxmp",            { NULL }, 3273,  "udp" },
-  { "ordinox-server",  { NULL }, 3274,  "tcp" },
-  { "ordinox-server",  { NULL }, 3274,  "udp" },
-  { "samd",            { NULL }, 3275,  "tcp" },
-  { "samd",            { NULL }, 3275,  "udp" },
-  { "maxim-asics",     { NULL }, 3276,  "tcp" },
-  { "maxim-asics",     { NULL }, 3276,  "udp" },
-  { "awg-proxy",       { NULL }, 3277,  "tcp" },
-  { "awg-proxy",       { NULL }, 3277,  "udp" },
-  { "lkcmserver",      { NULL }, 3278,  "tcp" },
-  { "lkcmserver",      { NULL }, 3278,  "udp" },
-  { "admind",          { NULL }, 3279,  "tcp" },
-  { "admind",          { NULL }, 3279,  "udp" },
-  { "vs-server",       { NULL }, 3280,  "tcp" },
-  { "vs-server",       { NULL }, 3280,  "udp" },
-  { "sysopt",          { NULL }, 3281,  "tcp" },
-  { "sysopt",          { NULL }, 3281,  "udp" },
-  { "datusorb",        { NULL }, 3282,  "tcp" },
-  { "datusorb",        { NULL }, 3282,  "udp" },
-  { "net-assistant",   { NULL }, 3283,  "tcp" },
-  { "net-assistant",   { NULL }, 3283,  "udp" },
-  { "4talk",           { NULL }, 3284,  "tcp" },
-  { "4talk",           { NULL }, 3284,  "udp" },
-  { "plato",           { NULL }, 3285,  "tcp" },
-  { "plato",           { NULL }, 3285,  "udp" },
-  { "e-net",           { NULL }, 3286,  "tcp" },
-  { "e-net",           { NULL }, 3286,  "udp" },
-  { "directvdata",     { NULL }, 3287,  "tcp" },
-  { "directvdata",     { NULL }, 3287,  "udp" },
-  { "cops",            { NULL }, 3288,  "tcp" },
-  { "cops",            { NULL }, 3288,  "udp" },
-  { "enpc",            { NULL }, 3289,  "tcp" },
-  { "enpc",            { NULL }, 3289,  "udp" },
-  { "caps-lm",         { NULL }, 3290,  "tcp" },
-  { "caps-lm",         { NULL }, 3290,  "udp" },
-  { "sah-lm",          { NULL }, 3291,  "tcp" },
-  { "sah-lm",          { NULL }, 3291,  "udp" },
-  { "cart-o-rama",     { NULL }, 3292,  "tcp" },
-  { "cart-o-rama",     { NULL }, 3292,  "udp" },
-  { "fg-fps",          { NULL }, 3293,  "tcp" },
-  { "fg-fps",          { NULL }, 3293,  "udp" },
-  { "fg-gip",          { NULL }, 3294,  "tcp" },
-  { "fg-gip",          { NULL }, 3294,  "udp" },
-  { "dyniplookup",     { NULL }, 3295,  "tcp" },
-  { "dyniplookup",     { NULL }, 3295,  "udp" },
-  { "rib-slm",         { NULL }, 3296,  "tcp" },
-  { "rib-slm",         { NULL }, 3296,  "udp" },
-  { "cytel-lm",        { NULL }, 3297,  "tcp" },
-  { "cytel-lm",        { NULL }, 3297,  "udp" },
-  { "deskview",        { NULL }, 3298,  "tcp" },
-  { "deskview",        { NULL }, 3298,  "udp" },
-  { "pdrncs",          { NULL }, 3299,  "tcp" },
-  { "pdrncs",          { NULL }, 3299,  "udp" },
-  { "mcs-fastmail",    { NULL }, 3302,  "tcp" },
-  { "mcs-fastmail",    { NULL }, 3302,  "udp" },
-  { "opsession-clnt",  { NULL }, 3303,  "tcp" },
-  { "opsession-clnt",  { NULL }, 3303,  "udp" },
-  { "opsession-srvr",  { NULL }, 3304,  "tcp" },
-  { "opsession-srvr",  { NULL }, 3304,  "udp" },
-  { "odette-ftp",      { NULL }, 3305,  "tcp" },
-  { "odette-ftp",      { NULL }, 3305,  "udp" },
-  { "mysql",           { NULL }, 3306,  "tcp" },
-  { "mysql",           { NULL }, 3306,  "udp" },
-  { "opsession-prxy",  { NULL }, 3307,  "tcp" },
-  { "opsession-prxy",  { NULL }, 3307,  "udp" },
-  { "tns-server",      { NULL }, 3308,  "tcp" },
-  { "tns-server",      { NULL }, 3308,  "udp" },
-  { "tns-adv",         { NULL }, 3309,  "tcp" },
-  { "tns-adv",         { NULL }, 3309,  "udp" },
-  { "dyna-access",     { NULL }, 3310,  "tcp" },
-  { "dyna-access",     { NULL }, 3310,  "udp" },
-  { "mcns-tel-ret",    { NULL }, 3311,  "tcp" },
-  { "mcns-tel-ret",    { NULL }, 3311,  "udp" },
-  { "appman-server",   { NULL }, 3312,  "tcp" },
-  { "appman-server",   { NULL }, 3312,  "udp" },
-  { "uorb",            { NULL }, 3313,  "tcp" },
-  { "uorb",            { NULL }, 3313,  "udp" },
-  { "uohost",          { NULL }, 3314,  "tcp" },
-  { "uohost",          { NULL }, 3314,  "udp" },
-  { "cdid",            { NULL }, 3315,  "tcp" },
-  { "cdid",            { NULL }, 3315,  "udp" },
-  { "aicc-cmi",        { NULL }, 3316,  "tcp" },
-  { "aicc-cmi",        { NULL }, 3316,  "udp" },
-  { "vsaiport",        { NULL }, 3317,  "tcp" },
-  { "vsaiport",        { NULL }, 3317,  "udp" },
-  { "ssrip",           { NULL }, 3318,  "tcp" },
-  { "ssrip",           { NULL }, 3318,  "udp" },
-  { "sdt-lmd",         { NULL }, 3319,  "tcp" },
-  { "sdt-lmd",         { NULL }, 3319,  "udp" },
-  { "officelink2000",  { NULL }, 3320,  "tcp" },
-  { "officelink2000",  { NULL }, 3320,  "udp" },
-  { "vnsstr",          { NULL }, 3321,  "tcp" },
-  { "vnsstr",          { NULL }, 3321,  "udp" },
-  { "sftu",            { NULL }, 3326,  "tcp" },
-  { "sftu",            { NULL }, 3326,  "udp" },
-  { "bbars",           { NULL }, 3327,  "tcp" },
-  { "bbars",           { NULL }, 3327,  "udp" },
-  { "egptlm",          { NULL }, 3328,  "tcp" },
-  { "egptlm",          { NULL }, 3328,  "udp" },
-  { "hp-device-disc",  { NULL }, 3329,  "tcp" },
-  { "hp-device-disc",  { NULL }, 3329,  "udp" },
-  { "mcs-calypsoicf",  { NULL }, 3330,  "tcp" },
-  { "mcs-calypsoicf",  { NULL }, 3330,  "udp" },
-  { "mcs-messaging",   { NULL }, 3331,  "tcp" },
-  { "mcs-messaging",   { NULL }, 3331,  "udp" },
-  { "mcs-mailsvr",     { NULL }, 3332,  "tcp" },
-  { "mcs-mailsvr",     { NULL }, 3332,  "udp" },
-  { "dec-notes",       { NULL }, 3333,  "tcp" },
-  { "dec-notes",       { NULL }, 3333,  "udp" },
-  { "directv-web",     { NULL }, 3334,  "tcp" },
-  { "directv-web",     { NULL }, 3334,  "udp" },
-  { "directv-soft",    { NULL }, 3335,  "tcp" },
-  { "directv-soft",    { NULL }, 3335,  "udp" },
-  { "directv-tick",    { NULL }, 3336,  "tcp" },
-  { "directv-tick",    { NULL }, 3336,  "udp" },
-  { "directv-catlg",   { NULL }, 3337,  "tcp" },
-  { "directv-catlg",   { NULL }, 3337,  "udp" },
-  { "anet-b",          { NULL }, 3338,  "tcp" },
-  { "anet-b",          { NULL }, 3338,  "udp" },
-  { "anet-l",          { NULL }, 3339,  "tcp" },
-  { "anet-l",          { NULL }, 3339,  "udp" },
-  { "anet-m",          { NULL }, 3340,  "tcp" },
-  { "anet-m",          { NULL }, 3340,  "udp" },
-  { "anet-h",          { NULL }, 3341,  "tcp" },
-  { "anet-h",          { NULL }, 3341,  "udp" },
-  { "webtie",          { NULL }, 3342,  "tcp" },
-  { "webtie",          { NULL }, 3342,  "udp" },
-  { "ms-cluster-net",  { NULL }, 3343,  "tcp" },
-  { "ms-cluster-net",  { NULL }, 3343,  "udp" },
-  { "bnt-manager",     { NULL }, 3344,  "tcp" },
-  { "bnt-manager",     { NULL }, 3344,  "udp" },
-  { "influence",       { NULL }, 3345,  "tcp" },
-  { "influence",       { NULL }, 3345,  "udp" },
-  { "trnsprntproxy",   { NULL }, 3346,  "tcp" },
-  { "trnsprntproxy",   { NULL }, 3346,  "udp" },
-  { "phoenix-rpc",     { NULL }, 3347,  "tcp" },
-  { "phoenix-rpc",     { NULL }, 3347,  "udp" },
-  { "pangolin-laser",  { NULL }, 3348,  "tcp" },
-  { "pangolin-laser",  { NULL }, 3348,  "udp" },
-  { "chevinservices",  { NULL }, 3349,  "tcp" },
-  { "chevinservices",  { NULL }, 3349,  "udp" },
-  { "findviatv",       { NULL }, 3350,  "tcp" },
-  { "findviatv",       { NULL }, 3350,  "udp" },
-  { "btrieve",         { NULL }, 3351,  "tcp" },
-  { "btrieve",         { NULL }, 3351,  "udp" },
-  { "ssql",            { NULL }, 3352,  "tcp" },
-  { "ssql",            { NULL }, 3352,  "udp" },
-  { "fatpipe",         { NULL }, 3353,  "tcp" },
-  { "fatpipe",         { NULL }, 3353,  "udp" },
-  { "suitjd",          { NULL }, 3354,  "tcp" },
-  { "suitjd",          { NULL }, 3354,  "udp" },
-  { "ordinox-dbase",   { NULL }, 3355,  "tcp" },
-  { "ordinox-dbase",   { NULL }, 3355,  "udp" },
-  { "upnotifyps",      { NULL }, 3356,  "tcp" },
-  { "upnotifyps",      { NULL }, 3356,  "udp" },
-  { "adtech-test",     { NULL }, 3357,  "tcp" },
-  { "adtech-test",     { NULL }, 3357,  "udp" },
-  { "mpsysrmsvr",      { NULL }, 3358,  "tcp" },
-  { "mpsysrmsvr",      { NULL }, 3358,  "udp" },
-  { "wg-netforce",     { NULL }, 3359,  "tcp" },
-  { "wg-netforce",     { NULL }, 3359,  "udp" },
-  { "kv-server",       { NULL }, 3360,  "tcp" },
-  { "kv-server",       { NULL }, 3360,  "udp" },
-  { "kv-agent",        { NULL }, 3361,  "tcp" },
-  { "kv-agent",        { NULL }, 3361,  "udp" },
-  { "dj-ilm",          { NULL }, 3362,  "tcp" },
-  { "dj-ilm",          { NULL }, 3362,  "udp" },
-  { "nati-vi-server",  { NULL }, 3363,  "tcp" },
-  { "nati-vi-server",  { NULL }, 3363,  "udp" },
-  { "creativeserver",  { NULL }, 3364,  "tcp" },
-  { "creativeserver",  { NULL }, 3364,  "udp" },
-  { "contentserver",   { NULL }, 3365,  "tcp" },
-  { "contentserver",   { NULL }, 3365,  "udp" },
-  { "creativepartnr",  { NULL }, 3366,  "tcp" },
-  { "creativepartnr",  { NULL }, 3366,  "udp" },
-  { "tip2",            { NULL }, 3372,  "tcp" },
-  { "tip2",            { NULL }, 3372,  "udp" },
-  { "lavenir-lm",      { NULL }, 3373,  "tcp" },
-  { "lavenir-lm",      { NULL }, 3373,  "udp" },
-  { "cluster-disc",    { NULL }, 3374,  "tcp" },
-  { "cluster-disc",    { NULL }, 3374,  "udp" },
-  { "vsnm-agent",      { NULL }, 3375,  "tcp" },
-  { "vsnm-agent",      { NULL }, 3375,  "udp" },
-  { "cdbroker",        { NULL }, 3376,  "tcp" },
-  { "cdbroker",        { NULL }, 3376,  "udp" },
-  { "cogsys-lm",       { NULL }, 3377,  "tcp" },
-  { "cogsys-lm",       { NULL }, 3377,  "udp" },
-  { "wsicopy",         { NULL }, 3378,  "tcp" },
-  { "wsicopy",         { NULL }, 3378,  "udp" },
-  { "socorfs",         { NULL }, 3379,  "tcp" },
-  { "socorfs",         { NULL }, 3379,  "udp" },
-  { "sns-channels",    { NULL }, 3380,  "tcp" },
-  { "sns-channels",    { NULL }, 3380,  "udp" },
-  { "geneous",         { NULL }, 3381,  "tcp" },
-  { "geneous",         { NULL }, 3381,  "udp" },
-  { "fujitsu-neat",    { NULL }, 3382,  "tcp" },
-  { "fujitsu-neat",    { NULL }, 3382,  "udp" },
-  { "esp-lm",          { NULL }, 3383,  "tcp" },
-  { "esp-lm",          { NULL }, 3383,  "udp" },
-  { "hp-clic",         { NULL }, 3384,  "tcp" },
-  { "hp-clic",         { NULL }, 3384,  "udp" },
-  { "qnxnetman",       { NULL }, 3385,  "tcp" },
-  { "qnxnetman",       { NULL }, 3385,  "udp" },
-  { "gprs-data",       { NULL }, 3386,  "tcp" },
-  { "gprs-sig",        { NULL }, 3386,  "udp" },
-  { "backroomnet",     { NULL }, 3387,  "tcp" },
-  { "backroomnet",     { NULL }, 3387,  "udp" },
-  { "cbserver",        { NULL }, 3388,  "tcp" },
-  { "cbserver",        { NULL }, 3388,  "udp" },
-  { "ms-wbt-server",   { NULL }, 3389,  "tcp" },
-  { "ms-wbt-server",   { NULL }, 3389,  "udp" },
-  { "dsc",             { NULL }, 3390,  "tcp" },
-  { "dsc",             { NULL }, 3390,  "udp" },
-  { "savant",          { NULL }, 3391,  "tcp" },
-  { "savant",          { NULL }, 3391,  "udp" },
-  { "efi-lm",          { NULL }, 3392,  "tcp" },
-  { "efi-lm",          { NULL }, 3392,  "udp" },
-  { "d2k-tapestry1",   { NULL }, 3393,  "tcp" },
-  { "d2k-tapestry1",   { NULL }, 3393,  "udp" },
-  { "d2k-tapestry2",   { NULL }, 3394,  "tcp" },
-  { "d2k-tapestry2",   { NULL }, 3394,  "udp" },
-  { "dyna-lm",         { NULL }, 3395,  "tcp" },
-  { "dyna-lm",         { NULL }, 3395,  "udp" },
-  { "printer_agent",   { NULL }, 3396,  "tcp" },
-  { "printer_agent",   { NULL }, 3396,  "udp" },
-  { "cloanto-lm",      { NULL }, 3397,  "tcp" },
-  { "cloanto-lm",      { NULL }, 3397,  "udp" },
-  { "mercantile",      { NULL }, 3398,  "tcp" },
-  { "mercantile",      { NULL }, 3398,  "udp" },
-  { "csms",            { NULL }, 3399,  "tcp" },
-  { "csms",            { NULL }, 3399,  "udp" },
-  { "csms2",           { NULL }, 3400,  "tcp" },
-  { "csms2",           { NULL }, 3400,  "udp" },
-  { "filecast",        { NULL }, 3401,  "tcp" },
-  { "filecast",        { NULL }, 3401,  "udp" },
-  { "fxaengine-net",   { NULL }, 3402,  "tcp" },
-  { "fxaengine-net",   { NULL }, 3402,  "udp" },
-  { "nokia-ann-ch1",   { NULL }, 3405,  "tcp" },
-  { "nokia-ann-ch1",   { NULL }, 3405,  "udp" },
-  { "nokia-ann-ch2",   { NULL }, 3406,  "tcp" },
-  { "nokia-ann-ch2",   { NULL }, 3406,  "udp" },
-  { "ldap-admin",      { NULL }, 3407,  "tcp" },
-  { "ldap-admin",      { NULL }, 3407,  "udp" },
-  { "BESApi",          { NULL }, 3408,  "tcp" },
-  { "BESApi",          { NULL }, 3408,  "udp" },
-  { "networklens",     { NULL }, 3409,  "tcp" },
-  { "networklens",     { NULL }, 3409,  "udp" },
-  { "networklenss",    { NULL }, 3410,  "tcp" },
-  { "networklenss",    { NULL }, 3410,  "udp" },
-  { "biolink-auth",    { NULL }, 3411,  "tcp" },
-  { "biolink-auth",    { NULL }, 3411,  "udp" },
-  { "xmlblaster",      { NULL }, 3412,  "tcp" },
-  { "xmlblaster",      { NULL }, 3412,  "udp" },
-  { "svnet",           { NULL }, 3413,  "tcp" },
-  { "svnet",           { NULL }, 3413,  "udp" },
-  { "wip-port",        { NULL }, 3414,  "tcp" },
-  { "wip-port",        { NULL }, 3414,  "udp" },
-  { "bcinameservice",  { NULL }, 3415,  "tcp" },
-  { "bcinameservice",  { NULL }, 3415,  "udp" },
-  { "commandport",     { NULL }, 3416,  "tcp" },
-  { "commandport",     { NULL }, 3416,  "udp" },
-  { "csvr",            { NULL }, 3417,  "tcp" },
-  { "csvr",            { NULL }, 3417,  "udp" },
-  { "rnmap",           { NULL }, 3418,  "tcp" },
-  { "rnmap",           { NULL }, 3418,  "udp" },
-  { "softaudit",       { NULL }, 3419,  "tcp" },
-  { "softaudit",       { NULL }, 3419,  "udp" },
-  { "ifcp-port",       { NULL }, 3420,  "tcp" },
-  { "ifcp-port",       { NULL }, 3420,  "udp" },
-  { "bmap",            { NULL }, 3421,  "tcp" },
-  { "bmap",            { NULL }, 3421,  "udp" },
-  { "rusb-sys-port",   { NULL }, 3422,  "tcp" },
-  { "rusb-sys-port",   { NULL }, 3422,  "udp" },
-  { "xtrm",            { NULL }, 3423,  "tcp" },
-  { "xtrm",            { NULL }, 3423,  "udp" },
-  { "xtrms",           { NULL }, 3424,  "tcp" },
-  { "xtrms",           { NULL }, 3424,  "udp" },
-  { "agps-port",       { NULL }, 3425,  "tcp" },
-  { "agps-port",       { NULL }, 3425,  "udp" },
-  { "arkivio",         { NULL }, 3426,  "tcp" },
-  { "arkivio",         { NULL }, 3426,  "udp" },
-  { "websphere-snmp",  { NULL }, 3427,  "tcp" },
-  { "websphere-snmp",  { NULL }, 3427,  "udp" },
-  { "twcss",           { NULL }, 3428,  "tcp" },
-  { "twcss",           { NULL }, 3428,  "udp" },
-  { "gcsp",            { NULL }, 3429,  "tcp" },
-  { "gcsp",            { NULL }, 3429,  "udp" },
-  { "ssdispatch",      { NULL }, 3430,  "tcp" },
-  { "ssdispatch",      { NULL }, 3430,  "udp" },
-  { "ndl-als",         { NULL }, 3431,  "tcp" },
-  { "ndl-als",         { NULL }, 3431,  "udp" },
-  { "osdcp",           { NULL }, 3432,  "tcp" },
-  { "osdcp",           { NULL }, 3432,  "udp" },
-  { "alta-smp",        { NULL }, 3433,  "tcp" },
-  { "alta-smp",        { NULL }, 3433,  "udp" },
-  { "opencm",          { NULL }, 3434,  "tcp" },
-  { "opencm",          { NULL }, 3434,  "udp" },
-  { "pacom",           { NULL }, 3435,  "tcp" },
-  { "pacom",           { NULL }, 3435,  "udp" },
-  { "gc-config",       { NULL }, 3436,  "tcp" },
-  { "gc-config",       { NULL }, 3436,  "udp" },
-  { "autocueds",       { NULL }, 3437,  "tcp" },
-  { "autocueds",       { NULL }, 3437,  "udp" },
-  { "spiral-admin",    { NULL }, 3438,  "tcp" },
-  { "spiral-admin",    { NULL }, 3438,  "udp" },
-  { "hri-port",        { NULL }, 3439,  "tcp" },
-  { "hri-port",        { NULL }, 3439,  "udp" },
-  { "ans-console",     { NULL }, 3440,  "tcp" },
-  { "ans-console",     { NULL }, 3440,  "udp" },
-  { "connect-client",  { NULL }, 3441,  "tcp" },
-  { "connect-client",  { NULL }, 3441,  "udp" },
-  { "connect-server",  { NULL }, 3442,  "tcp" },
-  { "connect-server",  { NULL }, 3442,  "udp" },
-  { "ov-nnm-websrv",   { NULL }, 3443,  "tcp" },
-  { "ov-nnm-websrv",   { NULL }, 3443,  "udp" },
-  { "denali-server",   { NULL }, 3444,  "tcp" },
-  { "denali-server",   { NULL }, 3444,  "udp" },
-  { "monp",            { NULL }, 3445,  "tcp" },
-  { "monp",            { NULL }, 3445,  "udp" },
-  { "3comfaxrpc",      { NULL }, 3446,  "tcp" },
-  { "3comfaxrpc",      { NULL }, 3446,  "udp" },
-  { "directnet",       { NULL }, 3447,  "tcp" },
-  { "directnet",       { NULL }, 3447,  "udp" },
-  { "dnc-port",        { NULL }, 3448,  "tcp" },
-  { "dnc-port",        { NULL }, 3448,  "udp" },
-  { "hotu-chat",       { NULL }, 3449,  "tcp" },
-  { "hotu-chat",       { NULL }, 3449,  "udp" },
-  { "castorproxy",     { NULL }, 3450,  "tcp" },
-  { "castorproxy",     { NULL }, 3450,  "udp" },
-  { "asam",            { NULL }, 3451,  "tcp" },
-  { "asam",            { NULL }, 3451,  "udp" },
-  { "sabp-signal",     { NULL }, 3452,  "tcp" },
-  { "sabp-signal",     { NULL }, 3452,  "udp" },
-  { "pscupd",          { NULL }, 3453,  "tcp" },
-  { "pscupd",          { NULL }, 3453,  "udp" },
-  { "mira",            { NULL }, 3454,  "tcp" },
-  { "prsvp",           { NULL }, 3455,  "tcp" },
-  { "prsvp",           { NULL }, 3455,  "udp" },
-  { "vat",             { NULL }, 3456,  "tcp" },
-  { "vat",             { NULL }, 3456,  "udp" },
-  { "vat-control",     { NULL }, 3457,  "tcp" },
-  { "vat-control",     { NULL }, 3457,  "udp" },
-  { "d3winosfi",       { NULL }, 3458,  "tcp" },
-  { "d3winosfi",       { NULL }, 3458,  "udp" },
-  { "integral",        { NULL }, 3459,  "tcp" },
-  { "integral",        { NULL }, 3459,  "udp" },
-  { "edm-manager",     { NULL }, 3460,  "tcp" },
-  { "edm-manager",     { NULL }, 3460,  "udp" },
-  { "edm-stager",      { NULL }, 3461,  "tcp" },
-  { "edm-stager",      { NULL }, 3461,  "udp" },
-  { "edm-std-notify",  { NULL }, 3462,  "tcp" },
-  { "edm-std-notify",  { NULL }, 3462,  "udp" },
-  { "edm-adm-notify",  { NULL }, 3463,  "tcp" },
-  { "edm-adm-notify",  { NULL }, 3463,  "udp" },
-  { "edm-mgr-sync",    { NULL }, 3464,  "tcp" },
-  { "edm-mgr-sync",    { NULL }, 3464,  "udp" },
-  { "edm-mgr-cntrl",   { NULL }, 3465,  "tcp" },
-  { "edm-mgr-cntrl",   { NULL }, 3465,  "udp" },
-  { "workflow",        { NULL }, 3466,  "tcp" },
-  { "workflow",        { NULL }, 3466,  "udp" },
-  { "rcst",            { NULL }, 3467,  "tcp" },
-  { "rcst",            { NULL }, 3467,  "udp" },
-  { "ttcmremotectrl",  { NULL }, 3468,  "tcp" },
-  { "ttcmremotectrl",  { NULL }, 3468,  "udp" },
-  { "pluribus",        { NULL }, 3469,  "tcp" },
-  { "pluribus",        { NULL }, 3469,  "udp" },
-  { "jt400",           { NULL }, 3470,  "tcp" },
-  { "jt400",           { NULL }, 3470,  "udp" },
-  { "jt400-ssl",       { NULL }, 3471,  "tcp" },
-  { "jt400-ssl",       { NULL }, 3471,  "udp" },
-  { "jaugsremotec-1",  { NULL }, 3472,  "tcp" },
-  { "jaugsremotec-1",  { NULL }, 3472,  "udp" },
-  { "jaugsremotec-2",  { NULL }, 3473,  "tcp" },
-  { "jaugsremotec-2",  { NULL }, 3473,  "udp" },
-  { "ttntspauto",      { NULL }, 3474,  "tcp" },
-  { "ttntspauto",      { NULL }, 3474,  "udp" },
-  { "genisar-port",    { NULL }, 3475,  "tcp" },
-  { "genisar-port",    { NULL }, 3475,  "udp" },
-  { "nppmp",           { NULL }, 3476,  "tcp" },
-  { "nppmp",           { NULL }, 3476,  "udp" },
-  { "ecomm",           { NULL }, 3477,  "tcp" },
-  { "ecomm",           { NULL }, 3477,  "udp" },
-  { "stun",            { NULL }, 3478,  "tcp" },
-  { "stun",            { NULL }, 3478,  "udp" },
-  { "turn",            { NULL }, 3478,  "tcp" },
-  { "turn",            { NULL }, 3478,  "udp" },
-  { "stun-behavior",   { NULL }, 3478,  "tcp" },
-  { "stun-behavior",   { NULL }, 3478,  "udp" },
-  { "twrpc",           { NULL }, 3479,  "tcp" },
-  { "twrpc",           { NULL }, 3479,  "udp" },
-  { "plethora",        { NULL }, 3480,  "tcp" },
-  { "plethora",        { NULL }, 3480,  "udp" },
-  { "cleanerliverc",   { NULL }, 3481,  "tcp" },
-  { "cleanerliverc",   { NULL }, 3481,  "udp" },
-  { "vulture",         { NULL }, 3482,  "tcp" },
-  { "vulture",         { NULL }, 3482,  "udp" },
-  { "slim-devices",    { NULL }, 3483,  "tcp" },
-  { "slim-devices",    { NULL }, 3483,  "udp" },
-  { "gbs-stp",         { NULL }, 3484,  "tcp" },
-  { "gbs-stp",         { NULL }, 3484,  "udp" },
-  { "celatalk",        { NULL }, 3485,  "tcp" },
-  { "celatalk",        { NULL }, 3485,  "udp" },
-  { "ifsf-hb-port",    { NULL }, 3486,  "tcp" },
-  { "ifsf-hb-port",    { NULL }, 3486,  "udp" },
-  { "ltctcp",          { NULL }, 3487,  "tcp" },
-  { "ltcudp",          { NULL }, 3487,  "udp" },
-  { "fs-rh-srv",       { NULL }, 3488,  "tcp" },
-  { "fs-rh-srv",       { NULL }, 3488,  "udp" },
-  { "dtp-dia",         { NULL }, 3489,  "tcp" },
-  { "dtp-dia",         { NULL }, 3489,  "udp" },
-  { "colubris",        { NULL }, 3490,  "tcp" },
-  { "colubris",        { NULL }, 3490,  "udp" },
-  { "swr-port",        { NULL }, 3491,  "tcp" },
-  { "swr-port",        { NULL }, 3491,  "udp" },
-  { "tvdumtray-port",  { NULL }, 3492,  "tcp" },
-  { "tvdumtray-port",  { NULL }, 3492,  "udp" },
-  { "nut",             { NULL }, 3493,  "tcp" },
-  { "nut",             { NULL }, 3493,  "udp" },
-  { "ibm3494",         { NULL }, 3494,  "tcp" },
-  { "ibm3494",         { NULL }, 3494,  "udp" },
-  { "seclayer-tcp",    { NULL }, 3495,  "tcp" },
-  { "seclayer-tcp",    { NULL }, 3495,  "udp" },
-  { "seclayer-tls",    { NULL }, 3496,  "tcp" },
-  { "seclayer-tls",    { NULL }, 3496,  "udp" },
-  { "ipether232port",  { NULL }, 3497,  "tcp" },
-  { "ipether232port",  { NULL }, 3497,  "udp" },
-  { "dashpas-port",    { NULL }, 3498,  "tcp" },
-  { "dashpas-port",    { NULL }, 3498,  "udp" },
-  { "sccip-media",     { NULL }, 3499,  "tcp" },
-  { "sccip-media",     { NULL }, 3499,  "udp" },
-  { "rtmp-port",       { NULL }, 3500,  "tcp" },
-  { "rtmp-port",       { NULL }, 3500,  "udp" },
-  { "isoft-p2p",       { NULL }, 3501,  "tcp" },
-  { "isoft-p2p",       { NULL }, 3501,  "udp" },
-  { "avinstalldisc",   { NULL }, 3502,  "tcp" },
-  { "avinstalldisc",   { NULL }, 3502,  "udp" },
-  { "lsp-ping",        { NULL }, 3503,  "tcp" },
-  { "lsp-ping",        { NULL }, 3503,  "udp" },
-  { "ironstorm",       { NULL }, 3504,  "tcp" },
-  { "ironstorm",       { NULL }, 3504,  "udp" },
-  { "ccmcomm",         { NULL }, 3505,  "tcp" },
-  { "ccmcomm",         { NULL }, 3505,  "udp" },
-  { "apc-3506",        { NULL }, 3506,  "tcp" },
-  { "apc-3506",        { NULL }, 3506,  "udp" },
-  { "nesh-broker",     { NULL }, 3507,  "tcp" },
-  { "nesh-broker",     { NULL }, 3507,  "udp" },
-  { "interactionweb",  { NULL }, 3508,  "tcp" },
-  { "interactionweb",  { NULL }, 3508,  "udp" },
-  { "vt-ssl",          { NULL }, 3509,  "tcp" },
-  { "vt-ssl",          { NULL }, 3509,  "udp" },
-  { "xss-port",        { NULL }, 3510,  "tcp" },
-  { "xss-port",        { NULL }, 3510,  "udp" },
-  { "webmail-2",       { NULL }, 3511,  "tcp" },
-  { "webmail-2",       { NULL }, 3511,  "udp" },
-  { "aztec",           { NULL }, 3512,  "tcp" },
-  { "aztec",           { NULL }, 3512,  "udp" },
-  { "arcpd",           { NULL }, 3513,  "tcp" },
-  { "arcpd",           { NULL }, 3513,  "udp" },
-  { "must-p2p",        { NULL }, 3514,  "tcp" },
-  { "must-p2p",        { NULL }, 3514,  "udp" },
-  { "must-backplane",  { NULL }, 3515,  "tcp" },
-  { "must-backplane",  { NULL }, 3515,  "udp" },
-  { "smartcard-port",  { NULL }, 3516,  "tcp" },
-  { "smartcard-port",  { NULL }, 3516,  "udp" },
-  { "802-11-iapp",     { NULL }, 3517,  "tcp" },
-  { "802-11-iapp",     { NULL }, 3517,  "udp" },
-  { "artifact-msg",    { NULL }, 3518,  "tcp" },
-  { "artifact-msg",    { NULL }, 3518,  "udp" },
-  { "nvmsgd",          { NULL }, 3519,  "tcp" },
-  { "galileo",         { NULL }, 3519,  "udp" },
-  { "galileolog",      { NULL }, 3520,  "tcp" },
-  { "galileolog",      { NULL }, 3520,  "udp" },
-  { "mc3ss",           { NULL }, 3521,  "tcp" },
-  { "mc3ss",           { NULL }, 3521,  "udp" },
-  { "nssocketport",    { NULL }, 3522,  "tcp" },
-  { "nssocketport",    { NULL }, 3522,  "udp" },
-  { "odeumservlink",   { NULL }, 3523,  "tcp" },
-  { "odeumservlink",   { NULL }, 3523,  "udp" },
-  { "ecmport",         { NULL }, 3524,  "tcp" },
-  { "ecmport",         { NULL }, 3524,  "udp" },
-  { "eisport",         { NULL }, 3525,  "tcp" },
-  { "eisport",         { NULL }, 3525,  "udp" },
-  { "starquiz-port",   { NULL }, 3526,  "tcp" },
-  { "starquiz-port",   { NULL }, 3526,  "udp" },
-  { "beserver-msg-q",  { NULL }, 3527,  "tcp" },
-  { "beserver-msg-q",  { NULL }, 3527,  "udp" },
-  { "jboss-iiop",      { NULL }, 3528,  "tcp" },
-  { "jboss-iiop",      { NULL }, 3528,  "udp" },
-  { "jboss-iiop-ssl",  { NULL }, 3529,  "tcp" },
-  { "jboss-iiop-ssl",  { NULL }, 3529,  "udp" },
-  { "gf",              { NULL }, 3530,  "tcp" },
-  { "gf",              { NULL }, 3530,  "udp" },
-  { "joltid",          { NULL }, 3531,  "tcp" },
-  { "joltid",          { NULL }, 3531,  "udp" },
-  { "raven-rmp",       { NULL }, 3532,  "tcp" },
-  { "raven-rmp",       { NULL }, 3532,  "udp" },
-  { "raven-rdp",       { NULL }, 3533,  "tcp" },
-  { "raven-rdp",       { NULL }, 3533,  "udp" },
-  { "urld-port",       { NULL }, 3534,  "tcp" },
-  { "urld-port",       { NULL }, 3534,  "udp" },
-  { "ms-la",           { NULL }, 3535,  "tcp" },
-  { "ms-la",           { NULL }, 3535,  "udp" },
-  { "snac",            { NULL }, 3536,  "tcp" },
-  { "snac",            { NULL }, 3536,  "udp" },
-  { "ni-visa-remote",  { NULL }, 3537,  "tcp" },
-  { "ni-visa-remote",  { NULL }, 3537,  "udp" },
-  { "ibm-diradm",      { NULL }, 3538,  "tcp" },
-  { "ibm-diradm",      { NULL }, 3538,  "udp" },
-  { "ibm-diradm-ssl",  { NULL }, 3539,  "tcp" },
-  { "ibm-diradm-ssl",  { NULL }, 3539,  "udp" },
-  { "pnrp-port",       { NULL }, 3540,  "tcp" },
-  { "pnrp-port",       { NULL }, 3540,  "udp" },
-  { "voispeed-port",   { NULL }, 3541,  "tcp" },
-  { "voispeed-port",   { NULL }, 3541,  "udp" },
-  { "hacl-monitor",    { NULL }, 3542,  "tcp" },
-  { "hacl-monitor",    { NULL }, 3542,  "udp" },
-  { "qftest-lookup",   { NULL }, 3543,  "tcp" },
-  { "qftest-lookup",   { NULL }, 3543,  "udp" },
-  { "teredo",          { NULL }, 3544,  "tcp" },
-  { "teredo",          { NULL }, 3544,  "udp" },
-  { "camac",           { NULL }, 3545,  "tcp" },
-  { "camac",           { NULL }, 3545,  "udp" },
-  { "symantec-sim",    { NULL }, 3547,  "tcp" },
-  { "symantec-sim",    { NULL }, 3547,  "udp" },
-  { "interworld",      { NULL }, 3548,  "tcp" },
-  { "interworld",      { NULL }, 3548,  "udp" },
-  { "tellumat-nms",    { NULL }, 3549,  "tcp" },
-  { "tellumat-nms",    { NULL }, 3549,  "udp" },
-  { "ssmpp",           { NULL }, 3550,  "tcp" },
-  { "ssmpp",           { NULL }, 3550,  "udp" },
-  { "apcupsd",         { NULL }, 3551,  "tcp" },
-  { "apcupsd",         { NULL }, 3551,  "udp" },
-  { "taserver",        { NULL }, 3552,  "tcp" },
-  { "taserver",        { NULL }, 3552,  "udp" },
-  { "rbr-discovery",   { NULL }, 3553,  "tcp" },
-  { "rbr-discovery",   { NULL }, 3553,  "udp" },
-  { "questnotify",     { NULL }, 3554,  "tcp" },
-  { "questnotify",     { NULL }, 3554,  "udp" },
-  { "razor",           { NULL }, 3555,  "tcp" },
-  { "razor",           { NULL }, 3555,  "udp" },
-  { "sky-transport",   { NULL }, 3556,  "tcp" },
-  { "sky-transport",   { NULL }, 3556,  "udp" },
-  { "personalos-001",  { NULL }, 3557,  "tcp" },
-  { "personalos-001",  { NULL }, 3557,  "udp" },
-  { "mcp-port",        { NULL }, 3558,  "tcp" },
-  { "mcp-port",        { NULL }, 3558,  "udp" },
-  { "cctv-port",       { NULL }, 3559,  "tcp" },
-  { "cctv-port",       { NULL }, 3559,  "udp" },
-  { "iniserve-port",   { NULL }, 3560,  "tcp" },
-  { "iniserve-port",   { NULL }, 3560,  "udp" },
-  { "bmc-onekey",      { NULL }, 3561,  "tcp" },
-  { "bmc-onekey",      { NULL }, 3561,  "udp" },
-  { "sdbproxy",        { NULL }, 3562,  "tcp" },
-  { "sdbproxy",        { NULL }, 3562,  "udp" },
-  { "watcomdebug",     { NULL }, 3563,  "tcp" },
-  { "watcomdebug",     { NULL }, 3563,  "udp" },
-  { "esimport",        { NULL }, 3564,  "tcp" },
-  { "esimport",        { NULL }, 3564,  "udp" },
-  { "m2pa",            { NULL }, 3565,  "tcp" },
-  { "m2pa",            { NULL }, 3565,  "sctp"},
-  { "quest-data-hub",  { NULL }, 3566,  "tcp" },
-  { "oap",             { NULL }, 3567,  "tcp" },
-  { "oap",             { NULL }, 3567,  "udp" },
-  { "oap-s",           { NULL }, 3568,  "tcp" },
-  { "oap-s",           { NULL }, 3568,  "udp" },
-  { "mbg-ctrl",        { NULL }, 3569,  "tcp" },
-  { "mbg-ctrl",        { NULL }, 3569,  "udp" },
-  { "mccwebsvr-port",  { NULL }, 3570,  "tcp" },
-  { "mccwebsvr-port",  { NULL }, 3570,  "udp" },
-  { "megardsvr-port",  { NULL }, 3571,  "tcp" },
-  { "megardsvr-port",  { NULL }, 3571,  "udp" },
-  { "megaregsvrport",  { NULL }, 3572,  "tcp" },
-  { "megaregsvrport",  { NULL }, 3572,  "udp" },
-  { "tag-ups-1",       { NULL }, 3573,  "tcp" },
-  { "tag-ups-1",       { NULL }, 3573,  "udp" },
-  { "dmaf-server",     { NULL }, 3574,  "tcp" },
-  { "dmaf-caster",     { NULL }, 3574,  "udp" },
-  { "ccm-port",        { NULL }, 3575,  "tcp" },
-  { "ccm-port",        { NULL }, 3575,  "udp" },
-  { "cmc-port",        { NULL }, 3576,  "tcp" },
-  { "cmc-port",        { NULL }, 3576,  "udp" },
-  { "config-port",     { NULL }, 3577,  "tcp" },
-  { "config-port",     { NULL }, 3577,  "udp" },
-  { "data-port",       { NULL }, 3578,  "tcp" },
-  { "data-port",       { NULL }, 3578,  "udp" },
-  { "ttat3lb",         { NULL }, 3579,  "tcp" },
-  { "ttat3lb",         { NULL }, 3579,  "udp" },
-  { "nati-svrloc",     { NULL }, 3580,  "tcp" },
-  { "nati-svrloc",     { NULL }, 3580,  "udp" },
-  { "kfxaclicensing",  { NULL }, 3581,  "tcp" },
-  { "kfxaclicensing",  { NULL }, 3581,  "udp" },
-  { "press",           { NULL }, 3582,  "tcp" },
-  { "press",           { NULL }, 3582,  "udp" },
-  { "canex-watch",     { NULL }, 3583,  "tcp" },
-  { "canex-watch",     { NULL }, 3583,  "udp" },
-  { "u-dbap",          { NULL }, 3584,  "tcp" },
-  { "u-dbap",          { NULL }, 3584,  "udp" },
-  { "emprise-lls",     { NULL }, 3585,  "tcp" },
-  { "emprise-lls",     { NULL }, 3585,  "udp" },
-  { "emprise-lsc",     { NULL }, 3586,  "tcp" },
-  { "emprise-lsc",     { NULL }, 3586,  "udp" },
-  { "p2pgroup",        { NULL }, 3587,  "tcp" },
-  { "p2pgroup",        { NULL }, 3587,  "udp" },
-  { "sentinel",        { NULL }, 3588,  "tcp" },
-  { "sentinel",        { NULL }, 3588,  "udp" },
-  { "isomair",         { NULL }, 3589,  "tcp" },
-  { "isomair",         { NULL }, 3589,  "udp" },
-  { "wv-csp-sms",      { NULL }, 3590,  "tcp" },
-  { "wv-csp-sms",      { NULL }, 3590,  "udp" },
-  { "gtrack-server",   { NULL }, 3591,  "tcp" },
-  { "gtrack-server",   { NULL }, 3591,  "udp" },
-  { "gtrack-ne",       { NULL }, 3592,  "tcp" },
-  { "gtrack-ne",       { NULL }, 3592,  "udp" },
-  { "bpmd",            { NULL }, 3593,  "tcp" },
-  { "bpmd",            { NULL }, 3593,  "udp" },
-  { "mediaspace",      { NULL }, 3594,  "tcp" },
-  { "mediaspace",      { NULL }, 3594,  "udp" },
-  { "shareapp",        { NULL }, 3595,  "tcp" },
-  { "shareapp",        { NULL }, 3595,  "udp" },
-  { "iw-mmogame",      { NULL }, 3596,  "tcp" },
-  { "iw-mmogame",      { NULL }, 3596,  "udp" },
-  { "a14",             { NULL }, 3597,  "tcp" },
-  { "a14",             { NULL }, 3597,  "udp" },
-  { "a15",             { NULL }, 3598,  "tcp" },
-  { "a15",             { NULL }, 3598,  "udp" },
-  { "quasar-server",   { NULL }, 3599,  "tcp" },
-  { "quasar-server",   { NULL }, 3599,  "udp" },
-  { "trap-daemon",     { NULL }, 3600,  "tcp" },
-  { "trap-daemon",     { NULL }, 3600,  "udp" },
-  { "visinet-gui",     { NULL }, 3601,  "tcp" },
-  { "visinet-gui",     { NULL }, 3601,  "udp" },
-  { "infiniswitchcl",  { NULL }, 3602,  "tcp" },
-  { "infiniswitchcl",  { NULL }, 3602,  "udp" },
-  { "int-rcv-cntrl",   { NULL }, 3603,  "tcp" },
-  { "int-rcv-cntrl",   { NULL }, 3603,  "udp" },
-  { "bmc-jmx-port",    { NULL }, 3604,  "tcp" },
-  { "bmc-jmx-port",    { NULL }, 3604,  "udp" },
-  { "comcam-io",       { NULL }, 3605,  "tcp" },
-  { "comcam-io",       { NULL }, 3605,  "udp" },
-  { "splitlock",       { NULL }, 3606,  "tcp" },
-  { "splitlock",       { NULL }, 3606,  "udp" },
-  { "precise-i3",      { NULL }, 3607,  "tcp" },
-  { "precise-i3",      { NULL }, 3607,  "udp" },
-  { "trendchip-dcp",   { NULL }, 3608,  "tcp" },
-  { "trendchip-dcp",   { NULL }, 3608,  "udp" },
-  { "cpdi-pidas-cm",   { NULL }, 3609,  "tcp" },
-  { "cpdi-pidas-cm",   { NULL }, 3609,  "udp" },
-  { "echonet",         { NULL }, 3610,  "tcp" },
-  { "echonet",         { NULL }, 3610,  "udp" },
-  { "six-degrees",     { NULL }, 3611,  "tcp" },
-  { "six-degrees",     { NULL }, 3611,  "udp" },
-  { "hp-dataprotect",  { NULL }, 3612,  "tcp" },
-  { "hp-dataprotect",  { NULL }, 3612,  "udp" },
-  { "alaris-disc",     { NULL }, 3613,  "tcp" },
-  { "alaris-disc",     { NULL }, 3613,  "udp" },
-  { "sigma-port",      { NULL }, 3614,  "tcp" },
-  { "sigma-port",      { NULL }, 3614,  "udp" },
-  { "start-network",   { NULL }, 3615,  "tcp" },
-  { "start-network",   { NULL }, 3615,  "udp" },
-  { "cd3o-protocol",   { NULL }, 3616,  "tcp" },
-  { "cd3o-protocol",   { NULL }, 3616,  "udp" },
-  { "sharp-server",    { NULL }, 3617,  "tcp" },
-  { "sharp-server",    { NULL }, 3617,  "udp" },
-  { "aairnet-1",       { NULL }, 3618,  "tcp" },
-  { "aairnet-1",       { NULL }, 3618,  "udp" },
-  { "aairnet-2",       { NULL }, 3619,  "tcp" },
-  { "aairnet-2",       { NULL }, 3619,  "udp" },
-  { "ep-pcp",          { NULL }, 3620,  "tcp" },
-  { "ep-pcp",          { NULL }, 3620,  "udp" },
-  { "ep-nsp",          { NULL }, 3621,  "tcp" },
-  { "ep-nsp",          { NULL }, 3621,  "udp" },
-  { "ff-lr-port",      { NULL }, 3622,  "tcp" },
-  { "ff-lr-port",      { NULL }, 3622,  "udp" },
-  { "haipe-discover",  { NULL }, 3623,  "tcp" },
-  { "haipe-discover",  { NULL }, 3623,  "udp" },
-  { "dist-upgrade",    { NULL }, 3624,  "tcp" },
-  { "dist-upgrade",    { NULL }, 3624,  "udp" },
-  { "volley",          { NULL }, 3625,  "tcp" },
-  { "volley",          { NULL }, 3625,  "udp" },
-  { "bvcdaemon-port",  { NULL }, 3626,  "tcp" },
-  { "bvcdaemon-port",  { NULL }, 3626,  "udp" },
-  { "jamserverport",   { NULL }, 3627,  "tcp" },
-  { "jamserverport",   { NULL }, 3627,  "udp" },
-  { "ept-machine",     { NULL }, 3628,  "tcp" },
-  { "ept-machine",     { NULL }, 3628,  "udp" },
-  { "escvpnet",        { NULL }, 3629,  "tcp" },
-  { "escvpnet",        { NULL }, 3629,  "udp" },
-  { "cs-remote-db",    { NULL }, 3630,  "tcp" },
-  { "cs-remote-db",    { NULL }, 3630,  "udp" },
-  { "cs-services",     { NULL }, 3631,  "tcp" },
-  { "cs-services",     { NULL }, 3631,  "udp" },
-  { "distcc",          { NULL }, 3632,  "tcp" },
-  { "distcc",          { NULL }, 3632,  "udp" },
-  { "wacp",            { NULL }, 3633,  "tcp" },
-  { "wacp",            { NULL }, 3633,  "udp" },
-  { "hlibmgr",         { NULL }, 3634,  "tcp" },
-  { "hlibmgr",         { NULL }, 3634,  "udp" },
-  { "sdo",             { NULL }, 3635,  "tcp" },
-  { "sdo",             { NULL }, 3635,  "udp" },
-  { "servistaitsm",    { NULL }, 3636,  "tcp" },
-  { "servistaitsm",    { NULL }, 3636,  "udp" },
-  { "scservp",         { NULL }, 3637,  "tcp" },
-  { "scservp",         { NULL }, 3637,  "udp" },
-  { "ehp-backup",      { NULL }, 3638,  "tcp" },
-  { "ehp-backup",      { NULL }, 3638,  "udp" },
-  { "xap-ha",          { NULL }, 3639,  "tcp" },
-  { "xap-ha",          { NULL }, 3639,  "udp" },
-  { "netplay-port1",   { NULL }, 3640,  "tcp" },
-  { "netplay-port1",   { NULL }, 3640,  "udp" },
-  { "netplay-port2",   { NULL }, 3641,  "tcp" },
-  { "netplay-port2",   { NULL }, 3641,  "udp" },
-  { "juxml-port",      { NULL }, 3642,  "tcp" },
-  { "juxml-port",      { NULL }, 3642,  "udp" },
-  { "audiojuggler",    { NULL }, 3643,  "tcp" },
-  { "audiojuggler",    { NULL }, 3643,  "udp" },
-  { "ssowatch",        { NULL }, 3644,  "tcp" },
-  { "ssowatch",        { NULL }, 3644,  "udp" },
-  { "cyc",             { NULL }, 3645,  "tcp" },
-  { "cyc",             { NULL }, 3645,  "udp" },
-  { "xss-srv-port",    { NULL }, 3646,  "tcp" },
-  { "xss-srv-port",    { NULL }, 3646,  "udp" },
-  { "splitlock-gw",    { NULL }, 3647,  "tcp" },
-  { "splitlock-gw",    { NULL }, 3647,  "udp" },
-  { "fjcp",            { NULL }, 3648,  "tcp" },
-  { "fjcp",            { NULL }, 3648,  "udp" },
-  { "nmmp",            { NULL }, 3649,  "tcp" },
-  { "nmmp",            { NULL }, 3649,  "udp" },
-  { "prismiq-plugin",  { NULL }, 3650,  "tcp" },
-  { "prismiq-plugin",  { NULL }, 3650,  "udp" },
-  { "xrpc-registry",   { NULL }, 3651,  "tcp" },
-  { "xrpc-registry",   { NULL }, 3651,  "udp" },
-  { "vxcrnbuport",     { NULL }, 3652,  "tcp" },
-  { "vxcrnbuport",     { NULL }, 3652,  "udp" },
-  { "tsp",             { NULL }, 3653,  "tcp" },
-  { "tsp",             { NULL }, 3653,  "udp" },
-  { "vaprtm",          { NULL }, 3654,  "tcp" },
-  { "vaprtm",          { NULL }, 3654,  "udp" },
-  { "abatemgr",        { NULL }, 3655,  "tcp" },
-  { "abatemgr",        { NULL }, 3655,  "udp" },
-  { "abatjss",         { NULL }, 3656,  "tcp" },
-  { "abatjss",         { NULL }, 3656,  "udp" },
-  { "immedianet-bcn",  { NULL }, 3657,  "tcp" },
-  { "immedianet-bcn",  { NULL }, 3657,  "udp" },
-  { "ps-ams",          { NULL }, 3658,  "tcp" },
-  { "ps-ams",          { NULL }, 3658,  "udp" },
-  { "apple-sasl",      { NULL }, 3659,  "tcp" },
-  { "apple-sasl",      { NULL }, 3659,  "udp" },
-  { "can-nds-ssl",     { NULL }, 3660,  "tcp" },
-  { "can-nds-ssl",     { NULL }, 3660,  "udp" },
-  { "can-ferret-ssl",  { NULL }, 3661,  "tcp" },
-  { "can-ferret-ssl",  { NULL }, 3661,  "udp" },
-  { "pserver",         { NULL }, 3662,  "tcp" },
-  { "pserver",         { NULL }, 3662,  "udp" },
-  { "dtp",             { NULL }, 3663,  "tcp" },
-  { "dtp",             { NULL }, 3663,  "udp" },
-  { "ups-engine",      { NULL }, 3664,  "tcp" },
-  { "ups-engine",      { NULL }, 3664,  "udp" },
-  { "ent-engine",      { NULL }, 3665,  "tcp" },
-  { "ent-engine",      { NULL }, 3665,  "udp" },
-  { "eserver-pap",     { NULL }, 3666,  "tcp" },
-  { "eserver-pap",     { NULL }, 3666,  "udp" },
-  { "infoexch",        { NULL }, 3667,  "tcp" },
-  { "infoexch",        { NULL }, 3667,  "udp" },
-  { "dell-rm-port",    { NULL }, 3668,  "tcp" },
-  { "dell-rm-port",    { NULL }, 3668,  "udp" },
-  { "casanswmgmt",     { NULL }, 3669,  "tcp" },
-  { "casanswmgmt",     { NULL }, 3669,  "udp" },
-  { "smile",           { NULL }, 3670,  "tcp" },
-  { "smile",           { NULL }, 3670,  "udp" },
-  { "efcp",            { NULL }, 3671,  "tcp" },
-  { "efcp",            { NULL }, 3671,  "udp" },
-  { "lispworks-orb",   { NULL }, 3672,  "tcp" },
-  { "lispworks-orb",   { NULL }, 3672,  "udp" },
-  { "mediavault-gui",  { NULL }, 3673,  "tcp" },
-  { "mediavault-gui",  { NULL }, 3673,  "udp" },
-  { "wininstall-ipc",  { NULL }, 3674,  "tcp" },
-  { "wininstall-ipc",  { NULL }, 3674,  "udp" },
-  { "calltrax",        { NULL }, 3675,  "tcp" },
-  { "calltrax",        { NULL }, 3675,  "udp" },
-  { "va-pacbase",      { NULL }, 3676,  "tcp" },
-  { "va-pacbase",      { NULL }, 3676,  "udp" },
-  { "roverlog",        { NULL }, 3677,  "tcp" },
-  { "roverlog",        { NULL }, 3677,  "udp" },
-  { "ipr-dglt",        { NULL }, 3678,  "tcp" },
-  { "ipr-dglt",        { NULL }, 3678,  "udp" },
-  { "newton-dock",     { NULL }, 3679,  "tcp" },
-  { "newton-dock",     { NULL }, 3679,  "udp" },
-  { "npds-tracker",    { NULL }, 3680,  "tcp" },
-  { "npds-tracker",    { NULL }, 3680,  "udp" },
-  { "bts-x73",         { NULL }, 3681,  "tcp" },
-  { "bts-x73",         { NULL }, 3681,  "udp" },
-  { "cas-mapi",        { NULL }, 3682,  "tcp" },
-  { "cas-mapi",        { NULL }, 3682,  "udp" },
-  { "bmc-ea",          { NULL }, 3683,  "tcp" },
-  { "bmc-ea",          { NULL }, 3683,  "udp" },
-  { "faxstfx-port",    { NULL }, 3684,  "tcp" },
-  { "faxstfx-port",    { NULL }, 3684,  "udp" },
-  { "dsx-agent",       { NULL }, 3685,  "tcp" },
-  { "dsx-agent",       { NULL }, 3685,  "udp" },
-  { "tnmpv2",          { NULL }, 3686,  "tcp" },
-  { "tnmpv2",          { NULL }, 3686,  "udp" },
-  { "simple-push",     { NULL }, 3687,  "tcp" },
-  { "simple-push",     { NULL }, 3687,  "udp" },
-  { "simple-push-s",   { NULL }, 3688,  "tcp" },
-  { "simple-push-s",   { NULL }, 3688,  "udp" },
-  { "daap",            { NULL }, 3689,  "tcp" },
-  { "daap",            { NULL }, 3689,  "udp" },
-  { "svn",             { NULL }, 3690,  "tcp" },
-  { "svn",             { NULL }, 3690,  "udp" },
-  { "magaya-network",  { NULL }, 3691,  "tcp" },
-  { "magaya-network",  { NULL }, 3691,  "udp" },
-  { "intelsync",       { NULL }, 3692,  "tcp" },
-  { "intelsync",       { NULL }, 3692,  "udp" },
-  { "bmc-data-coll",   { NULL }, 3695,  "tcp" },
-  { "bmc-data-coll",   { NULL }, 3695,  "udp" },
-  { "telnetcpcd",      { NULL }, 3696,  "tcp" },
-  { "telnetcpcd",      { NULL }, 3696,  "udp" },
-  { "nw-license",      { NULL }, 3697,  "tcp" },
-  { "nw-license",      { NULL }, 3697,  "udp" },
-  { "sagectlpanel",    { NULL }, 3698,  "tcp" },
-  { "sagectlpanel",    { NULL }, 3698,  "udp" },
-  { "kpn-icw",         { NULL }, 3699,  "tcp" },
-  { "kpn-icw",         { NULL }, 3699,  "udp" },
-  { "lrs-paging",      { NULL }, 3700,  "tcp" },
-  { "lrs-paging",      { NULL }, 3700,  "udp" },
-  { "netcelera",       { NULL }, 3701,  "tcp" },
-  { "netcelera",       { NULL }, 3701,  "udp" },
-  { "ws-discovery",    { NULL }, 3702,  "tcp" },
-  { "ws-discovery",    { NULL }, 3702,  "udp" },
-  { "adobeserver-3",   { NULL }, 3703,  "tcp" },
-  { "adobeserver-3",   { NULL }, 3703,  "udp" },
-  { "adobeserver-4",   { NULL }, 3704,  "tcp" },
-  { "adobeserver-4",   { NULL }, 3704,  "udp" },
-  { "adobeserver-5",   { NULL }, 3705,  "tcp" },
-  { "adobeserver-5",   { NULL }, 3705,  "udp" },
-  { "rt-event",        { NULL }, 3706,  "tcp" },
-  { "rt-event",        { NULL }, 3706,  "udp" },
-  { "rt-event-s",      { NULL }, 3707,  "tcp" },
-  { "rt-event-s",      { NULL }, 3707,  "udp" },
-  { "sun-as-iiops",    { NULL }, 3708,  "tcp" },
-  { "sun-as-iiops",    { NULL }, 3708,  "udp" },
-  { "ca-idms",         { NULL }, 3709,  "tcp" },
-  { "ca-idms",         { NULL }, 3709,  "udp" },
-  { "portgate-auth",   { NULL }, 3710,  "tcp" },
-  { "portgate-auth",   { NULL }, 3710,  "udp" },
-  { "edb-server2",     { NULL }, 3711,  "tcp" },
-  { "edb-server2",     { NULL }, 3711,  "udp" },
-  { "sentinel-ent",    { NULL }, 3712,  "tcp" },
-  { "sentinel-ent",    { NULL }, 3712,  "udp" },
-  { "tftps",           { NULL }, 3713,  "tcp" },
-  { "tftps",           { NULL }, 3713,  "udp" },
-  { "delos-dms",       { NULL }, 3714,  "tcp" },
-  { "delos-dms",       { NULL }, 3714,  "udp" },
-  { "anoto-rendezv",   { NULL }, 3715,  "tcp" },
-  { "anoto-rendezv",   { NULL }, 3715,  "udp" },
-  { "wv-csp-sms-cir",  { NULL }, 3716,  "tcp" },
-  { "wv-csp-sms-cir",  { NULL }, 3716,  "udp" },
-  { "wv-csp-udp-cir",  { NULL }, 3717,  "tcp" },
-  { "wv-csp-udp-cir",  { NULL }, 3717,  "udp" },
-  { "opus-services",   { NULL }, 3718,  "tcp" },
-  { "opus-services",   { NULL }, 3718,  "udp" },
-  { "itelserverport",  { NULL }, 3719,  "tcp" },
-  { "itelserverport",  { NULL }, 3719,  "udp" },
-  { "ufastro-instr",   { NULL }, 3720,  "tcp" },
-  { "ufastro-instr",   { NULL }, 3720,  "udp" },
-  { "xsync",           { NULL }, 3721,  "tcp" },
-  { "xsync",           { NULL }, 3721,  "udp" },
-  { "xserveraid",      { NULL }, 3722,  "tcp" },
-  { "xserveraid",      { NULL }, 3722,  "udp" },
-  { "sychrond",        { NULL }, 3723,  "tcp" },
-  { "sychrond",        { NULL }, 3723,  "udp" },
-  { "blizwow",         { NULL }, 3724,  "tcp" },
-  { "blizwow",         { NULL }, 3724,  "udp" },
-  { "na-er-tip",       { NULL }, 3725,  "tcp" },
-  { "na-er-tip",       { NULL }, 3725,  "udp" },
-  { "array-manager",   { NULL }, 3726,  "tcp" },
-  { "array-manager",   { NULL }, 3726,  "udp" },
-  { "e-mdu",           { NULL }, 3727,  "tcp" },
-  { "e-mdu",           { NULL }, 3727,  "udp" },
-  { "e-woa",           { NULL }, 3728,  "tcp" },
-  { "e-woa",           { NULL }, 3728,  "udp" },
-  { "fksp-audit",      { NULL }, 3729,  "tcp" },
-  { "fksp-audit",      { NULL }, 3729,  "udp" },
-  { "client-ctrl",     { NULL }, 3730,  "tcp" },
-  { "client-ctrl",     { NULL }, 3730,  "udp" },
-  { "smap",            { NULL }, 3731,  "tcp" },
-  { "smap",            { NULL }, 3731,  "udp" },
-  { "m-wnn",           { NULL }, 3732,  "tcp" },
-  { "m-wnn",           { NULL }, 3732,  "udp" },
-  { "multip-msg",      { NULL }, 3733,  "tcp" },
-  { "multip-msg",      { NULL }, 3733,  "udp" },
-  { "synel-data",      { NULL }, 3734,  "tcp" },
-  { "synel-data",      { NULL }, 3734,  "udp" },
-  { "pwdis",           { NULL }, 3735,  "tcp" },
-  { "pwdis",           { NULL }, 3735,  "udp" },
-  { "rs-rmi",          { NULL }, 3736,  "tcp" },
-  { "rs-rmi",          { NULL }, 3736,  "udp" },
-  { "xpanel",          { NULL }, 3737,  "tcp" },
-  { "versatalk",       { NULL }, 3738,  "tcp" },
-  { "versatalk",       { NULL }, 3738,  "udp" },
-  { "launchbird-lm",   { NULL }, 3739,  "tcp" },
-  { "launchbird-lm",   { NULL }, 3739,  "udp" },
-  { "heartbeat",       { NULL }, 3740,  "tcp" },
-  { "heartbeat",       { NULL }, 3740,  "udp" },
-  { "wysdma",          { NULL }, 3741,  "tcp" },
-  { "wysdma",          { NULL }, 3741,  "udp" },
-  { "cst-port",        { NULL }, 3742,  "tcp" },
-  { "cst-port",        { NULL }, 3742,  "udp" },
-  { "ipcs-command",    { NULL }, 3743,  "tcp" },
-  { "ipcs-command",    { NULL }, 3743,  "udp" },
-  { "sasg",            { NULL }, 3744,  "tcp" },
-  { "sasg",            { NULL }, 3744,  "udp" },
-  { "gw-call-port",    { NULL }, 3745,  "tcp" },
-  { "gw-call-port",    { NULL }, 3745,  "udp" },
-  { "linktest",        { NULL }, 3746,  "tcp" },
-  { "linktest",        { NULL }, 3746,  "udp" },
-  { "linktest-s",      { NULL }, 3747,  "tcp" },
-  { "linktest-s",      { NULL }, 3747,  "udp" },
-  { "webdata",         { NULL }, 3748,  "tcp" },
-  { "webdata",         { NULL }, 3748,  "udp" },
-  { "cimtrak",         { NULL }, 3749,  "tcp" },
-  { "cimtrak",         { NULL }, 3749,  "udp" },
-  { "cbos-ip-port",    { NULL }, 3750,  "tcp" },
-  { "cbos-ip-port",    { NULL }, 3750,  "udp" },
-  { "gprs-cube",       { NULL }, 3751,  "tcp" },
-  { "gprs-cube",       { NULL }, 3751,  "udp" },
-  { "vipremoteagent",  { NULL }, 3752,  "tcp" },
-  { "vipremoteagent",  { NULL }, 3752,  "udp" },
-  { "nattyserver",     { NULL }, 3753,  "tcp" },
-  { "nattyserver",     { NULL }, 3753,  "udp" },
-  { "timestenbroker",  { NULL }, 3754,  "tcp" },
-  { "timestenbroker",  { NULL }, 3754,  "udp" },
-  { "sas-remote-hlp",  { NULL }, 3755,  "tcp" },
-  { "sas-remote-hlp",  { NULL }, 3755,  "udp" },
-  { "canon-capt",      { NULL }, 3756,  "tcp" },
-  { "canon-capt",      { NULL }, 3756,  "udp" },
-  { "grf-port",        { NULL }, 3757,  "tcp" },
-  { "grf-port",        { NULL }, 3757,  "udp" },
-  { "apw-registry",    { NULL }, 3758,  "tcp" },
-  { "apw-registry",    { NULL }, 3758,  "udp" },
-  { "exapt-lmgr",      { NULL }, 3759,  "tcp" },
-  { "exapt-lmgr",      { NULL }, 3759,  "udp" },
-  { "adtempusclient",  { NULL }, 3760,  "tcp" },
-  { "adtempusclient",  { NULL }, 3760,  "udp" },
-  { "gsakmp",          { NULL }, 3761,  "tcp" },
-  { "gsakmp",          { NULL }, 3761,  "udp" },
-  { "gbs-smp",         { NULL }, 3762,  "tcp" },
-  { "gbs-smp",         { NULL }, 3762,  "udp" },
-  { "xo-wave",         { NULL }, 3763,  "tcp" },
-  { "xo-wave",         { NULL }, 3763,  "udp" },
-  { "mni-prot-rout",   { NULL }, 3764,  "tcp" },
-  { "mni-prot-rout",   { NULL }, 3764,  "udp" },
-  { "rtraceroute",     { NULL }, 3765,  "tcp" },
-  { "rtraceroute",     { NULL }, 3765,  "udp" },
-  { "listmgr-port",    { NULL }, 3767,  "tcp" },
-  { "listmgr-port",    { NULL }, 3767,  "udp" },
-  { "rblcheckd",       { NULL }, 3768,  "tcp" },
-  { "rblcheckd",       { NULL }, 3768,  "udp" },
-  { "haipe-otnk",      { NULL }, 3769,  "tcp" },
-  { "haipe-otnk",      { NULL }, 3769,  "udp" },
-  { "cindycollab",     { NULL }, 3770,  "tcp" },
-  { "cindycollab",     { NULL }, 3770,  "udp" },
-  { "paging-port",     { NULL }, 3771,  "tcp" },
-  { "paging-port",     { NULL }, 3771,  "udp" },
-  { "ctp",             { NULL }, 3772,  "tcp" },
-  { "ctp",             { NULL }, 3772,  "udp" },
-  { "ctdhercules",     { NULL }, 3773,  "tcp" },
-  { "ctdhercules",     { NULL }, 3773,  "udp" },
-  { "zicom",           { NULL }, 3774,  "tcp" },
-  { "zicom",           { NULL }, 3774,  "udp" },
-  { "ispmmgr",         { NULL }, 3775,  "tcp" },
-  { "ispmmgr",         { NULL }, 3775,  "udp" },
-  { "dvcprov-port",    { NULL }, 3776,  "tcp" },
-  { "dvcprov-port",    { NULL }, 3776,  "udp" },
-  { "jibe-eb",         { NULL }, 3777,  "tcp" },
-  { "jibe-eb",         { NULL }, 3777,  "udp" },
-  { "c-h-it-port",     { NULL }, 3778,  "tcp" },
-  { "c-h-it-port",     { NULL }, 3778,  "udp" },
-  { "cognima",         { NULL }, 3779,  "tcp" },
-  { "cognima",         { NULL }, 3779,  "udp" },
-  { "nnp",             { NULL }, 3780,  "tcp" },
-  { "nnp",             { NULL }, 3780,  "udp" },
-  { "abcvoice-port",   { NULL }, 3781,  "tcp" },
-  { "abcvoice-port",   { NULL }, 3781,  "udp" },
-  { "iso-tp0s",        { NULL }, 3782,  "tcp" },
-  { "iso-tp0s",        { NULL }, 3782,  "udp" },
-  { "bim-pem",         { NULL }, 3783,  "tcp" },
-  { "bim-pem",         { NULL }, 3783,  "udp" },
-  { "bfd-control",     { NULL }, 3784,  "tcp" },
-  { "bfd-control",     { NULL }, 3784,  "udp" },
-  { "bfd-echo",        { NULL }, 3785,  "tcp" },
-  { "bfd-echo",        { NULL }, 3785,  "udp" },
-  { "upstriggervsw",   { NULL }, 3786,  "tcp" },
-  { "upstriggervsw",   { NULL }, 3786,  "udp" },
-  { "fintrx",          { NULL }, 3787,  "tcp" },
-  { "fintrx",          { NULL }, 3787,  "udp" },
-  { "isrp-port",       { NULL }, 3788,  "tcp" },
-  { "isrp-port",       { NULL }, 3788,  "udp" },
-  { "remotedeploy",    { NULL }, 3789,  "tcp" },
-  { "remotedeploy",    { NULL }, 3789,  "udp" },
-  { "quickbooksrds",   { NULL }, 3790,  "tcp" },
-  { "quickbooksrds",   { NULL }, 3790,  "udp" },
-  { "tvnetworkvideo",  { NULL }, 3791,  "tcp" },
-  { "tvnetworkvideo",  { NULL }, 3791,  "udp" },
-  { "sitewatch",       { NULL }, 3792,  "tcp" },
-  { "sitewatch",       { NULL }, 3792,  "udp" },
-  { "dcsoftware",      { NULL }, 3793,  "tcp" },
-  { "dcsoftware",      { NULL }, 3793,  "udp" },
-  { "jaus",            { NULL }, 3794,  "tcp" },
-  { "jaus",            { NULL }, 3794,  "udp" },
-  { "myblast",         { NULL }, 3795,  "tcp" },
-  { "myblast",         { NULL }, 3795,  "udp" },
-  { "spw-dialer",      { NULL }, 3796,  "tcp" },
-  { "spw-dialer",      { NULL }, 3796,  "udp" },
-  { "idps",            { NULL }, 3797,  "tcp" },
-  { "idps",            { NULL }, 3797,  "udp" },
-  { "minilock",        { NULL }, 3798,  "tcp" },
-  { "minilock",        { NULL }, 3798,  "udp" },
-  { "radius-dynauth",  { NULL }, 3799,  "tcp" },
-  { "radius-dynauth",  { NULL }, 3799,  "udp" },
-  { "pwgpsi",          { NULL }, 3800,  "tcp" },
-  { "pwgpsi",          { NULL }, 3800,  "udp" },
-  { "ibm-mgr",         { NULL }, 3801,  "tcp" },
-  { "ibm-mgr",         { NULL }, 3801,  "udp" },
-  { "vhd",             { NULL }, 3802,  "tcp" },
-  { "vhd",             { NULL }, 3802,  "udp" },
-  { "soniqsync",       { NULL }, 3803,  "tcp" },
-  { "soniqsync",       { NULL }, 3803,  "udp" },
-  { "iqnet-port",      { NULL }, 3804,  "tcp" },
-  { "iqnet-port",      { NULL }, 3804,  "udp" },
-  { "tcpdataserver",   { NULL }, 3805,  "tcp" },
-  { "tcpdataserver",   { NULL }, 3805,  "udp" },
-  { "wsmlb",           { NULL }, 3806,  "tcp" },
-  { "wsmlb",           { NULL }, 3806,  "udp" },
-  { "spugna",          { NULL }, 3807,  "tcp" },
-  { "spugna",          { NULL }, 3807,  "udp" },
-  { "sun-as-iiops-ca", { NULL }, 3808,  "tcp" },
-  { "sun-as-iiops-ca", { NULL }, 3808,  "udp" },
-  { "apocd",           { NULL }, 3809,  "tcp" },
-  { "apocd",           { NULL }, 3809,  "udp" },
-  { "wlanauth",        { NULL }, 3810,  "tcp" },
-  { "wlanauth",        { NULL }, 3810,  "udp" },
-  { "amp",             { NULL }, 3811,  "tcp" },
-  { "amp",             { NULL }, 3811,  "udp" },
-  { "neto-wol-server", { NULL }, 3812,  "tcp" },
-  { "neto-wol-server", { NULL }, 3812,  "udp" },
-  { "rap-ip",          { NULL }, 3813,  "tcp" },
-  { "rap-ip",          { NULL }, 3813,  "udp" },
-  { "neto-dcs",        { NULL }, 3814,  "tcp" },
-  { "neto-dcs",        { NULL }, 3814,  "udp" },
-  { "lansurveyorxml",  { NULL }, 3815,  "tcp" },
-  { "lansurveyorxml",  { NULL }, 3815,  "udp" },
-  { "sunlps-http",     { NULL }, 3816,  "tcp" },
-  { "sunlps-http",     { NULL }, 3816,  "udp" },
-  { "tapeware",        { NULL }, 3817,  "tcp" },
-  { "tapeware",        { NULL }, 3817,  "udp" },
-  { "crinis-hb",       { NULL }, 3818,  "tcp" },
-  { "crinis-hb",       { NULL }, 3818,  "udp" },
-  { "epl-slp",         { NULL }, 3819,  "tcp" },
-  { "epl-slp",         { NULL }, 3819,  "udp" },
-  { "scp",             { NULL }, 3820,  "tcp" },
-  { "scp",             { NULL }, 3820,  "udp" },
-  { "pmcp",            { NULL }, 3821,  "tcp" },
-  { "pmcp",            { NULL }, 3821,  "udp" },
-  { "acp-discovery",   { NULL }, 3822,  "tcp" },
-  { "acp-discovery",   { NULL }, 3822,  "udp" },
-  { "acp-conduit",     { NULL }, 3823,  "tcp" },
-  { "acp-conduit",     { NULL }, 3823,  "udp" },
-  { "acp-policy",      { NULL }, 3824,  "tcp" },
-  { "acp-policy",      { NULL }, 3824,  "udp" },
-  { "ffserver",        { NULL }, 3825,  "tcp" },
-  { "ffserver",        { NULL }, 3825,  "udp" },
-  { "wormux",          { NULL }, 3826,  "tcp" },
-  { "wormux",          { NULL }, 3826,  "udp" },
-  { "netmpi",          { NULL }, 3827,  "tcp" },
-  { "netmpi",          { NULL }, 3827,  "udp" },
-  { "neteh",           { NULL }, 3828,  "tcp" },
-  { "neteh",           { NULL }, 3828,  "udp" },
-  { "neteh-ext",       { NULL }, 3829,  "tcp" },
-  { "neteh-ext",       { NULL }, 3829,  "udp" },
-  { "cernsysmgmtagt",  { NULL }, 3830,  "tcp" },
-  { "cernsysmgmtagt",  { NULL }, 3830,  "udp" },
-  { "dvapps",          { NULL }, 3831,  "tcp" },
-  { "dvapps",          { NULL }, 3831,  "udp" },
-  { "xxnetserver",     { NULL }, 3832,  "tcp" },
-  { "xxnetserver",     { NULL }, 3832,  "udp" },
-  { "aipn-auth",       { NULL }, 3833,  "tcp" },
-  { "aipn-auth",       { NULL }, 3833,  "udp" },
-  { "spectardata",     { NULL }, 3834,  "tcp" },
-  { "spectardata",     { NULL }, 3834,  "udp" },
-  { "spectardb",       { NULL }, 3835,  "tcp" },
-  { "spectardb",       { NULL }, 3835,  "udp" },
-  { "markem-dcp",      { NULL }, 3836,  "tcp" },
-  { "markem-dcp",      { NULL }, 3836,  "udp" },
-  { "mkm-discovery",   { NULL }, 3837,  "tcp" },
-  { "mkm-discovery",   { NULL }, 3837,  "udp" },
-  { "sos",             { NULL }, 3838,  "tcp" },
-  { "sos",             { NULL }, 3838,  "udp" },
-  { "amx-rms",         { NULL }, 3839,  "tcp" },
-  { "amx-rms",         { NULL }, 3839,  "udp" },
-  { "flirtmitmir",     { NULL }, 3840,  "tcp" },
-  { "flirtmitmir",     { NULL }, 3840,  "udp" },
-  { "zfirm-shiprush3", { NULL }, 3841,  "tcp" },
-  { "zfirm-shiprush3", { NULL }, 3841,  "udp" },
-  { "nhci",            { NULL }, 3842,  "tcp" },
-  { "nhci",            { NULL }, 3842,  "udp" },
-  { "quest-agent",     { NULL }, 3843,  "tcp" },
-  { "quest-agent",     { NULL }, 3843,  "udp" },
-  { "rnm",             { NULL }, 3844,  "tcp" },
-  { "rnm",             { NULL }, 3844,  "udp" },
-  { "v-one-spp",       { NULL }, 3845,  "tcp" },
-  { "v-one-spp",       { NULL }, 3845,  "udp" },
-  { "an-pcp",          { NULL }, 3846,  "tcp" },
-  { "an-pcp",          { NULL }, 3846,  "udp" },
-  { "msfw-control",    { NULL }, 3847,  "tcp" },
-  { "msfw-control",    { NULL }, 3847,  "udp" },
-  { "item",            { NULL }, 3848,  "tcp" },
-  { "item",            { NULL }, 3848,  "udp" },
-  { "spw-dnspreload",  { NULL }, 3849,  "tcp" },
-  { "spw-dnspreload",  { NULL }, 3849,  "udp" },
-  { "qtms-bootstrap",  { NULL }, 3850,  "tcp" },
-  { "qtms-bootstrap",  { NULL }, 3850,  "udp" },
-  { "spectraport",     { NULL }, 3851,  "tcp" },
-  { "spectraport",     { NULL }, 3851,  "udp" },
-  { "sse-app-config",  { NULL }, 3852,  "tcp" },
-  { "sse-app-config",  { NULL }, 3852,  "udp" },
-  { "sscan",           { NULL }, 3853,  "tcp" },
-  { "sscan",           { NULL }, 3853,  "udp" },
-  { "stryker-com",     { NULL }, 3854,  "tcp" },
-  { "stryker-com",     { NULL }, 3854,  "udp" },
-  { "opentrac",        { NULL }, 3855,  "tcp" },
-  { "opentrac",        { NULL }, 3855,  "udp" },
-  { "informer",        { NULL }, 3856,  "tcp" },
-  { "informer",        { NULL }, 3856,  "udp" },
-  { "trap-port",       { NULL }, 3857,  "tcp" },
-  { "trap-port",       { NULL }, 3857,  "udp" },
-  { "trap-port-mom",   { NULL }, 3858,  "tcp" },
-  { "trap-port-mom",   { NULL }, 3858,  "udp" },
-  { "nav-port",        { NULL }, 3859,  "tcp" },
-  { "nav-port",        { NULL }, 3859,  "udp" },
-  { "sasp",            { NULL }, 3860,  "tcp" },
-  { "sasp",            { NULL }, 3860,  "udp" },
-  { "winshadow-hd",    { NULL }, 3861,  "tcp" },
-  { "winshadow-hd",    { NULL }, 3861,  "udp" },
-  { "giga-pocket",     { NULL }, 3862,  "tcp" },
-  { "giga-pocket",     { NULL }, 3862,  "udp" },
-  { "asap-tcp",        { NULL }, 3863,  "tcp" },
-  { "asap-udp",        { NULL }, 3863,  "udp" },
-  { "asap-sctp",       { NULL }, 3863,  "sctp"},
-  { "asap-tcp-tls",    { NULL }, 3864,  "tcp" },
-  { "asap-sctp-tls",   { NULL }, 3864,  "sctp"},
-  { "xpl",             { NULL }, 3865,  "tcp" },
-  { "xpl",             { NULL }, 3865,  "udp" },
-  { "dzdaemon",        { NULL }, 3866,  "tcp" },
-  { "dzdaemon",        { NULL }, 3866,  "udp" },
-  { "dzoglserver",     { NULL }, 3867,  "tcp" },
-  { "dzoglserver",     { NULL }, 3867,  "udp" },
-  { "diameter",        { NULL }, 3868,  "tcp" },
-  { "diameter",        { NULL }, 3868,  "sctp"},
-  { "ovsam-mgmt",      { NULL }, 3869,  "tcp" },
-  { "ovsam-mgmt",      { NULL }, 3869,  "udp" },
-  { "ovsam-d-agent",   { NULL }, 3870,  "tcp" },
-  { "ovsam-d-agent",   { NULL }, 3870,  "udp" },
-  { "avocent-adsap",   { NULL }, 3871,  "tcp" },
-  { "avocent-adsap",   { NULL }, 3871,  "udp" },
-  { "oem-agent",       { NULL }, 3872,  "tcp" },
-  { "oem-agent",       { NULL }, 3872,  "udp" },
-  { "fagordnc",        { NULL }, 3873,  "tcp" },
-  { "fagordnc",        { NULL }, 3873,  "udp" },
-  { "sixxsconfig",     { NULL }, 3874,  "tcp" },
-  { "sixxsconfig",     { NULL }, 3874,  "udp" },
-  { "pnbscada",        { NULL }, 3875,  "tcp" },
-  { "pnbscada",        { NULL }, 3875,  "udp" },
-  { "dl_agent",        { NULL }, 3876,  "tcp" },
-  { "dl_agent",        { NULL }, 3876,  "udp" },
-  { "xmpcr-interface", { NULL }, 3877,  "tcp" },
-  { "xmpcr-interface", { NULL }, 3877,  "udp" },
-  { "fotogcad",        { NULL }, 3878,  "tcp" },
-  { "fotogcad",        { NULL }, 3878,  "udp" },
-  { "appss-lm",        { NULL }, 3879,  "tcp" },
-  { "appss-lm",        { NULL }, 3879,  "udp" },
-  { "igrs",            { NULL }, 3880,  "tcp" },
-  { "igrs",            { NULL }, 3880,  "udp" },
-  { "idac",            { NULL }, 3881,  "tcp" },
-  { "idac",            { NULL }, 3881,  "udp" },
-  { "msdts1",          { NULL }, 3882,  "tcp" },
-  { "msdts1",          { NULL }, 3882,  "udp" },
-  { "vrpn",            { NULL }, 3883,  "tcp" },
-  { "vrpn",            { NULL }, 3883,  "udp" },
-  { "softrack-meter",  { NULL }, 3884,  "tcp" },
-  { "softrack-meter",  { NULL }, 3884,  "udp" },
-  { "topflow-ssl",     { NULL }, 3885,  "tcp" },
-  { "topflow-ssl",     { NULL }, 3885,  "udp" },
-  { "nei-management",  { NULL }, 3886,  "tcp" },
-  { "nei-management",  { NULL }, 3886,  "udp" },
-  { "ciphire-data",    { NULL }, 3887,  "tcp" },
-  { "ciphire-data",    { NULL }, 3887,  "udp" },
-  { "ciphire-serv",    { NULL }, 3888,  "tcp" },
-  { "ciphire-serv",    { NULL }, 3888,  "udp" },
-  { "dandv-tester",    { NULL }, 3889,  "tcp" },
-  { "dandv-tester",    { NULL }, 3889,  "udp" },
-  { "ndsconnect",      { NULL }, 3890,  "tcp" },
-  { "ndsconnect",      { NULL }, 3890,  "udp" },
-  { "rtc-pm-port",     { NULL }, 3891,  "tcp" },
-  { "rtc-pm-port",     { NULL }, 3891,  "udp" },
-  { "pcc-image-port",  { NULL }, 3892,  "tcp" },
-  { "pcc-image-port",  { NULL }, 3892,  "udp" },
-  { "cgi-starapi",     { NULL }, 3893,  "tcp" },
-  { "cgi-starapi",     { NULL }, 3893,  "udp" },
-  { "syam-agent",      { NULL }, 3894,  "tcp" },
-  { "syam-agent",      { NULL }, 3894,  "udp" },
-  { "syam-smc",        { NULL }, 3895,  "tcp" },
-  { "syam-smc",        { NULL }, 3895,  "udp" },
-  { "sdo-tls",         { NULL }, 3896,  "tcp" },
-  { "sdo-tls",         { NULL }, 3896,  "udp" },
-  { "sdo-ssh",         { NULL }, 3897,  "tcp" },
-  { "sdo-ssh",         { NULL }, 3897,  "udp" },
-  { "senip",           { NULL }, 3898,  "tcp" },
-  { "senip",           { NULL }, 3898,  "udp" },
-  { "itv-control",     { NULL }, 3899,  "tcp" },
-  { "itv-control",     { NULL }, 3899,  "udp" },
-  { "udt_os",          { NULL }, 3900,  "tcp" },
-  { "udt_os",          { NULL }, 3900,  "udp" },
-  { "nimsh",           { NULL }, 3901,  "tcp" },
-  { "nimsh",           { NULL }, 3901,  "udp" },
-  { "nimaux",          { NULL }, 3902,  "tcp" },
-  { "nimaux",          { NULL }, 3902,  "udp" },
-  { "charsetmgr",      { NULL }, 3903,  "tcp" },
-  { "charsetmgr",      { NULL }, 3903,  "udp" },
-  { "omnilink-port",   { NULL }, 3904,  "tcp" },
-  { "omnilink-port",   { NULL }, 3904,  "udp" },
-  { "mupdate",         { NULL }, 3905,  "tcp" },
-  { "mupdate",         { NULL }, 3905,  "udp" },
-  { "topovista-data",  { NULL }, 3906,  "tcp" },
-  { "topovista-data",  { NULL }, 3906,  "udp" },
-  { "imoguia-port",    { NULL }, 3907,  "tcp" },
-  { "imoguia-port",    { NULL }, 3907,  "udp" },
-  { "hppronetman",     { NULL }, 3908,  "tcp" },
-  { "hppronetman",     { NULL }, 3908,  "udp" },
-  { "surfcontrolcpa",  { NULL }, 3909,  "tcp" },
-  { "surfcontrolcpa",  { NULL }, 3909,  "udp" },
-  { "prnrequest",      { NULL }, 3910,  "tcp" },
-  { "prnrequest",      { NULL }, 3910,  "udp" },
-  { "prnstatus",       { NULL }, 3911,  "tcp" },
-  { "prnstatus",       { NULL }, 3911,  "udp" },
-  { "gbmt-stars",      { NULL }, 3912,  "tcp" },
-  { "gbmt-stars",      { NULL }, 3912,  "udp" },
-  { "listcrt-port",    { NULL }, 3913,  "tcp" },
-  { "listcrt-port",    { NULL }, 3913,  "udp" },
-  { "listcrt-port-2",  { NULL }, 3914,  "tcp" },
-  { "listcrt-port-2",  { NULL }, 3914,  "udp" },
-  { "agcat",           { NULL }, 3915,  "tcp" },
-  { "agcat",           { NULL }, 3915,  "udp" },
-  { "wysdmc",          { NULL }, 3916,  "tcp" },
-  { "wysdmc",          { NULL }, 3916,  "udp" },
-  { "aftmux",          { NULL }, 3917,  "tcp" },
-  { "aftmux",          { NULL }, 3917,  "udp" },
-  { "pktcablemmcops",  { NULL }, 3918,  "tcp" },
-  { "pktcablemmcops",  { NULL }, 3918,  "udp" },
-  { "hyperip",         { NULL }, 3919,  "tcp" },
-  { "hyperip",         { NULL }, 3919,  "udp" },
-  { "exasoftport1",    { NULL }, 3920,  "tcp" },
-  { "exasoftport1",    { NULL }, 3920,  "udp" },
-  { "herodotus-net",   { NULL }, 3921,  "tcp" },
-  { "herodotus-net",   { NULL }, 3921,  "udp" },
-  { "sor-update",      { NULL }, 3922,  "tcp" },
-  { "sor-update",      { NULL }, 3922,  "udp" },
-  { "symb-sb-port",    { NULL }, 3923,  "tcp" },
-  { "symb-sb-port",    { NULL }, 3923,  "udp" },
-  { "mpl-gprs-port",   { NULL }, 3924,  "tcp" },
-  { "mpl-gprs-port",   { NULL }, 3924,  "udp" },
-  { "zmp",             { NULL }, 3925,  "tcp" },
-  { "zmp",             { NULL }, 3925,  "udp" },
-  { "winport",         { NULL }, 3926,  "tcp" },
-  { "winport",         { NULL }, 3926,  "udp" },
-  { "natdataservice",  { NULL }, 3927,  "tcp" },
-  { "natdataservice",  { NULL }, 3927,  "udp" },
-  { "netboot-pxe",     { NULL }, 3928,  "tcp" },
-  { "netboot-pxe",     { NULL }, 3928,  "udp" },
-  { "smauth-port",     { NULL }, 3929,  "tcp" },
-  { "smauth-port",     { NULL }, 3929,  "udp" },
-  { "syam-webserver",  { NULL }, 3930,  "tcp" },
-  { "syam-webserver",  { NULL }, 3930,  "udp" },
-  { "msr-plugin-port", { NULL }, 3931,  "tcp" },
-  { "msr-plugin-port", { NULL }, 3931,  "udp" },
-  { "dyn-site",        { NULL }, 3932,  "tcp" },
-  { "dyn-site",        { NULL }, 3932,  "udp" },
-  { "plbserve-port",   { NULL }, 3933,  "tcp" },
-  { "plbserve-port",   { NULL }, 3933,  "udp" },
-  { "sunfm-port",      { NULL }, 3934,  "tcp" },
-  { "sunfm-port",      { NULL }, 3934,  "udp" },
-  { "sdp-portmapper",  { NULL }, 3935,  "tcp" },
-  { "sdp-portmapper",  { NULL }, 3935,  "udp" },
-  { "mailprox",        { NULL }, 3936,  "tcp" },
-  { "mailprox",        { NULL }, 3936,  "udp" },
-  { "dvbservdsc",      { NULL }, 3937,  "tcp" },
-  { "dvbservdsc",      { NULL }, 3937,  "udp" },
-  { "dbcontrol_agent", { NULL }, 3938,  "tcp" },
-  { "dbcontrol_agent", { NULL }, 3938,  "udp" },
-  { "aamp",            { NULL }, 3939,  "tcp" },
-  { "aamp",            { NULL }, 3939,  "udp" },
-  { "xecp-node",       { NULL }, 3940,  "tcp" },
-  { "xecp-node",       { NULL }, 3940,  "udp" },
-  { "homeportal-web",  { NULL }, 3941,  "tcp" },
-  { "homeportal-web",  { NULL }, 3941,  "udp" },
-  { "srdp",            { NULL }, 3942,  "tcp" },
-  { "srdp",            { NULL }, 3942,  "udp" },
-  { "tig",             { NULL }, 3943,  "tcp" },
-  { "tig",             { NULL }, 3943,  "udp" },
-  { "sops",            { NULL }, 3944,  "tcp" },
-  { "sops",            { NULL }, 3944,  "udp" },
-  { "emcads",          { NULL }, 3945,  "tcp" },
-  { "emcads",          { NULL }, 3945,  "udp" },
-  { "backupedge",      { NULL }, 3946,  "tcp" },
-  { "backupedge",      { NULL }, 3946,  "udp" },
-  { "ccp",             { NULL }, 3947,  "tcp" },
-  { "ccp",             { NULL }, 3947,  "udp" },
-  { "apdap",           { NULL }, 3948,  "tcp" },
-  { "apdap",           { NULL }, 3948,  "udp" },
-  { "drip",            { NULL }, 3949,  "tcp" },
-  { "drip",            { NULL }, 3949,  "udp" },
-  { "namemunge",       { NULL }, 3950,  "tcp" },
-  { "namemunge",       { NULL }, 3950,  "udp" },
-  { "pwgippfax",       { NULL }, 3951,  "tcp" },
-  { "pwgippfax",       { NULL }, 3951,  "udp" },
-  { "i3-sessionmgr",   { NULL }, 3952,  "tcp" },
-  { "i3-sessionmgr",   { NULL }, 3952,  "udp" },
-  { "xmlink-connect",  { NULL }, 3953,  "tcp" },
-  { "xmlink-connect",  { NULL }, 3953,  "udp" },
-  { "adrep",           { NULL }, 3954,  "tcp" },
-  { "adrep",           { NULL }, 3954,  "udp" },
-  { "p2pcommunity",    { NULL }, 3955,  "tcp" },
-  { "p2pcommunity",    { NULL }, 3955,  "udp" },
-  { "gvcp",            { NULL }, 3956,  "tcp" },
-  { "gvcp",            { NULL }, 3956,  "udp" },
-  { "mqe-broker",      { NULL }, 3957,  "tcp" },
-  { "mqe-broker",      { NULL }, 3957,  "udp" },
-  { "mqe-agent",       { NULL }, 3958,  "tcp" },
-  { "mqe-agent",       { NULL }, 3958,  "udp" },
-  { "treehopper",      { NULL }, 3959,  "tcp" },
-  { "treehopper",      { NULL }, 3959,  "udp" },
-  { "bess",            { NULL }, 3960,  "tcp" },
-  { "bess",            { NULL }, 3960,  "udp" },
-  { "proaxess",        { NULL }, 3961,  "tcp" },
-  { "proaxess",        { NULL }, 3961,  "udp" },
-  { "sbi-agent",       { NULL }, 3962,  "tcp" },
-  { "sbi-agent",       { NULL }, 3962,  "udp" },
-  { "thrp",            { NULL }, 3963,  "tcp" },
-  { "thrp",            { NULL }, 3963,  "udp" },
-  { "sasggprs",        { NULL }, 3964,  "tcp" },
-  { "sasggprs",        { NULL }, 3964,  "udp" },
-  { "ati-ip-to-ncpe",  { NULL }, 3965,  "tcp" },
-  { "ati-ip-to-ncpe",  { NULL }, 3965,  "udp" },
-  { "bflckmgr",        { NULL }, 3966,  "tcp" },
-  { "bflckmgr",        { NULL }, 3966,  "udp" },
-  { "ppsms",           { NULL }, 3967,  "tcp" },
-  { "ppsms",           { NULL }, 3967,  "udp" },
-  { "ianywhere-dbns",  { NULL }, 3968,  "tcp" },
-  { "ianywhere-dbns",  { NULL }, 3968,  "udp" },
-  { "landmarks",       { NULL }, 3969,  "tcp" },
-  { "landmarks",       { NULL }, 3969,  "udp" },
-  { "lanrevagent",     { NULL }, 3970,  "tcp" },
-  { "lanrevagent",     { NULL }, 3970,  "udp" },
-  { "lanrevserver",    { NULL }, 3971,  "tcp" },
-  { "lanrevserver",    { NULL }, 3971,  "udp" },
-  { "iconp",           { NULL }, 3972,  "tcp" },
-  { "iconp",           { NULL }, 3972,  "udp" },
-  { "progistics",      { NULL }, 3973,  "tcp" },
-  { "progistics",      { NULL }, 3973,  "udp" },
-  { "citysearch",      { NULL }, 3974,  "tcp" },
-  { "citysearch",      { NULL }, 3974,  "udp" },
-  { "airshot",         { NULL }, 3975,  "tcp" },
-  { "airshot",         { NULL }, 3975,  "udp" },
-  { "opswagent",       { NULL }, 3976,  "tcp" },
-  { "opswagent",       { NULL }, 3976,  "udp" },
-  { "opswmanager",     { NULL }, 3977,  "tcp" },
-  { "opswmanager",     { NULL }, 3977,  "udp" },
-  { "secure-cfg-svr",  { NULL }, 3978,  "tcp" },
-  { "secure-cfg-svr",  { NULL }, 3978,  "udp" },
-  { "smwan",           { NULL }, 3979,  "tcp" },
-  { "smwan",           { NULL }, 3979,  "udp" },
-  { "acms",            { NULL }, 3980,  "tcp" },
-  { "acms",            { NULL }, 3980,  "udp" },
-  { "starfish",        { NULL }, 3981,  "tcp" },
-  { "starfish",        { NULL }, 3981,  "udp" },
-  { "eis",             { NULL }, 3982,  "tcp" },
-  { "eis",             { NULL }, 3982,  "udp" },
-  { "eisp",            { NULL }, 3983,  "tcp" },
-  { "eisp",            { NULL }, 3983,  "udp" },
-  { "mapper-nodemgr",  { NULL }, 3984,  "tcp" },
-  { "mapper-nodemgr",  { NULL }, 3984,  "udp" },
-  { "mapper-mapethd",  { NULL }, 3985,  "tcp" },
-  { "mapper-mapethd",  { NULL }, 3985,  "udp" },
-  { "mapper-ws_ethd",  { NULL }, 3986,  "tcp" },
-  { "mapper-ws_ethd",  { NULL }, 3986,  "udp" },
-  { "centerline",      { NULL }, 3987,  "tcp" },
-  { "centerline",      { NULL }, 3987,  "udp" },
-  { "dcs-config",      { NULL }, 3988,  "tcp" },
-  { "dcs-config",      { NULL }, 3988,  "udp" },
-  { "bv-queryengine",  { NULL }, 3989,  "tcp" },
-  { "bv-queryengine",  { NULL }, 3989,  "udp" },
-  { "bv-is",           { NULL }, 3990,  "tcp" },
-  { "bv-is",           { NULL }, 3990,  "udp" },
-  { "bv-smcsrv",       { NULL }, 3991,  "tcp" },
-  { "bv-smcsrv",       { NULL }, 3991,  "udp" },
-  { "bv-ds",           { NULL }, 3992,  "tcp" },
-  { "bv-ds",           { NULL }, 3992,  "udp" },
-  { "bv-agent",        { NULL }, 3993,  "tcp" },
-  { "bv-agent",        { NULL }, 3993,  "udp" },
-  { "iss-mgmt-ssl",    { NULL }, 3995,  "tcp" },
-  { "iss-mgmt-ssl",    { NULL }, 3995,  "udp" },
-  { "abcsoftware",     { NULL }, 3996,  "tcp" },
-  { "abcsoftware",     { NULL }, 3996,  "udp" },
-  { "agentsease-db",   { NULL }, 3997,  "tcp" },
-  { "agentsease-db",   { NULL }, 3997,  "udp" },
-  { "dnx",             { NULL }, 3998,  "tcp" },
-  { "dnx",             { NULL }, 3998,  "udp" },
-  { "nvcnet",          { NULL }, 3999,  "tcp" },
-  { "nvcnet",          { NULL }, 3999,  "udp" },
-  { "terabase",        { NULL }, 4000,  "tcp" },
-  { "terabase",        { NULL }, 4000,  "udp" },
-  { "newoak",          { NULL }, 4001,  "tcp" },
-  { "newoak",          { NULL }, 4001,  "udp" },
-  { "pxc-spvr-ft",     { NULL }, 4002,  "tcp" },
-  { "pxc-spvr-ft",     { NULL }, 4002,  "udp" },
-  { "pxc-splr-ft",     { NULL }, 4003,  "tcp" },
-  { "pxc-splr-ft",     { NULL }, 4003,  "udp" },
-  { "pxc-roid",        { NULL }, 4004,  "tcp" },
-  { "pxc-roid",        { NULL }, 4004,  "udp" },
-  { "pxc-pin",         { NULL }, 4005,  "tcp" },
-  { "pxc-pin",         { NULL }, 4005,  "udp" },
-  { "pxc-spvr",        { NULL }, 4006,  "tcp" },
-  { "pxc-spvr",        { NULL }, 4006,  "udp" },
-  { "pxc-splr",        { NULL }, 4007,  "tcp" },
-  { "pxc-splr",        { NULL }, 4007,  "udp" },
-  { "netcheque",       { NULL }, 4008,  "tcp" },
-  { "netcheque",       { NULL }, 4008,  "udp" },
-  { "chimera-hwm",     { NULL }, 4009,  "tcp" },
-  { "chimera-hwm",     { NULL }, 4009,  "udp" },
-  { "samsung-unidex",  { NULL }, 4010,  "tcp" },
-  { "samsung-unidex",  { NULL }, 4010,  "udp" },
-  { "altserviceboot",  { NULL }, 4011,  "tcp" },
-  { "altserviceboot",  { NULL }, 4011,  "udp" },
-  { "pda-gate",        { NULL }, 4012,  "tcp" },
-  { "pda-gate",        { NULL }, 4012,  "udp" },
-  { "acl-manager",     { NULL }, 4013,  "tcp" },
-  { "acl-manager",     { NULL }, 4013,  "udp" },
-  { "taiclock",        { NULL }, 4014,  "tcp" },
-  { "taiclock",        { NULL }, 4014,  "udp" },
-  { "talarian-mcast1", { NULL }, 4015,  "tcp" },
-  { "talarian-mcast1", { NULL }, 4015,  "udp" },
-  { "talarian-mcast2", { NULL }, 4016,  "tcp" },
-  { "talarian-mcast2", { NULL }, 4016,  "udp" },
-  { "talarian-mcast3", { NULL }, 4017,  "tcp" },
-  { "talarian-mcast3", { NULL }, 4017,  "udp" },
-  { "talarian-mcast4", { NULL }, 4018,  "tcp" },
-  { "talarian-mcast4", { NULL }, 4018,  "udp" },
-  { "talarian-mcast5", { NULL }, 4019,  "tcp" },
-  { "talarian-mcast5", { NULL }, 4019,  "udp" },
-  { "trap",            { NULL }, 4020,  "tcp" },
-  { "trap",            { NULL }, 4020,  "udp" },
-  { "nexus-portal",    { NULL }, 4021,  "tcp" },
-  { "nexus-portal",    { NULL }, 4021,  "udp" },
-  { "dnox",            { NULL }, 4022,  "tcp" },
-  { "dnox",            { NULL }, 4022,  "udp" },
-  { "esnm-zoning",     { NULL }, 4023,  "tcp" },
-  { "esnm-zoning",     { NULL }, 4023,  "udp" },
-  { "tnp1-port",       { NULL }, 4024,  "tcp" },
-  { "tnp1-port",       { NULL }, 4024,  "udp" },
-  { "partimage",       { NULL }, 4025,  "tcp" },
-  { "partimage",       { NULL }, 4025,  "udp" },
-  { "as-debug",        { NULL }, 4026,  "tcp" },
-  { "as-debug",        { NULL }, 4026,  "udp" },
-  { "bxp",             { NULL }, 4027,  "tcp" },
-  { "bxp",             { NULL }, 4027,  "udp" },
-  { "dtserver-port",   { NULL }, 4028,  "tcp" },
-  { "dtserver-port",   { NULL }, 4028,  "udp" },
-  { "ip-qsig",         { NULL }, 4029,  "tcp" },
-  { "ip-qsig",         { NULL }, 4029,  "udp" },
-  { "jdmn-port",       { NULL }, 4030,  "tcp" },
-  { "jdmn-port",       { NULL }, 4030,  "udp" },
-  { "suucp",           { NULL }, 4031,  "tcp" },
-  { "suucp",           { NULL }, 4031,  "udp" },
-  { "vrts-auth-port",  { NULL }, 4032,  "tcp" },
-  { "vrts-auth-port",  { NULL }, 4032,  "udp" },
-  { "sanavigator",     { NULL }, 4033,  "tcp" },
-  { "sanavigator",     { NULL }, 4033,  "udp" },
-  { "ubxd",            { NULL }, 4034,  "tcp" },
-  { "ubxd",            { NULL }, 4034,  "udp" },
-  { "wap-push-http",   { NULL }, 4035,  "tcp" },
-  { "wap-push-http",   { NULL }, 4035,  "udp" },
-  { "wap-push-https",  { NULL }, 4036,  "tcp" },
-  { "wap-push-https",  { NULL }, 4036,  "udp" },
-  { "ravehd",          { NULL }, 4037,  "tcp" },
-  { "ravehd",          { NULL }, 4037,  "udp" },
-  { "fazzt-ptp",       { NULL }, 4038,  "tcp" },
-  { "fazzt-ptp",       { NULL }, 4038,  "udp" },
-  { "fazzt-admin",     { NULL }, 4039,  "tcp" },
-  { "fazzt-admin",     { NULL }, 4039,  "udp" },
-  { "yo-main",         { NULL }, 4040,  "tcp" },
-  { "yo-main",         { NULL }, 4040,  "udp" },
-  { "houston",         { NULL }, 4041,  "tcp" },
-  { "houston",         { NULL }, 4041,  "udp" },
-  { "ldxp",            { NULL }, 4042,  "tcp" },
-  { "ldxp",            { NULL }, 4042,  "udp" },
-  { "nirp",            { NULL }, 4043,  "tcp" },
-  { "nirp",            { NULL }, 4043,  "udp" },
-  { "ltp",             { NULL }, 4044,  "tcp" },
-  { "ltp",             { NULL }, 4044,  "udp" },
-  { "npp",             { NULL }, 4045,  "tcp" },
-  { "npp",             { NULL }, 4045,  "udp" },
-  { "acp-proto",       { NULL }, 4046,  "tcp" },
-  { "acp-proto",       { NULL }, 4046,  "udp" },
-  { "ctp-state",       { NULL }, 4047,  "tcp" },
-  { "ctp-state",       { NULL }, 4047,  "udp" },
-  { "wafs",            { NULL }, 4049,  "tcp" },
-  { "wafs",            { NULL }, 4049,  "udp" },
-  { "cisco-wafs",      { NULL }, 4050,  "tcp" },
-  { "cisco-wafs",      { NULL }, 4050,  "udp" },
-  { "cppdp",           { NULL }, 4051,  "tcp" },
-  { "cppdp",           { NULL }, 4051,  "udp" },
-  { "interact",        { NULL }, 4052,  "tcp" },
-  { "interact",        { NULL }, 4052,  "udp" },
-  { "ccu-comm-1",      { NULL }, 4053,  "tcp" },
-  { "ccu-comm-1",      { NULL }, 4053,  "udp" },
-  { "ccu-comm-2",      { NULL }, 4054,  "tcp" },
-  { "ccu-comm-2",      { NULL }, 4054,  "udp" },
-  { "ccu-comm-3",      { NULL }, 4055,  "tcp" },
-  { "ccu-comm-3",      { NULL }, 4055,  "udp" },
-  { "lms",             { NULL }, 4056,  "tcp" },
-  { "lms",             { NULL }, 4056,  "udp" },
-  { "wfm",             { NULL }, 4057,  "tcp" },
-  { "wfm",             { NULL }, 4057,  "udp" },
-  { "kingfisher",      { NULL }, 4058,  "tcp" },
-  { "kingfisher",      { NULL }, 4058,  "udp" },
-  { "dlms-cosem",      { NULL }, 4059,  "tcp" },
-  { "dlms-cosem",      { NULL }, 4059,  "udp" },
-  { "dsmeter_iatc",    { NULL }, 4060,  "tcp" },
-  { "dsmeter_iatc",    { NULL }, 4060,  "udp" },
-  { "ice-location",    { NULL }, 4061,  "tcp" },
-  { "ice-location",    { NULL }, 4061,  "udp" },
-  { "ice-slocation",   { NULL }, 4062,  "tcp" },
-  { "ice-slocation",   { NULL }, 4062,  "udp" },
-  { "ice-router",      { NULL }, 4063,  "tcp" },
-  { "ice-router",      { NULL }, 4063,  "udp" },
-  { "ice-srouter",     { NULL }, 4064,  "tcp" },
-  { "ice-srouter",     { NULL }, 4064,  "udp" },
-  { "avanti_cdp",      { NULL }, 4065,  "tcp" },
-  { "avanti_cdp",      { NULL }, 4065,  "udp" },
-  { "pmas",            { NULL }, 4066,  "tcp" },
-  { "pmas",            { NULL }, 4066,  "udp" },
-  { "idp",             { NULL }, 4067,  "tcp" },
-  { "idp",             { NULL }, 4067,  "udp" },
-  { "ipfltbcst",       { NULL }, 4068,  "tcp" },
-  { "ipfltbcst",       { NULL }, 4068,  "udp" },
-  { "minger",          { NULL }, 4069,  "tcp" },
-  { "minger",          { NULL }, 4069,  "udp" },
-  { "tripe",           { NULL }, 4070,  "tcp" },
-  { "tripe",           { NULL }, 4070,  "udp" },
-  { "aibkup",          { NULL }, 4071,  "tcp" },
-  { "aibkup",          { NULL }, 4071,  "udp" },
-  { "zieto-sock",      { NULL }, 4072,  "tcp" },
-  { "zieto-sock",      { NULL }, 4072,  "udp" },
-  { "iRAPP",           { NULL }, 4073,  "tcp" },
-  { "iRAPP",           { NULL }, 4073,  "udp" },
-  { "cequint-cityid",  { NULL }, 4074,  "tcp" },
-  { "cequint-cityid",  { NULL }, 4074,  "udp" },
-  { "perimlan",        { NULL }, 4075,  "tcp" },
-  { "perimlan",        { NULL }, 4075,  "udp" },
-  { "seraph",          { NULL }, 4076,  "tcp" },
-  { "seraph",          { NULL }, 4076,  "udp" },
-  { "ascomalarm",      { NULL }, 4077,  "udp" },
-  { "cssp",            { NULL }, 4078,  "tcp" },
-  { "santools",        { NULL }, 4079,  "tcp" },
-  { "santools",        { NULL }, 4079,  "udp" },
-  { "lorica-in",       { NULL }, 4080,  "tcp" },
-  { "lorica-in",       { NULL }, 4080,  "udp" },
-  { "lorica-in-sec",   { NULL }, 4081,  "tcp" },
-  { "lorica-in-sec",   { NULL }, 4081,  "udp" },
-  { "lorica-out",      { NULL }, 4082,  "tcp" },
-  { "lorica-out",      { NULL }, 4082,  "udp" },
-  { "lorica-out-sec",  { NULL }, 4083,  "tcp" },
-  { "lorica-out-sec",  { NULL }, 4083,  "udp" },
-  { "fortisphere-vm",  { NULL }, 4084,  "udp" },
-  { "ezmessagesrv",    { NULL }, 4085,  "tcp" },
-  { "ftsync",          { NULL }, 4086,  "udp" },
-  { "applusservice",   { NULL }, 4087,  "tcp" },
-  { "npsp",            { NULL }, 4088,  "tcp" },
-  { "opencore",        { NULL }, 4089,  "tcp" },
-  { "opencore",        { NULL }, 4089,  "udp" },
-  { "omasgport",       { NULL }, 4090,  "tcp" },
-  { "omasgport",       { NULL }, 4090,  "udp" },
-  { "ewinstaller",     { NULL }, 4091,  "tcp" },
-  { "ewinstaller",     { NULL }, 4091,  "udp" },
-  { "ewdgs",           { NULL }, 4092,  "tcp" },
-  { "ewdgs",           { NULL }, 4092,  "udp" },
-  { "pvxpluscs",       { NULL }, 4093,  "tcp" },
-  { "pvxpluscs",       { NULL }, 4093,  "udp" },
-  { "sysrqd",          { NULL }, 4094,  "tcp" },
-  { "sysrqd",          { NULL }, 4094,  "udp" },
-  { "xtgui",           { NULL }, 4095,  "tcp" },
-  { "xtgui",           { NULL }, 4095,  "udp" },
-  { "bre",             { NULL }, 4096,  "tcp" },
-  { "bre",             { NULL }, 4096,  "udp" },
-  { "patrolview",      { NULL }, 4097,  "tcp" },
-  { "patrolview",      { NULL }, 4097,  "udp" },
-  { "drmsfsd",         { NULL }, 4098,  "tcp" },
-  { "drmsfsd",         { NULL }, 4098,  "udp" },
-  { "dpcp",            { NULL }, 4099,  "tcp" },
-  { "dpcp",            { NULL }, 4099,  "udp" },
-  { "igo-incognito",   { NULL }, 4100,  "tcp" },
-  { "igo-incognito",   { NULL }, 4100,  "udp" },
-  { "brlp-0",          { NULL }, 4101,  "tcp" },
-  { "brlp-0",          { NULL }, 4101,  "udp" },
-  { "brlp-1",          { NULL }, 4102,  "tcp" },
-  { "brlp-1",          { NULL }, 4102,  "udp" },
-  { "brlp-2",          { NULL }, 4103,  "tcp" },
-  { "brlp-2",          { NULL }, 4103,  "udp" },
-  { "brlp-3",          { NULL }, 4104,  "tcp" },
-  { "brlp-3",          { NULL }, 4104,  "udp" },
-  { "shofarplayer",    { NULL }, 4105,  "tcp" },
-  { "shofarplayer",    { NULL }, 4105,  "udp" },
-  { "synchronite",     { NULL }, 4106,  "tcp" },
-  { "synchronite",     { NULL }, 4106,  "udp" },
-  { "j-ac",            { NULL }, 4107,  "tcp" },
-  { "j-ac",            { NULL }, 4107,  "udp" },
-  { "accel",           { NULL }, 4108,  "tcp" },
-  { "accel",           { NULL }, 4108,  "udp" },
-  { "izm",             { NULL }, 4109,  "tcp" },
-  { "izm",             { NULL }, 4109,  "udp" },
-  { "g2tag",           { NULL }, 4110,  "tcp" },
-  { "g2tag",           { NULL }, 4110,  "udp" },
-  { "xgrid",           { NULL }, 4111,  "tcp" },
-  { "xgrid",           { NULL }, 4111,  "udp" },
-  { "apple-vpns-rp",   { NULL }, 4112,  "tcp" },
-  { "apple-vpns-rp",   { NULL }, 4112,  "udp" },
-  { "aipn-reg",        { NULL }, 4113,  "tcp" },
-  { "aipn-reg",        { NULL }, 4113,  "udp" },
-  { "jomamqmonitor",   { NULL }, 4114,  "tcp" },
-  { "jomamqmonitor",   { NULL }, 4114,  "udp" },
-  { "cds",             { NULL }, 4115,  "tcp" },
-  { "cds",             { NULL }, 4115,  "udp" },
-  { "smartcard-tls",   { NULL }, 4116,  "tcp" },
-  { "smartcard-tls",   { NULL }, 4116,  "udp" },
-  { "hillrserv",       { NULL }, 4117,  "tcp" },
-  { "hillrserv",       { NULL }, 4117,  "udp" },
-  { "netscript",       { NULL }, 4118,  "tcp" },
-  { "netscript",       { NULL }, 4118,  "udp" },
-  { "assuria-slm",     { NULL }, 4119,  "tcp" },
-  { "assuria-slm",     { NULL }, 4119,  "udp" },
-  { "e-builder",       { NULL }, 4121,  "tcp" },
-  { "e-builder",       { NULL }, 4121,  "udp" },
-  { "fprams",          { NULL }, 4122,  "tcp" },
-  { "fprams",          { NULL }, 4122,  "udp" },
-  { "z-wave",          { NULL }, 4123,  "tcp" },
-  { "z-wave",          { NULL }, 4123,  "udp" },
-  { "tigv2",           { NULL }, 4124,  "tcp" },
-  { "tigv2",           { NULL }, 4124,  "udp" },
-  { "opsview-envoy",   { NULL }, 4125,  "tcp" },
-  { "opsview-envoy",   { NULL }, 4125,  "udp" },
-  { "ddrepl",          { NULL }, 4126,  "tcp" },
-  { "ddrepl",          { NULL }, 4126,  "udp" },
-  { "unikeypro",       { NULL }, 4127,  "tcp" },
-  { "unikeypro",       { NULL }, 4127,  "udp" },
-  { "nufw",            { NULL }, 4128,  "tcp" },
-  { "nufw",            { NULL }, 4128,  "udp" },
-  { "nuauth",          { NULL }, 4129,  "tcp" },
-  { "nuauth",          { NULL }, 4129,  "udp" },
-  { "fronet",          { NULL }, 4130,  "tcp" },
-  { "fronet",          { NULL }, 4130,  "udp" },
-  { "stars",           { NULL }, 4131,  "tcp" },
-  { "stars",           { NULL }, 4131,  "udp" },
-  { "nuts_dem",        { NULL }, 4132,  "tcp" },
-  { "nuts_dem",        { NULL }, 4132,  "udp" },
-  { "nuts_bootp",      { NULL }, 4133,  "tcp" },
-  { "nuts_bootp",      { NULL }, 4133,  "udp" },
-  { "nifty-hmi",       { NULL }, 4134,  "tcp" },
-  { "nifty-hmi",       { NULL }, 4134,  "udp" },
-  { "cl-db-attach",    { NULL }, 4135,  "tcp" },
-  { "cl-db-attach",    { NULL }, 4135,  "udp" },
-  { "cl-db-request",   { NULL }, 4136,  "tcp" },
-  { "cl-db-request",   { NULL }, 4136,  "udp" },
-  { "cl-db-remote",    { NULL }, 4137,  "tcp" },
-  { "cl-db-remote",    { NULL }, 4137,  "udp" },
-  { "nettest",         { NULL }, 4138,  "tcp" },
-  { "nettest",         { NULL }, 4138,  "udp" },
-  { "thrtx",           { NULL }, 4139,  "tcp" },
-  { "thrtx",           { NULL }, 4139,  "udp" },
-  { "cedros_fds",      { NULL }, 4140,  "tcp" },
-  { "cedros_fds",      { NULL }, 4140,  "udp" },
-  { "oirtgsvc",        { NULL }, 4141,  "tcp" },
-  { "oirtgsvc",        { NULL }, 4141,  "udp" },
-  { "oidocsvc",        { NULL }, 4142,  "tcp" },
-  { "oidocsvc",        { NULL }, 4142,  "udp" },
-  { "oidsr",           { NULL }, 4143,  "tcp" },
-  { "oidsr",           { NULL }, 4143,  "udp" },
-  { "vvr-control",     { NULL }, 4145,  "tcp" },
-  { "vvr-control",     { NULL }, 4145,  "udp" },
-  { "tgcconnect",      { NULL }, 4146,  "tcp" },
-  { "tgcconnect",      { NULL }, 4146,  "udp" },
-  { "vrxpservman",     { NULL }, 4147,  "tcp" },
-  { "vrxpservman",     { NULL }, 4147,  "udp" },
-  { "hhb-handheld",    { NULL }, 4148,  "tcp" },
-  { "hhb-handheld",    { NULL }, 4148,  "udp" },
-  { "agslb",           { NULL }, 4149,  "tcp" },
-  { "agslb",           { NULL }, 4149,  "udp" },
-  { "PowerAlert-nsa",  { NULL }, 4150,  "tcp" },
-  { "PowerAlert-nsa",  { NULL }, 4150,  "udp" },
-  { "menandmice_noh",  { NULL }, 4151,  "tcp" },
-  { "menandmice_noh",  { NULL }, 4151,  "udp" },
-  { "idig_mux",        { NULL }, 4152,  "tcp" },
-  { "idig_mux",        { NULL }, 4152,  "udp" },
-  { "mbl-battd",       { NULL }, 4153,  "tcp" },
-  { "mbl-battd",       { NULL }, 4153,  "udp" },
-  { "atlinks",         { NULL }, 4154,  "tcp" },
-  { "atlinks",         { NULL }, 4154,  "udp" },
-  { "bzr",             { NULL }, 4155,  "tcp" },
-  { "bzr",             { NULL }, 4155,  "udp" },
-  { "stat-results",    { NULL }, 4156,  "tcp" },
-  { "stat-results",    { NULL }, 4156,  "udp" },
-  { "stat-scanner",    { NULL }, 4157,  "tcp" },
-  { "stat-scanner",    { NULL }, 4157,  "udp" },
-  { "stat-cc",         { NULL }, 4158,  "tcp" },
-  { "stat-cc",         { NULL }, 4158,  "udp" },
-  { "nss",             { NULL }, 4159,  "tcp" },
-  { "nss",             { NULL }, 4159,  "udp" },
-  { "jini-discovery",  { NULL }, 4160,  "tcp" },
-  { "jini-discovery",  { NULL }, 4160,  "udp" },
-  { "omscontact",      { NULL }, 4161,  "tcp" },
-  { "omscontact",      { NULL }, 4161,  "udp" },
-  { "omstopology",     { NULL }, 4162,  "tcp" },
-  { "omstopology",     { NULL }, 4162,  "udp" },
-  { "silverpeakpeer",  { NULL }, 4163,  "tcp" },
-  { "silverpeakpeer",  { NULL }, 4163,  "udp" },
-  { "silverpeakcomm",  { NULL }, 4164,  "tcp" },
-  { "silverpeakcomm",  { NULL }, 4164,  "udp" },
-  { "altcp",           { NULL }, 4165,  "tcp" },
-  { "altcp",           { NULL }, 4165,  "udp" },
-  { "joost",           { NULL }, 4166,  "tcp" },
-  { "joost",           { NULL }, 4166,  "udp" },
-  { "ddgn",            { NULL }, 4167,  "tcp" },
-  { "ddgn",            { NULL }, 4167,  "udp" },
-  { "pslicser",        { NULL }, 4168,  "tcp" },
-  { "pslicser",        { NULL }, 4168,  "udp" },
-  { "iadt",            { NULL }, 4169,  "tcp" },
-  { "iadt-disc",       { NULL }, 4169,  "udp" },
-  { "d-cinema-csp",    { NULL }, 4170,  "tcp" },
-  { "ml-svnet",        { NULL }, 4171,  "tcp" },
-  { "pcoip",           { NULL }, 4172,  "tcp" },
-  { "pcoip",           { NULL }, 4172,  "udp" },
-  { "smcluster",       { NULL }, 4174,  "tcp" },
-  { "bccp",            { NULL }, 4175,  "tcp" },
-  { "tl-ipcproxy",     { NULL }, 4176,  "tcp" },
-  { "wello",           { NULL }, 4177,  "tcp" },
-  { "wello",           { NULL }, 4177,  "udp" },
-  { "storman",         { NULL }, 4178,  "tcp" },
-  { "storman",         { NULL }, 4178,  "udp" },
-  { "MaxumSP",         { NULL }, 4179,  "tcp" },
-  { "MaxumSP",         { NULL }, 4179,  "udp" },
-  { "httpx",           { NULL }, 4180,  "tcp" },
-  { "httpx",           { NULL }, 4180,  "udp" },
-  { "macbak",          { NULL }, 4181,  "tcp" },
-  { "macbak",          { NULL }, 4181,  "udp" },
-  { "pcptcpservice",   { NULL }, 4182,  "tcp" },
-  { "pcptcpservice",   { NULL }, 4182,  "udp" },
-  { "gmmp",            { NULL }, 4183,  "tcp" },
-  { "gmmp",            { NULL }, 4183,  "udp" },
-  { "universe_suite",  { NULL }, 4184,  "tcp" },
-  { "universe_suite",  { NULL }, 4184,  "udp" },
-  { "wcpp",            { NULL }, 4185,  "tcp" },
-  { "wcpp",            { NULL }, 4185,  "udp" },
-  { "boxbackupstore",  { NULL }, 4186,  "tcp" },
-  { "csc_proxy",       { NULL }, 4187,  "tcp" },
-  { "vatata",          { NULL }, 4188,  "tcp" },
-  { "vatata",          { NULL }, 4188,  "udp" },
-  { "pcep",            { NULL }, 4189,  "tcp" },
-  { "sieve",           { NULL }, 4190,  "tcp" },
-  { "dsmipv6",         { NULL }, 4191,  "udp" },
-  { "azeti",           { NULL }, 4192,  "tcp" },
-  { "azeti-bd",        { NULL }, 4192,  "udp" },
-  { "pvxplusio",       { NULL }, 4193,  "tcp" },
-  { "eims-admin",      { NULL }, 4199,  "tcp" },
-  { "eims-admin",      { NULL }, 4199,  "udp" },
-  { "corelccam",       { NULL }, 4300,  "tcp" },
-  { "corelccam",       { NULL }, 4300,  "udp" },
-  { "d-data",          { NULL }, 4301,  "tcp" },
-  { "d-data",          { NULL }, 4301,  "udp" },
-  { "d-data-control",  { NULL }, 4302,  "tcp" },
-  { "d-data-control",  { NULL }, 4302,  "udp" },
-  { "srcp",            { NULL }, 4303,  "tcp" },
-  { "srcp",            { NULL }, 4303,  "udp" },
-  { "owserver",        { NULL }, 4304,  "tcp" },
-  { "owserver",        { NULL }, 4304,  "udp" },
-  { "batman",          { NULL }, 4305,  "tcp" },
-  { "batman",          { NULL }, 4305,  "udp" },
-  { "pinghgl",         { NULL }, 4306,  "tcp" },
-  { "pinghgl",         { NULL }, 4306,  "udp" },
-  { "visicron-vs",     { NULL }, 4307,  "tcp" },
-  { "visicron-vs",     { NULL }, 4307,  "udp" },
-  { "compx-lockview",  { NULL }, 4308,  "tcp" },
-  { "compx-lockview",  { NULL }, 4308,  "udp" },
-  { "dserver",         { NULL }, 4309,  "tcp" },
-  { "dserver",         { NULL }, 4309,  "udp" },
-  { "mirrtex",         { NULL }, 4310,  "tcp" },
-  { "mirrtex",         { NULL }, 4310,  "udp" },
-  { "p6ssmc",          { NULL }, 4311,  "tcp" },
-  { "pscl-mgt",        { NULL }, 4312,  "tcp" },
-  { "perrla",          { NULL }, 4313,  "tcp" },
-  { "fdt-rcatp",       { NULL }, 4320,  "tcp" },
-  { "fdt-rcatp",       { NULL }, 4320,  "udp" },
-  { "rwhois",          { NULL }, 4321,  "tcp" },
-  { "rwhois",          { NULL }, 4321,  "udp" },
-  { "trim-event",      { NULL }, 4322,  "tcp" },
-  { "trim-event",      { NULL }, 4322,  "udp" },
-  { "trim-ice",        { NULL }, 4323,  "tcp" },
-  { "trim-ice",        { NULL }, 4323,  "udp" },
-  { "balour",          { NULL }, 4324,  "tcp" },
-  { "balour",          { NULL }, 4324,  "udp" },
-  { "geognosisman",    { NULL }, 4325,  "tcp" },
-  { "geognosisman",    { NULL }, 4325,  "udp" },
-  { "geognosis",       { NULL }, 4326,  "tcp" },
-  { "geognosis",       { NULL }, 4326,  "udp" },
-  { "jaxer-web",       { NULL }, 4327,  "tcp" },
-  { "jaxer-web",       { NULL }, 4327,  "udp" },
-  { "jaxer-manager",   { NULL }, 4328,  "tcp" },
-  { "jaxer-manager",   { NULL }, 4328,  "udp" },
-  { "publiqare-sync",  { NULL }, 4329,  "tcp" },
-  { "gaia",            { NULL }, 4340,  "tcp" },
-  { "gaia",            { NULL }, 4340,  "udp" },
-  { "lisp-data",       { NULL }, 4341,  "tcp" },
-  { "lisp-data",       { NULL }, 4341,  "udp" },
-  { "lisp-cons",       { NULL }, 4342,  "tcp" },
-  { "lisp-control",    { NULL }, 4342,  "udp" },
-  { "unicall",         { NULL }, 4343,  "tcp" },
-  { "unicall",         { NULL }, 4343,  "udp" },
-  { "vinainstall",     { NULL }, 4344,  "tcp" },
-  { "vinainstall",     { NULL }, 4344,  "udp" },
-  { "m4-network-as",   { NULL }, 4345,  "tcp" },
-  { "m4-network-as",   { NULL }, 4345,  "udp" },
-  { "elanlm",          { NULL }, 4346,  "tcp" },
-  { "elanlm",          { NULL }, 4346,  "udp" },
-  { "lansurveyor",     { NULL }, 4347,  "tcp" },
-  { "lansurveyor",     { NULL }, 4347,  "udp" },
-  { "itose",           { NULL }, 4348,  "tcp" },
-  { "itose",           { NULL }, 4348,  "udp" },
-  { "fsportmap",       { NULL }, 4349,  "tcp" },
-  { "fsportmap",       { NULL }, 4349,  "udp" },
-  { "net-device",      { NULL }, 4350,  "tcp" },
-  { "net-device",      { NULL }, 4350,  "udp" },
-  { "plcy-net-svcs",   { NULL }, 4351,  "tcp" },
-  { "plcy-net-svcs",   { NULL }, 4351,  "udp" },
-  { "pjlink",          { NULL }, 4352,  "tcp" },
-  { "pjlink",          { NULL }, 4352,  "udp" },
-  { "f5-iquery",       { NULL }, 4353,  "tcp" },
-  { "f5-iquery",       { NULL }, 4353,  "udp" },
-  { "qsnet-trans",     { NULL }, 4354,  "tcp" },
-  { "qsnet-trans",     { NULL }, 4354,  "udp" },
-  { "qsnet-workst",    { NULL }, 4355,  "tcp" },
-  { "qsnet-workst",    { NULL }, 4355,  "udp" },
-  { "qsnet-assist",    { NULL }, 4356,  "tcp" },
-  { "qsnet-assist",    { NULL }, 4356,  "udp" },
-  { "qsnet-cond",      { NULL }, 4357,  "tcp" },
-  { "qsnet-cond",      { NULL }, 4357,  "udp" },
-  { "qsnet-nucl",      { NULL }, 4358,  "tcp" },
-  { "qsnet-nucl",      { NULL }, 4358,  "udp" },
-  { "omabcastltkm",    { NULL }, 4359,  "tcp" },
-  { "omabcastltkm",    { NULL }, 4359,  "udp" },
-  { "matrix_vnet",     { NULL }, 4360,  "tcp" },
-  { "nacnl",           { NULL }, 4361,  "udp" },
-  { "afore-vdp-disc",  { NULL }, 4362,  "udp" },
-  { "wxbrief",         { NULL }, 4368,  "tcp" },
-  { "wxbrief",         { NULL }, 4368,  "udp" },
-  { "epmd",            { NULL }, 4369,  "tcp" },
-  { "epmd",            { NULL }, 4369,  "udp" },
-  { "elpro_tunnel",    { NULL }, 4370,  "tcp" },
-  { "elpro_tunnel",    { NULL }, 4370,  "udp" },
-  { "l2c-control",     { NULL }, 4371,  "tcp" },
-  { "l2c-disc",        { NULL }, 4371,  "udp" },
-  { "l2c-data",        { NULL }, 4372,  "tcp" },
-  { "l2c-data",        { NULL }, 4372,  "udp" },
-  { "remctl",          { NULL }, 4373,  "tcp" },
-  { "remctl",          { NULL }, 4373,  "udp" },
-  { "psi-ptt",         { NULL }, 4374,  "tcp" },
-  { "tolteces",        { NULL }, 4375,  "tcp" },
-  { "tolteces",        { NULL }, 4375,  "udp" },
-  { "bip",             { NULL }, 4376,  "tcp" },
-  { "bip",             { NULL }, 4376,  "udp" },
-  { "cp-spxsvr",       { NULL }, 4377,  "tcp" },
-  { "cp-spxsvr",       { NULL }, 4377,  "udp" },
-  { "cp-spxdpy",       { NULL }, 4378,  "tcp" },
-  { "cp-spxdpy",       { NULL }, 4378,  "udp" },
-  { "ctdb",            { NULL }, 4379,  "tcp" },
-  { "ctdb",            { NULL }, 4379,  "udp" },
-  { "xandros-cms",     { NULL }, 4389,  "tcp" },
-  { "xandros-cms",     { NULL }, 4389,  "udp" },
-  { "wiegand",         { NULL }, 4390,  "tcp" },
-  { "wiegand",         { NULL }, 4390,  "udp" },
-  { "apwi-imserver",   { NULL }, 4391,  "tcp" },
-  { "apwi-rxserver",   { NULL }, 4392,  "tcp" },
-  { "apwi-rxspooler",  { NULL }, 4393,  "tcp" },
-  { "apwi-disc",       { NULL }, 4394,  "udp" },
-  { "omnivisionesx",   { NULL }, 4395,  "tcp" },
-  { "omnivisionesx",   { NULL }, 4395,  "udp" },
-  { "fly",             { NULL }, 4396,  "tcp" },
-  { "ds-srv",          { NULL }, 4400,  "tcp" },
-  { "ds-srv",          { NULL }, 4400,  "udp" },
-  { "ds-srvr",         { NULL }, 4401,  "tcp" },
-  { "ds-srvr",         { NULL }, 4401,  "udp" },
-  { "ds-clnt",         { NULL }, 4402,  "tcp" },
-  { "ds-clnt",         { NULL }, 4402,  "udp" },
-  { "ds-user",         { NULL }, 4403,  "tcp" },
-  { "ds-user",         { NULL }, 4403,  "udp" },
-  { "ds-admin",        { NULL }, 4404,  "tcp" },
-  { "ds-admin",        { NULL }, 4404,  "udp" },
-  { "ds-mail",         { NULL }, 4405,  "tcp" },
-  { "ds-mail",         { NULL }, 4405,  "udp" },
-  { "ds-slp",          { NULL }, 4406,  "tcp" },
-  { "ds-slp",          { NULL }, 4406,  "udp" },
-  { "nacagent",        { NULL }, 4407,  "tcp" },
-  { "slscc",           { NULL }, 4408,  "tcp" },
-  { "netcabinet-com",  { NULL }, 4409,  "tcp" },
-  { "itwo-server",     { NULL }, 4410,  "tcp" },
-  { "netrockey6",      { NULL }, 4425,  "tcp" },
-  { "netrockey6",      { NULL }, 4425,  "udp" },
-  { "beacon-port-2",   { NULL }, 4426,  "tcp" },
-  { "beacon-port-2",   { NULL }, 4426,  "udp" },
-  { "drizzle",         { NULL }, 4427,  "tcp" },
-  { "omviserver",      { NULL }, 4428,  "tcp" },
-  { "omviagent",       { NULL }, 4429,  "tcp" },
-  { "rsqlserver",      { NULL }, 4430,  "tcp" },
-  { "rsqlserver",      { NULL }, 4430,  "udp" },
-  { "wspipe",          { NULL }, 4431,  "tcp" },
-  { "netblox",         { NULL }, 4441,  "udp" },
-  { "saris",           { NULL }, 4442,  "tcp" },
-  { "saris",           { NULL }, 4442,  "udp" },
-  { "pharos",          { NULL }, 4443,  "tcp" },
-  { "pharos",          { NULL }, 4443,  "udp" },
-  { "krb524",          { NULL }, 4444,  "tcp" },
-  { "krb524",          { NULL }, 4444,  "udp" },
-  { "nv-video",        { NULL }, 4444,  "tcp" },
-  { "nv-video",        { NULL }, 4444,  "udp" },
-  { "upnotifyp",       { NULL }, 4445,  "tcp" },
-  { "upnotifyp",       { NULL }, 4445,  "udp" },
-  { "n1-fwp",          { NULL }, 4446,  "tcp" },
-  { "n1-fwp",          { NULL }, 4446,  "udp" },
-  { "n1-rmgmt",        { NULL }, 4447,  "tcp" },
-  { "n1-rmgmt",        { NULL }, 4447,  "udp" },
-  { "asc-slmd",        { NULL }, 4448,  "tcp" },
-  { "asc-slmd",        { NULL }, 4448,  "udp" },
-  { "privatewire",     { NULL }, 4449,  "tcp" },
-  { "privatewire",     { NULL }, 4449,  "udp" },
-  { "camp",            { NULL }, 4450,  "tcp" },
-  { "camp",            { NULL }, 4450,  "udp" },
-  { "ctisystemmsg",    { NULL }, 4451,  "tcp" },
-  { "ctisystemmsg",    { NULL }, 4451,  "udp" },
-  { "ctiprogramload",  { NULL }, 4452,  "tcp" },
-  { "ctiprogramload",  { NULL }, 4452,  "udp" },
-  { "nssalertmgr",     { NULL }, 4453,  "tcp" },
-  { "nssalertmgr",     { NULL }, 4453,  "udp" },
-  { "nssagentmgr",     { NULL }, 4454,  "tcp" },
-  { "nssagentmgr",     { NULL }, 4454,  "udp" },
-  { "prchat-user",     { NULL }, 4455,  "tcp" },
-  { "prchat-user",     { NULL }, 4455,  "udp" },
-  { "prchat-server",   { NULL }, 4456,  "tcp" },
-  { "prchat-server",   { NULL }, 4456,  "udp" },
-  { "prRegister",      { NULL }, 4457,  "tcp" },
-  { "prRegister",      { NULL }, 4457,  "udp" },
-  { "mcp",             { NULL }, 4458,  "tcp" },
-  { "mcp",             { NULL }, 4458,  "udp" },
-  { "hpssmgmt",        { NULL }, 4484,  "tcp" },
-  { "hpssmgmt",        { NULL }, 4484,  "udp" },
-  { "assyst-dr",       { NULL }, 4485,  "tcp" },
-  { "icms",            { NULL }, 4486,  "tcp" },
-  { "icms",            { NULL }, 4486,  "udp" },
-  { "prex-tcp",        { NULL }, 4487,  "tcp" },
-  { "awacs-ice",       { NULL }, 4488,  "tcp" },
-  { "awacs-ice",       { NULL }, 4488,  "udp" },
-  { "ipsec-nat-t",     { NULL }, 4500,  "tcp" },
-  { "ipsec-nat-t",     { NULL }, 4500,  "udp" },
-  { "ehs",             { NULL }, 4535,  "tcp" },
-  { "ehs",             { NULL }, 4535,  "udp" },
-  { "ehs-ssl",         { NULL }, 4536,  "tcp" },
-  { "ehs-ssl",         { NULL }, 4536,  "udp" },
-  { "wssauthsvc",      { NULL }, 4537,  "tcp" },
-  { "wssauthsvc",      { NULL }, 4537,  "udp" },
-  { "swx-gate",        { NULL }, 4538,  "tcp" },
-  { "swx-gate",        { NULL }, 4538,  "udp" },
-  { "worldscores",     { NULL }, 4545,  "tcp" },
-  { "worldscores",     { NULL }, 4545,  "udp" },
-  { "sf-lm",           { NULL }, 4546,  "tcp" },
-  { "sf-lm",           { NULL }, 4546,  "udp" },
-  { "lanner-lm",       { NULL }, 4547,  "tcp" },
-  { "lanner-lm",       { NULL }, 4547,  "udp" },
-  { "synchromesh",     { NULL }, 4548,  "tcp" },
-  { "synchromesh",     { NULL }, 4548,  "udp" },
-  { "aegate",          { NULL }, 4549,  "tcp" },
-  { "aegate",          { NULL }, 4549,  "udp" },
-  { "gds-adppiw-db",   { NULL }, 4550,  "tcp" },
-  { "gds-adppiw-db",   { NULL }, 4550,  "udp" },
-  { "ieee-mih",        { NULL }, 4551,  "tcp" },
-  { "ieee-mih",        { NULL }, 4551,  "udp" },
-  { "menandmice-mon",  { NULL }, 4552,  "tcp" },
-  { "menandmice-mon",  { NULL }, 4552,  "udp" },
-  { "icshostsvc",      { NULL }, 4553,  "tcp" },
-  { "msfrs",           { NULL }, 4554,  "tcp" },
-  { "msfrs",           { NULL }, 4554,  "udp" },
-  { "rsip",            { NULL }, 4555,  "tcp" },
-  { "rsip",            { NULL }, 4555,  "udp" },
-  { "dtn-bundle-tcp",  { NULL }, 4556,  "tcp" },
-  { "dtn-bundle-udp",  { NULL }, 4556,  "udp" },
-  { "mtcevrunqss",     { NULL }, 4557,  "udp" },
-  { "mtcevrunqman",    { NULL }, 4558,  "udp" },
-  { "hylafax",         { NULL }, 4559,  "tcp" },
-  { "hylafax",         { NULL }, 4559,  "udp" },
-  { "kwtc",            { NULL }, 4566,  "tcp" },
-  { "kwtc",            { NULL }, 4566,  "udp" },
-  { "tram",            { NULL }, 4567,  "tcp" },
-  { "tram",            { NULL }, 4567,  "udp" },
-  { "bmc-reporting",   { NULL }, 4568,  "tcp" },
-  { "bmc-reporting",   { NULL }, 4568,  "udp" },
-  { "iax",             { NULL }, 4569,  "tcp" },
-  { "iax",             { NULL }, 4569,  "udp" },
-  { "rid",             { NULL }, 4590,  "tcp" },
-  { "l3t-at-an",       { NULL }, 4591,  "tcp" },
-  { "l3t-at-an",       { NULL }, 4591,  "udp" },
-  { "hrpd-ith-at-an",  { NULL }, 4592,  "udp" },
-  { "ipt-anri-anri",   { NULL }, 4593,  "tcp" },
-  { "ipt-anri-anri",   { NULL }, 4593,  "udp" },
-  { "ias-session",     { NULL }, 4594,  "tcp" },
-  { "ias-session",     { NULL }, 4594,  "udp" },
-  { "ias-paging",      { NULL }, 4595,  "tcp" },
-  { "ias-paging",      { NULL }, 4595,  "udp" },
-  { "ias-neighbor",    { NULL }, 4596,  "tcp" },
-  { "ias-neighbor",    { NULL }, 4596,  "udp" },
-  { "a21-an-1xbs",     { NULL }, 4597,  "tcp" },
-  { "a21-an-1xbs",     { NULL }, 4597,  "udp" },
-  { "a16-an-an",       { NULL }, 4598,  "tcp" },
-  { "a16-an-an",       { NULL }, 4598,  "udp" },
-  { "a17-an-an",       { NULL }, 4599,  "tcp" },
-  { "a17-an-an",       { NULL }, 4599,  "udp" },
-  { "piranha1",        { NULL }, 4600,  "tcp" },
-  { "piranha1",        { NULL }, 4600,  "udp" },
-  { "piranha2",        { NULL }, 4601,  "tcp" },
-  { "piranha2",        { NULL }, 4601,  "udp" },
-  { "mtsserver",       { NULL }, 4602,  "tcp" },
-  { "menandmice-upg",  { NULL }, 4603,  "tcp" },
-  { "playsta2-app",    { NULL }, 4658,  "tcp" },
-  { "playsta2-app",    { NULL }, 4658,  "udp" },
-  { "playsta2-lob",    { NULL }, 4659,  "tcp" },
-  { "playsta2-lob",    { NULL }, 4659,  "udp" },
-  { "smaclmgr",        { NULL }, 4660,  "tcp" },
-  { "smaclmgr",        { NULL }, 4660,  "udp" },
-  { "kar2ouche",       { NULL }, 4661,  "tcp" },
-  { "kar2ouche",       { NULL }, 4661,  "udp" },
-  { "oms",             { NULL }, 4662,  "tcp" },
-  { "oms",             { NULL }, 4662,  "udp" },
-  { "noteit",          { NULL }, 4663,  "tcp" },
-  { "noteit",          { NULL }, 4663,  "udp" },
-  { "ems",             { NULL }, 4664,  "tcp" },
-  { "ems",             { NULL }, 4664,  "udp" },
-  { "contclientms",    { NULL }, 4665,  "tcp" },
-  { "contclientms",    { NULL }, 4665,  "udp" },
-  { "eportcomm",       { NULL }, 4666,  "tcp" },
-  { "eportcomm",       { NULL }, 4666,  "udp" },
-  { "mmacomm",         { NULL }, 4667,  "tcp" },
-  { "mmacomm",         { NULL }, 4667,  "udp" },
-  { "mmaeds",          { NULL }, 4668,  "tcp" },
-  { "mmaeds",          { NULL }, 4668,  "udp" },
-  { "eportcommdata",   { NULL }, 4669,  "tcp" },
-  { "eportcommdata",   { NULL }, 4669,  "udp" },
-  { "light",           { NULL }, 4670,  "tcp" },
-  { "light",           { NULL }, 4670,  "udp" },
-  { "acter",           { NULL }, 4671,  "tcp" },
-  { "acter",           { NULL }, 4671,  "udp" },
-  { "rfa",             { NULL }, 4672,  "tcp" },
-  { "rfa",             { NULL }, 4672,  "udp" },
-  { "cxws",            { NULL }, 4673,  "tcp" },
-  { "cxws",            { NULL }, 4673,  "udp" },
-  { "appiq-mgmt",      { NULL }, 4674,  "tcp" },
-  { "appiq-mgmt",      { NULL }, 4674,  "udp" },
-  { "dhct-status",     { NULL }, 4675,  "tcp" },
-  { "dhct-status",     { NULL }, 4675,  "udp" },
-  { "dhct-alerts",     { NULL }, 4676,  "tcp" },
-  { "dhct-alerts",     { NULL }, 4676,  "udp" },
-  { "bcs",             { NULL }, 4677,  "tcp" },
-  { "bcs",             { NULL }, 4677,  "udp" },
-  { "traversal",       { NULL }, 4678,  "tcp" },
-  { "traversal",       { NULL }, 4678,  "udp" },
-  { "mgesupervision",  { NULL }, 4679,  "tcp" },
-  { "mgesupervision",  { NULL }, 4679,  "udp" },
-  { "mgemanagement",   { NULL }, 4680,  "tcp" },
-  { "mgemanagement",   { NULL }, 4680,  "udp" },
-  { "parliant",        { NULL }, 4681,  "tcp" },
-  { "parliant",        { NULL }, 4681,  "udp" },
-  { "finisar",         { NULL }, 4682,  "tcp" },
-  { "finisar",         { NULL }, 4682,  "udp" },
-  { "spike",           { NULL }, 4683,  "tcp" },
-  { "spike",           { NULL }, 4683,  "udp" },
-  { "rfid-rp1",        { NULL }, 4684,  "tcp" },
-  { "rfid-rp1",        { NULL }, 4684,  "udp" },
-  { "autopac",         { NULL }, 4685,  "tcp" },
-  { "autopac",         { NULL }, 4685,  "udp" },
-  { "msp-os",          { NULL }, 4686,  "tcp" },
-  { "msp-os",          { NULL }, 4686,  "udp" },
-  { "nst",             { NULL }, 4687,  "tcp" },
-  { "nst",             { NULL }, 4687,  "udp" },
-  { "mobile-p2p",      { NULL }, 4688,  "tcp" },
-  { "mobile-p2p",      { NULL }, 4688,  "udp" },
-  { "altovacentral",   { NULL }, 4689,  "tcp" },
-  { "altovacentral",   { NULL }, 4689,  "udp" },
-  { "prelude",         { NULL }, 4690,  "tcp" },
-  { "prelude",         { NULL }, 4690,  "udp" },
-  { "mtn",             { NULL }, 4691,  "tcp" },
-  { "mtn",             { NULL }, 4691,  "udp" },
-  { "conspiracy",      { NULL }, 4692,  "tcp" },
-  { "conspiracy",      { NULL }, 4692,  "udp" },
-  { "netxms-agent",    { NULL }, 4700,  "tcp" },
-  { "netxms-agent",    { NULL }, 4700,  "udp" },
-  { "netxms-mgmt",     { NULL }, 4701,  "tcp" },
-  { "netxms-mgmt",     { NULL }, 4701,  "udp" },
-  { "netxms-sync",     { NULL }, 4702,  "tcp" },
-  { "netxms-sync",     { NULL }, 4702,  "udp" },
-  { "npqes-test",      { NULL }, 4703,  "tcp" },
-  { "assuria-ins",     { NULL }, 4704,  "tcp" },
-  { "truckstar",       { NULL }, 4725,  "tcp" },
-  { "truckstar",       { NULL }, 4725,  "udp" },
-  { "a26-fap-fgw",     { NULL }, 4726,  "udp" },
-  { "fcis",            { NULL }, 4727,  "tcp" },
-  { "fcis-disc",       { NULL }, 4727,  "udp" },
-  { "capmux",          { NULL }, 4728,  "tcp" },
-  { "capmux",          { NULL }, 4728,  "udp" },
-  { "gsmtap",          { NULL }, 4729,  "udp" },
-  { "gearman",         { NULL }, 4730,  "tcp" },
-  { "gearman",         { NULL }, 4730,  "udp" },
-  { "remcap",          { NULL }, 4731,  "tcp" },
-  { "ohmtrigger",      { NULL }, 4732,  "udp" },
-  { "resorcs",         { NULL }, 4733,  "tcp" },
-  { "ipdr-sp",         { NULL }, 4737,  "tcp" },
-  { "ipdr-sp",         { NULL }, 4737,  "udp" },
-  { "solera-lpn",      { NULL }, 4738,  "tcp" },
-  { "solera-lpn",      { NULL }, 4738,  "udp" },
-  { "ipfix",           { NULL }, 4739,  "tcp" },
-  { "ipfix",           { NULL }, 4739,  "udp" },
-  { "ipfix",           { NULL }, 4739,  "sctp"},
-  { "ipfixs",          { NULL }, 4740,  "tcp" },
-  { "ipfixs",          { NULL }, 4740,  "sctp"},
-  { "ipfixs",          { NULL }, 4740,  "udp" },
-  { "lumimgrd",        { NULL }, 4741,  "tcp" },
-  { "lumimgrd",        { NULL }, 4741,  "udp" },
-  { "sicct",           { NULL }, 4742,  "tcp" },
-  { "sicct-sdp",       { NULL }, 4742,  "udp" },
-  { "openhpid",        { NULL }, 4743,  "tcp" },
-  { "openhpid",        { NULL }, 4743,  "udp" },
-  { "ifsp",            { NULL }, 4744,  "tcp" },
-  { "ifsp",            { NULL }, 4744,  "udp" },
-  { "fmp",             { NULL }, 4745,  "tcp" },
-  { "fmp",             { NULL }, 4745,  "udp" },
-  { "profilemac",      { NULL }, 4749,  "tcp" },
-  { "profilemac",      { NULL }, 4749,  "udp" },
-  { "ssad",            { NULL }, 4750,  "tcp" },
-  { "ssad",            { NULL }, 4750,  "udp" },
-  { "spocp",           { NULL }, 4751,  "tcp" },
-  { "spocp",           { NULL }, 4751,  "udp" },
-  { "snap",            { NULL }, 4752,  "tcp" },
-  { "snap",            { NULL }, 4752,  "udp" },
-  { "bfd-multi-ctl",   { NULL }, 4784,  "tcp" },
-  { "bfd-multi-ctl",   { NULL }, 4784,  "udp" },
-  { "cncp",            { NULL }, 4785,  "udp" },
-  { "smart-install",   { NULL }, 4786,  "tcp" },
-  { "sia-ctrl-plane",  { NULL }, 4787,  "tcp" },
-  { "iims",            { NULL }, 4800,  "tcp" },
-  { "iims",            { NULL }, 4800,  "udp" },
-  { "iwec",            { NULL }, 4801,  "tcp" },
-  { "iwec",            { NULL }, 4801,  "udp" },
-  { "ilss",            { NULL }, 4802,  "tcp" },
-  { "ilss",            { NULL }, 4802,  "udp" },
-  { "notateit",        { NULL }, 4803,  "tcp" },
-  { "notateit-disc",   { NULL }, 4803,  "udp" },
-  { "aja-ntv4-disc",   { NULL }, 4804,  "udp" },
-  { "htcp",            { NULL }, 4827,  "tcp" },
-  { "htcp",            { NULL }, 4827,  "udp" },
-  { "varadero-0",      { NULL }, 4837,  "tcp" },
-  { "varadero-0",      { NULL }, 4837,  "udp" },
-  { "varadero-1",      { NULL }, 4838,  "tcp" },
-  { "varadero-1",      { NULL }, 4838,  "udp" },
-  { "varadero-2",      { NULL }, 4839,  "tcp" },
-  { "varadero-2",      { NULL }, 4839,  "udp" },
-  { "opcua-tcp",       { NULL }, 4840,  "tcp" },
-  { "opcua-udp",       { NULL }, 4840,  "udp" },
-  { "quosa",           { NULL }, 4841,  "tcp" },
-  { "quosa",           { NULL }, 4841,  "udp" },
-  { "gw-asv",          { NULL }, 4842,  "tcp" },
-  { "gw-asv",          { NULL }, 4842,  "udp" },
-  { "opcua-tls",       { NULL }, 4843,  "tcp" },
-  { "opcua-tls",       { NULL }, 4843,  "udp" },
-  { "gw-log",          { NULL }, 4844,  "tcp" },
-  { "gw-log",          { NULL }, 4844,  "udp" },
-  { "wcr-remlib",      { NULL }, 4845,  "tcp" },
-  { "wcr-remlib",      { NULL }, 4845,  "udp" },
-  { "contamac_icm",    { NULL }, 4846,  "tcp" },
-  { "contamac_icm",    { NULL }, 4846,  "udp" },
-  { "wfc",             { NULL }, 4847,  "tcp" },
-  { "wfc",             { NULL }, 4847,  "udp" },
-  { "appserv-http",    { NULL }, 4848,  "tcp" },
-  { "appserv-http",    { NULL }, 4848,  "udp" },
-  { "appserv-https",   { NULL }, 4849,  "tcp" },
-  { "appserv-https",   { NULL }, 4849,  "udp" },
-  { "sun-as-nodeagt",  { NULL }, 4850,  "tcp" },
-  { "sun-as-nodeagt",  { NULL }, 4850,  "udp" },
-  { "derby-repli",     { NULL }, 4851,  "tcp" },
-  { "derby-repli",     { NULL }, 4851,  "udp" },
-  { "unify-debug",     { NULL }, 4867,  "tcp" },
-  { "unify-debug",     { NULL }, 4867,  "udp" },
-  { "phrelay",         { NULL }, 4868,  "tcp" },
-  { "phrelay",         { NULL }, 4868,  "udp" },
-  { "phrelaydbg",      { NULL }, 4869,  "tcp" },
-  { "phrelaydbg",      { NULL }, 4869,  "udp" },
-  { "cc-tracking",     { NULL }, 4870,  "tcp" },
-  { "cc-tracking",     { NULL }, 4870,  "udp" },
-  { "wired",           { NULL }, 4871,  "tcp" },
-  { "wired",           { NULL }, 4871,  "udp" },
-  { "tritium-can",     { NULL }, 4876,  "tcp" },
-  { "tritium-can",     { NULL }, 4876,  "udp" },
-  { "lmcs",            { NULL }, 4877,  "tcp" },
-  { "lmcs",            { NULL }, 4877,  "udp" },
-  { "inst-discovery",  { NULL }, 4878,  "udp" },
-  { "wsdl-event",      { NULL }, 4879,  "tcp" },
-  { "hislip",          { NULL }, 4880,  "tcp" },
-  { "socp-t",          { NULL }, 4881,  "udp" },
-  { "socp-c",          { NULL }, 4882,  "udp" },
-  { "wmlserver",       { NULL }, 4883,  "tcp" },
-  { "hivestor",        { NULL }, 4884,  "tcp" },
-  { "hivestor",        { NULL }, 4884,  "udp" },
-  { "abbs",            { NULL }, 4885,  "tcp" },
-  { "abbs",            { NULL }, 4885,  "udp" },
-  { "lyskom",          { NULL }, 4894,  "tcp" },
-  { "lyskom",          { NULL }, 4894,  "udp" },
-  { "radmin-port",     { NULL }, 4899,  "tcp" },
-  { "radmin-port",     { NULL }, 4899,  "udp" },
-  { "hfcs",            { NULL }, 4900,  "tcp" },
-  { "hfcs",            { NULL }, 4900,  "udp" },
-  { "flr_agent",       { NULL }, 4901,  "tcp" },
-  { "magiccontrol",    { NULL }, 4902,  "tcp" },
-  { "lutap",           { NULL }, 4912,  "tcp" },
-  { "lutcp",           { NULL }, 4913,  "tcp" },
-  { "bones",           { NULL }, 4914,  "tcp" },
-  { "bones",           { NULL }, 4914,  "udp" },
-  { "frcs",            { NULL }, 4915,  "tcp" },
-  { "atsc-mh-ssc",     { NULL }, 4937,  "udp" },
-  { "eq-office-4940",  { NULL }, 4940,  "tcp" },
-  { "eq-office-4940",  { NULL }, 4940,  "udp" },
-  { "eq-office-4941",  { NULL }, 4941,  "tcp" },
-  { "eq-office-4941",  { NULL }, 4941,  "udp" },
-  { "eq-office-4942",  { NULL }, 4942,  "tcp" },
-  { "eq-office-4942",  { NULL }, 4942,  "udp" },
-  { "munin",           { NULL }, 4949,  "tcp" },
-  { "munin",           { NULL }, 4949,  "udp" },
-  { "sybasesrvmon",    { NULL }, 4950,  "tcp" },
-  { "sybasesrvmon",    { NULL }, 4950,  "udp" },
-  { "pwgwims",         { NULL }, 4951,  "tcp" },
-  { "pwgwims",         { NULL }, 4951,  "udp" },
-  { "sagxtsds",        { NULL }, 4952,  "tcp" },
-  { "sagxtsds",        { NULL }, 4952,  "udp" },
-  { "dbsyncarbiter",   { NULL }, 4953,  "tcp" },
-  { "ccss-qmm",        { NULL }, 4969,  "tcp" },
-  { "ccss-qmm",        { NULL }, 4969,  "udp" },
-  { "ccss-qsm",        { NULL }, 4970,  "tcp" },
-  { "ccss-qsm",        { NULL }, 4970,  "udp" },
-  { "webyast",         { NULL }, 4984,  "tcp" },
-  { "gerhcs",          { NULL }, 4985,  "tcp" },
-  { "mrip",            { NULL }, 4986,  "tcp" },
-  { "mrip",            { NULL }, 4986,  "udp" },
-  { "smar-se-port1",   { NULL }, 4987,  "tcp" },
-  { "smar-se-port1",   { NULL }, 4987,  "udp" },
-  { "smar-se-port2",   { NULL }, 4988,  "tcp" },
-  { "smar-se-port2",   { NULL }, 4988,  "udp" },
-  { "parallel",        { NULL }, 4989,  "tcp" },
-  { "parallel",        { NULL }, 4989,  "udp" },
-  { "busycal",         { NULL }, 4990,  "tcp" },
-  { "busycal",         { NULL }, 4990,  "udp" },
-  { "vrt",             { NULL }, 4991,  "tcp" },
-  { "vrt",             { NULL }, 4991,  "udp" },
-  { "hfcs-manager",    { NULL }, 4999,  "tcp" },
-  { "hfcs-manager",    { NULL }, 4999,  "udp" },
-  { "commplex-main",   { NULL }, 5000,  "tcp" },
-  { "commplex-main",   { NULL }, 5000,  "udp" },
-  { "commplex-link",   { NULL }, 5001,  "tcp" },
-  { "commplex-link",   { NULL }, 5001,  "udp" },
-  { "rfe",             { NULL }, 5002,  "tcp" },
-  { "rfe",             { NULL }, 5002,  "udp" },
-  { "fmpro-internal",  { NULL }, 5003,  "tcp" },
-  { "fmpro-internal",  { NULL }, 5003,  "udp" },
-  { "avt-profile-1",   { NULL }, 5004,  "tcp" },
-  { "avt-profile-1",   { NULL }, 5004,  "udp" },
-  { "avt-profile-1",   { NULL }, 5004,  "dccp"},
-  { "avt-profile-2",   { NULL }, 5005,  "tcp" },
-  { "avt-profile-2",   { NULL }, 5005,  "udp" },
-  { "avt-profile-2",   { NULL }, 5005,  "dccp"},
-  { "wsm-server",      { NULL }, 5006,  "tcp" },
-  { "wsm-server",      { NULL }, 5006,  "udp" },
-  { "wsm-server-ssl",  { NULL }, 5007,  "tcp" },
-  { "wsm-server-ssl",  { NULL }, 5007,  "udp" },
-  { "synapsis-edge",   { NULL }, 5008,  "tcp" },
-  { "synapsis-edge",   { NULL }, 5008,  "udp" },
-  { "winfs",           { NULL }, 5009,  "tcp" },
-  { "winfs",           { NULL }, 5009,  "udp" },
-  { "telelpathstart",  { NULL }, 5010,  "tcp" },
-  { "telelpathstart",  { NULL }, 5010,  "udp" },
-  { "telelpathattack", { NULL }, 5011,  "tcp" },
-  { "telelpathattack", { NULL }, 5011,  "udp" },
-  { "nsp",             { NULL }, 5012,  "tcp" },
-  { "nsp",             { NULL }, 5012,  "udp" },
-  { "fmpro-v6",        { NULL }, 5013,  "tcp" },
-  { "fmpro-v6",        { NULL }, 5013,  "udp" },
-  { "onpsocket",       { NULL }, 5014,  "udp" },
-  { "fmwp",            { NULL }, 5015,  "tcp" },
-  { "zenginkyo-1",     { NULL }, 5020,  "tcp" },
-  { "zenginkyo-1",     { NULL }, 5020,  "udp" },
-  { "zenginkyo-2",     { NULL }, 5021,  "tcp" },
-  { "zenginkyo-2",     { NULL }, 5021,  "udp" },
-  { "mice",            { NULL }, 5022,  "tcp" },
-  { "mice",            { NULL }, 5022,  "udp" },
-  { "htuilsrv",        { NULL }, 5023,  "tcp" },
-  { "htuilsrv",        { NULL }, 5023,  "udp" },
-  { "scpi-telnet",     { NULL }, 5024,  "tcp" },
-  { "scpi-telnet",     { NULL }, 5024,  "udp" },
-  { "scpi-raw",        { NULL }, 5025,  "tcp" },
-  { "scpi-raw",        { NULL }, 5025,  "udp" },
-  { "strexec-d",       { NULL }, 5026,  "tcp" },
-  { "strexec-d",       { NULL }, 5026,  "udp" },
-  { "strexec-s",       { NULL }, 5027,  "tcp" },
-  { "strexec-s",       { NULL }, 5027,  "udp" },
-  { "qvr",             { NULL }, 5028,  "tcp" },
-  { "infobright",      { NULL }, 5029,  "tcp" },
-  { "infobright",      { NULL }, 5029,  "udp" },
-  { "surfpass",        { NULL }, 5030,  "tcp" },
-  { "surfpass",        { NULL }, 5030,  "udp" },
-  { "dmp",             { NULL }, 5031,  "udp" },
-  { "asnaacceler8db",  { NULL }, 5042,  "tcp" },
-  { "asnaacceler8db",  { NULL }, 5042,  "udp" },
-  { "swxadmin",        { NULL }, 5043,  "tcp" },
-  { "swxadmin",        { NULL }, 5043,  "udp" },
-  { "lxi-evntsvc",     { NULL }, 5044,  "tcp" },
-  { "lxi-evntsvc",     { NULL }, 5044,  "udp" },
-  { "osp",             { NULL }, 5045,  "tcp" },
-  { "vpm-udp",         { NULL }, 5046,  "udp" },
-  { "iscape",          { NULL }, 5047,  "udp" },
-  { "texai",           { NULL }, 5048,  "tcp" },
-  { "ivocalize",       { NULL }, 5049,  "tcp" },
-  { "ivocalize",       { NULL }, 5049,  "udp" },
-  { "mmcc",            { NULL }, 5050,  "tcp" },
-  { "mmcc",            { NULL }, 5050,  "udp" },
-  { "ita-agent",       { NULL }, 5051,  "tcp" },
-  { "ita-agent",       { NULL }, 5051,  "udp" },
-  { "ita-manager",     { NULL }, 5052,  "tcp" },
-  { "ita-manager",     { NULL }, 5052,  "udp" },
-  { "rlm",             { NULL }, 5053,  "tcp" },
-  { "rlm-admin",       { NULL }, 5054,  "tcp" },
-  { "unot",            { NULL }, 5055,  "tcp" },
-  { "unot",            { NULL }, 5055,  "udp" },
-  { "intecom-ps1",     { NULL }, 5056,  "tcp" },
-  { "intecom-ps1",     { NULL }, 5056,  "udp" },
-  { "intecom-ps2",     { NULL }, 5057,  "tcp" },
-  { "intecom-ps2",     { NULL }, 5057,  "udp" },
-  { "locus-disc",      { NULL }, 5058,  "udp" },
-  { "sds",             { NULL }, 5059,  "tcp" },
-  { "sds",             { NULL }, 5059,  "udp" },
-  { "sip",             { NULL }, 5060,  "tcp" },
-  { "sip",             { NULL }, 5060,  "udp" },
-  { "sip-tls",         { NULL }, 5061,  "tcp" },
-  { "sip-tls",         { NULL }, 5061,  "udp" },
-  { "na-localise",     { NULL }, 5062,  "tcp" },
-  { "na-localise",     { NULL }, 5062,  "udp" },
-  { "csrpc",           { NULL }, 5063,  "tcp" },
-  { "ca-1",            { NULL }, 5064,  "tcp" },
-  { "ca-1",            { NULL }, 5064,  "udp" },
-  { "ca-2",            { NULL }, 5065,  "tcp" },
-  { "ca-2",            { NULL }, 5065,  "udp" },
-  { "stanag-5066",     { NULL }, 5066,  "tcp" },
-  { "stanag-5066",     { NULL }, 5066,  "udp" },
-  { "authentx",        { NULL }, 5067,  "tcp" },
-  { "authentx",        { NULL }, 5067,  "udp" },
-  { "bitforestsrv",    { NULL }, 5068,  "tcp" },
-  { "i-net-2000-npr",  { NULL }, 5069,  "tcp" },
-  { "i-net-2000-npr",  { NULL }, 5069,  "udp" },
-  { "vtsas",           { NULL }, 5070,  "tcp" },
-  { "vtsas",           { NULL }, 5070,  "udp" },
-  { "powerschool",     { NULL }, 5071,  "tcp" },
-  { "powerschool",     { NULL }, 5071,  "udp" },
-  { "ayiya",           { NULL }, 5072,  "tcp" },
-  { "ayiya",           { NULL }, 5072,  "udp" },
-  { "tag-pm",          { NULL }, 5073,  "tcp" },
-  { "tag-pm",          { NULL }, 5073,  "udp" },
-  { "alesquery",       { NULL }, 5074,  "tcp" },
-  { "alesquery",       { NULL }, 5074,  "udp" },
-  { "cp-spxrpts",      { NULL }, 5079,  "udp" },
-  { "onscreen",        { NULL }, 5080,  "tcp" },
-  { "onscreen",        { NULL }, 5080,  "udp" },
-  { "sdl-ets",         { NULL }, 5081,  "tcp" },
-  { "sdl-ets",         { NULL }, 5081,  "udp" },
-  { "qcp",             { NULL }, 5082,  "tcp" },
-  { "qcp",             { NULL }, 5082,  "udp" },
-  { "qfp",             { NULL }, 5083,  "tcp" },
-  { "qfp",             { NULL }, 5083,  "udp" },
-  { "llrp",            { NULL }, 5084,  "tcp" },
-  { "llrp",            { NULL }, 5084,  "udp" },
-  { "encrypted-llrp",  { NULL }, 5085,  "tcp" },
-  { "encrypted-llrp",  { NULL }, 5085,  "udp" },
-  { "aprigo-cs",       { NULL }, 5086,  "tcp" },
-  { "car",             { NULL }, 5090,  "sctp"},
-  { "cxtp",            { NULL }, 5091,  "sctp"},
-  { "magpie",          { NULL }, 5092,  "udp" },
-  { "sentinel-lm",     { NULL }, 5093,  "tcp" },
-  { "sentinel-lm",     { NULL }, 5093,  "udp" },
-  { "hart-ip",         { NULL }, 5094,  "tcp" },
-  { "hart-ip",         { NULL }, 5094,  "udp" },
-  { "sentlm-srv2srv",  { NULL }, 5099,  "tcp" },
-  { "sentlm-srv2srv",  { NULL }, 5099,  "udp" },
-  { "socalia",         { NULL }, 5100,  "tcp" },
-  { "socalia",         { NULL }, 5100,  "udp" },
-  { "talarian-tcp",    { NULL }, 5101,  "tcp" },
-  { "talarian-udp",    { NULL }, 5101,  "udp" },
-  { "oms-nonsecure",   { NULL }, 5102,  "tcp" },
-  { "oms-nonsecure",   { NULL }, 5102,  "udp" },
-  { "actifio-c2c",     { NULL }, 5103,  "tcp" },
-  { "tinymessage",     { NULL }, 5104,  "udp" },
-  { "hughes-ap",       { NULL }, 5105,  "udp" },
-  { "taep-as-svc",     { NULL }, 5111,  "tcp" },
-  { "taep-as-svc",     { NULL }, 5111,  "udp" },
-  { "pm-cmdsvr",       { NULL }, 5112,  "tcp" },
-  { "pm-cmdsvr",       { NULL }, 5112,  "udp" },
-  { "ev-services",     { NULL }, 5114,  "tcp" },
-  { "autobuild",       { NULL }, 5115,  "tcp" },
-  { "emb-proj-cmd",    { NULL }, 5116,  "udp" },
-  { "gradecam",        { NULL }, 5117,  "tcp" },
-  { "nbt-pc",          { NULL }, 5133,  "tcp" },
-  { "nbt-pc",          { NULL }, 5133,  "udp" },
-  { "ppactivation",    { NULL }, 5134,  "tcp" },
-  { "erp-scale",       { NULL }, 5135,  "tcp" },
-  { "minotaur-sa",     { NULL }, 5136,  "udp" },
-  { "ctsd",            { NULL }, 5137,  "tcp" },
-  { "ctsd",            { NULL }, 5137,  "udp" },
-  { "rmonitor_secure", { NULL }, 5145,  "tcp" },
-  { "rmonitor_secure", { NULL }, 5145,  "udp" },
-  { "social-alarm",    { NULL }, 5146,  "tcp" },
-  { "atmp",            { NULL }, 5150,  "tcp" },
-  { "atmp",            { NULL }, 5150,  "udp" },
-  { "esri_sde",        { NULL }, 5151,  "tcp" },
-  { "esri_sde",        { NULL }, 5151,  "udp" },
-  { "sde-discovery",   { NULL }, 5152,  "tcp" },
-  { "sde-discovery",   { NULL }, 5152,  "udp" },
-  { "toruxserver",     { NULL }, 5153,  "tcp" },
-  { "bzflag",          { NULL }, 5154,  "tcp" },
-  { "bzflag",          { NULL }, 5154,  "udp" },
-  { "asctrl-agent",    { NULL }, 5155,  "tcp" },
-  { "asctrl-agent",    { NULL }, 5155,  "udp" },
-  { "rugameonline",    { NULL }, 5156,  "tcp" },
-  { "mediat",          { NULL }, 5157,  "tcp" },
-  { "snmpssh",         { NULL }, 5161,  "tcp" },
-  { "snmpssh-trap",    { NULL }, 5162,  "tcp" },
-  { "sbackup",         { NULL }, 5163,  "tcp" },
-  { "vpa",             { NULL }, 5164,  "tcp" },
-  { "vpa-disc",        { NULL }, 5164,  "udp" },
-  { "ife_icorp",       { NULL }, 5165,  "tcp" },
-  { "ife_icorp",       { NULL }, 5165,  "udp" },
-  { "winpcs",          { NULL }, 5166,  "tcp" },
-  { "winpcs",          { NULL }, 5166,  "udp" },
-  { "scte104",         { NULL }, 5167,  "tcp" },
-  { "scte104",         { NULL }, 5167,  "udp" },
-  { "scte30",          { NULL }, 5168,  "tcp" },
-  { "scte30",          { NULL }, 5168,  "udp" },
-  { "aol",             { NULL }, 5190,  "tcp" },
-  { "aol",             { NULL }, 5190,  "udp" },
-  { "aol-1",           { NULL }, 5191,  "tcp" },
-  { "aol-1",           { NULL }, 5191,  "udp" },
-  { "aol-2",           { NULL }, 5192,  "tcp" },
-  { "aol-2",           { NULL }, 5192,  "udp" },
-  { "aol-3",           { NULL }, 5193,  "tcp" },
-  { "aol-3",           { NULL }, 5193,  "udp" },
-  { "cpscomm",         { NULL }, 5194,  "tcp" },
-  { "targus-getdata",  { NULL }, 5200,  "tcp" },
-  { "targus-getdata",  { NULL }, 5200,  "udp" },
-  { "targus-getdata1", { NULL }, 5201,  "tcp" },
-  { "targus-getdata1", { NULL }, 5201,  "udp" },
-  { "targus-getdata2", { NULL }, 5202,  "tcp" },
-  { "targus-getdata2", { NULL }, 5202,  "udp" },
-  { "targus-getdata3", { NULL }, 5203,  "tcp" },
-  { "targus-getdata3", { NULL }, 5203,  "udp" },
-  { "3exmp",           { NULL }, 5221,  "tcp" },
-  { "xmpp-client",     { NULL }, 5222,  "tcp" },
-  { "hpvirtgrp",       { NULL }, 5223,  "tcp" },
-  { "hpvirtgrp",       { NULL }, 5223,  "udp" },
-  { "hpvirtctrl",      { NULL }, 5224,  "tcp" },
-  { "hpvirtctrl",      { NULL }, 5224,  "udp" },
-  { "hp-server",       { NULL }, 5225,  "tcp" },
-  { "hp-server",       { NULL }, 5225,  "udp" },
-  { "hp-status",       { NULL }, 5226,  "tcp" },
-  { "hp-status",       { NULL }, 5226,  "udp" },
-  { "perfd",           { NULL }, 5227,  "tcp" },
-  { "perfd",           { NULL }, 5227,  "udp" },
-  { "hpvroom",         { NULL }, 5228,  "tcp" },
-  { "csedaemon",       { NULL }, 5232,  "tcp" },
-  { "enfs",            { NULL }, 5233,  "tcp" },
-  { "eenet",           { NULL }, 5234,  "tcp" },
-  { "eenet",           { NULL }, 5234,  "udp" },
-  { "galaxy-network",  { NULL }, 5235,  "tcp" },
-  { "galaxy-network",  { NULL }, 5235,  "udp" },
-  { "padl2sim",        { NULL }, 5236,  "tcp" },
-  { "padl2sim",        { NULL }, 5236,  "udp" },
-  { "mnet-discovery",  { NULL }, 5237,  "tcp" },
-  { "mnet-discovery",  { NULL }, 5237,  "udp" },
-  { "downtools",       { NULL }, 5245,  "tcp" },
-  { "downtools-disc",  { NULL }, 5245,  "udp" },
-  { "capwap-control",  { NULL }, 5246,  "udp" },
-  { "capwap-data",     { NULL }, 5247,  "udp" },
-  { "caacws",          { NULL }, 5248,  "tcp" },
-  { "caacws",          { NULL }, 5248,  "udp" },
-  { "caaclang2",       { NULL }, 5249,  "tcp" },
-  { "caaclang2",       { NULL }, 5249,  "udp" },
-  { "soagateway",      { NULL }, 5250,  "tcp" },
-  { "soagateway",      { NULL }, 5250,  "udp" },
-  { "caevms",          { NULL }, 5251,  "tcp" },
-  { "caevms",          { NULL }, 5251,  "udp" },
-  { "movaz-ssc",       { NULL }, 5252,  "tcp" },
-  { "movaz-ssc",       { NULL }, 5252,  "udp" },
-  { "kpdp",            { NULL }, 5253,  "tcp" },
-  { "3com-njack-1",    { NULL }, 5264,  "tcp" },
-  { "3com-njack-1",    { NULL }, 5264,  "udp" },
-  { "3com-njack-2",    { NULL }, 5265,  "tcp" },
-  { "3com-njack-2",    { NULL }, 5265,  "udp" },
-  { "xmpp-server",     { NULL }, 5269,  "tcp" },
-  { "xmp",             { NULL }, 5270,  "tcp" },
-  { "xmp",             { NULL }, 5270,  "udp" },
-  { "cuelink",         { NULL }, 5271,  "tcp" },
-  { "cuelink-disc",    { NULL }, 5271,  "udp" },
-  { "pk",              { NULL }, 5272,  "tcp" },
-  { "pk",              { NULL }, 5272,  "udp" },
-  { "xmpp-bosh",       { NULL }, 5280,  "tcp" },
-  { "undo-lm",         { NULL }, 5281,  "tcp" },
-  { "transmit-port",   { NULL }, 5282,  "tcp" },
-  { "transmit-port",   { NULL }, 5282,  "udp" },
-  { "presence",        { NULL }, 5298,  "tcp" },
-  { "presence",        { NULL }, 5298,  "udp" },
-  { "nlg-data",        { NULL }, 5299,  "tcp" },
-  { "nlg-data",        { NULL }, 5299,  "udp" },
-  { "hacl-hb",         { NULL }, 5300,  "tcp" },
-  { "hacl-hb",         { NULL }, 5300,  "udp" },
-  { "hacl-gs",         { NULL }, 5301,  "tcp" },
-  { "hacl-gs",         { NULL }, 5301,  "udp" },
-  { "hacl-cfg",        { NULL }, 5302,  "tcp" },
-  { "hacl-cfg",        { NULL }, 5302,  "udp" },
-  { "hacl-probe",      { NULL }, 5303,  "tcp" },
-  { "hacl-probe",      { NULL }, 5303,  "udp" },
-  { "hacl-local",      { NULL }, 5304,  "tcp" },
-  { "hacl-local",      { NULL }, 5304,  "udp" },
-  { "hacl-test",       { NULL }, 5305,  "tcp" },
-  { "hacl-test",       { NULL }, 5305,  "udp" },
-  { "sun-mc-grp",      { NULL }, 5306,  "tcp" },
-  { "sun-mc-grp",      { NULL }, 5306,  "udp" },
-  { "sco-aip",         { NULL }, 5307,  "tcp" },
-  { "sco-aip",         { NULL }, 5307,  "udp" },
-  { "cfengine",        { NULL }, 5308,  "tcp" },
-  { "cfengine",        { NULL }, 5308,  "udp" },
-  { "jprinter",        { NULL }, 5309,  "tcp" },
-  { "jprinter",        { NULL }, 5309,  "udp" },
-  { "outlaws",         { NULL }, 5310,  "tcp" },
-  { "outlaws",         { NULL }, 5310,  "udp" },
-  { "permabit-cs",     { NULL }, 5312,  "tcp" },
-  { "permabit-cs",     { NULL }, 5312,  "udp" },
-  { "rrdp",            { NULL }, 5313,  "tcp" },
-  { "rrdp",            { NULL }, 5313,  "udp" },
-  { "opalis-rbt-ipc",  { NULL }, 5314,  "tcp" },
-  { "opalis-rbt-ipc",  { NULL }, 5314,  "udp" },
-  { "hacl-poll",       { NULL }, 5315,  "tcp" },
-  { "hacl-poll",       { NULL }, 5315,  "udp" },
-  { "hpdevms",         { NULL }, 5316,  "tcp" },
-  { "hpdevms",         { NULL }, 5316,  "udp" },
-  { "bsfserver-zn",    { NULL }, 5320,  "tcp" },
-  { "bsfsvr-zn-ssl",   { NULL }, 5321,  "tcp" },
-  { "kfserver",        { NULL }, 5343,  "tcp" },
-  { "kfserver",        { NULL }, 5343,  "udp" },
-  { "xkotodrcp",       { NULL }, 5344,  "tcp" },
-  { "xkotodrcp",       { NULL }, 5344,  "udp" },
-  { "stuns",           { NULL }, 5349,  "tcp" },
-  { "stuns",           { NULL }, 5349,  "udp" },
-  { "turns",           { NULL }, 5349,  "tcp" },
-  { "turns",           { NULL }, 5349,  "udp" },
-  { "stun-behaviors",  { NULL }, 5349,  "tcp" },
-  { "stun-behaviors",  { NULL }, 5349,  "udp" },
-  { "nat-pmp-status",  { NULL }, 5350,  "tcp" },
-  { "nat-pmp-status",  { NULL }, 5350,  "udp" },
-  { "nat-pmp",         { NULL }, 5351,  "tcp" },
-  { "nat-pmp",         { NULL }, 5351,  "udp" },
-  { "dns-llq",         { NULL }, 5352,  "tcp" },
-  { "dns-llq",         { NULL }, 5352,  "udp" },
-  { "mdns",            { NULL }, 5353,  "tcp" },
-  { "mdns",            { NULL }, 5353,  "udp" },
-  { "mdnsresponder",   { NULL }, 5354,  "tcp" },
-  { "mdnsresponder",   { NULL }, 5354,  "udp" },
-  { "llmnr",           { NULL }, 5355,  "tcp" },
-  { "llmnr",           { NULL }, 5355,  "udp" },
-  { "ms-smlbiz",       { NULL }, 5356,  "tcp" },
-  { "ms-smlbiz",       { NULL }, 5356,  "udp" },
-  { "wsdapi",          { NULL }, 5357,  "tcp" },
-  { "wsdapi",          { NULL }, 5357,  "udp" },
-  { "wsdapi-s",        { NULL }, 5358,  "tcp" },
-  { "wsdapi-s",        { NULL }, 5358,  "udp" },
-  { "ms-alerter",      { NULL }, 5359,  "tcp" },
-  { "ms-alerter",      { NULL }, 5359,  "udp" },
-  { "ms-sideshow",     { NULL }, 5360,  "tcp" },
-  { "ms-sideshow",     { NULL }, 5360,  "udp" },
-  { "ms-s-sideshow",   { NULL }, 5361,  "tcp" },
-  { "ms-s-sideshow",   { NULL }, 5361,  "udp" },
-  { "serverwsd2",      { NULL }, 5362,  "tcp" },
-  { "serverwsd2",      { NULL }, 5362,  "udp" },
-  { "net-projection",  { NULL }, 5363,  "tcp" },
-  { "net-projection",  { NULL }, 5363,  "udp" },
-  { "stresstester",    { NULL }, 5397,  "tcp" },
-  { "stresstester",    { NULL }, 5397,  "udp" },
-  { "elektron-admin",  { NULL }, 5398,  "tcp" },
-  { "elektron-admin",  { NULL }, 5398,  "udp" },
-  { "securitychase",   { NULL }, 5399,  "tcp" },
-  { "securitychase",   { NULL }, 5399,  "udp" },
-  { "excerpt",         { NULL }, 5400,  "tcp" },
-  { "excerpt",         { NULL }, 5400,  "udp" },
-  { "excerpts",        { NULL }, 5401,  "tcp" },
-  { "excerpts",        { NULL }, 5401,  "udp" },
-  { "mftp",            { NULL }, 5402,  "tcp" },
-  { "mftp",            { NULL }, 5402,  "udp" },
-  { "hpoms-ci-lstn",   { NULL }, 5403,  "tcp" },
-  { "hpoms-ci-lstn",   { NULL }, 5403,  "udp" },
-  { "hpoms-dps-lstn",  { NULL }, 5404,  "tcp" },
-  { "hpoms-dps-lstn",  { NULL }, 5404,  "udp" },
-  { "netsupport",      { NULL }, 5405,  "tcp" },
-  { "netsupport",      { NULL }, 5405,  "udp" },
-  { "systemics-sox",   { NULL }, 5406,  "tcp" },
-  { "systemics-sox",   { NULL }, 5406,  "udp" },
-  { "foresyte-clear",  { NULL }, 5407,  "tcp" },
-  { "foresyte-clear",  { NULL }, 5407,  "udp" },
-  { "foresyte-sec",    { NULL }, 5408,  "tcp" },
-  { "foresyte-sec",    { NULL }, 5408,  "udp" },
-  { "salient-dtasrv",  { NULL }, 5409,  "tcp" },
-  { "salient-dtasrv",  { NULL }, 5409,  "udp" },
-  { "salient-usrmgr",  { NULL }, 5410,  "tcp" },
-  { "salient-usrmgr",  { NULL }, 5410,  "udp" },
-  { "actnet",          { NULL }, 5411,  "tcp" },
-  { "actnet",          { NULL }, 5411,  "udp" },
-  { "continuus",       { NULL }, 5412,  "tcp" },
-  { "continuus",       { NULL }, 5412,  "udp" },
-  { "wwiotalk",        { NULL }, 5413,  "tcp" },
-  { "wwiotalk",        { NULL }, 5413,  "udp" },
-  { "statusd",         { NULL }, 5414,  "tcp" },
-  { "statusd",         { NULL }, 5414,  "udp" },
-  { "ns-server",       { NULL }, 5415,  "tcp" },
-  { "ns-server",       { NULL }, 5415,  "udp" },
-  { "sns-gateway",     { NULL }, 5416,  "tcp" },
-  { "sns-gateway",     { NULL }, 5416,  "udp" },
-  { "sns-agent",       { NULL }, 5417,  "tcp" },
-  { "sns-agent",       { NULL }, 5417,  "udp" },
-  { "mcntp",           { NULL }, 5418,  "tcp" },
-  { "mcntp",           { NULL }, 5418,  "udp" },
-  { "dj-ice",          { NULL }, 5419,  "tcp" },
-  { "dj-ice",          { NULL }, 5419,  "udp" },
-  { "cylink-c",        { NULL }, 5420,  "tcp" },
-  { "cylink-c",        { NULL }, 5420,  "udp" },
-  { "netsupport2",     { NULL }, 5421,  "tcp" },
-  { "netsupport2",     { NULL }, 5421,  "udp" },
-  { "salient-mux",     { NULL }, 5422,  "tcp" },
-  { "salient-mux",     { NULL }, 5422,  "udp" },
-  { "virtualuser",     { NULL }, 5423,  "tcp" },
-  { "virtualuser",     { NULL }, 5423,  "udp" },
-  { "beyond-remote",   { NULL }, 5424,  "tcp" },
-  { "beyond-remote",   { NULL }, 5424,  "udp" },
-  { "br-channel",      { NULL }, 5425,  "tcp" },
-  { "br-channel",      { NULL }, 5425,  "udp" },
-  { "devbasic",        { NULL }, 5426,  "tcp" },
-  { "devbasic",        { NULL }, 5426,  "udp" },
-  { "sco-peer-tta",    { NULL }, 5427,  "tcp" },
-  { "sco-peer-tta",    { NULL }, 5427,  "udp" },
-  { "telaconsole",     { NULL }, 5428,  "tcp" },
-  { "telaconsole",     { NULL }, 5428,  "udp" },
-  { "base",            { NULL }, 5429,  "tcp" },
-  { "base",            { NULL }, 5429,  "udp" },
-  { "radec-corp",      { NULL }, 5430,  "tcp" },
-  { "radec-corp",      { NULL }, 5430,  "udp" },
-  { "park-agent",      { NULL }, 5431,  "tcp" },
-  { "park-agent",      { NULL }, 5431,  "udp" },
-  { "postgresql",      { NULL }, 5432,  "tcp" },
-  { "postgresql",      { NULL }, 5432,  "udp" },
-  { "pyrrho",          { NULL }, 5433,  "tcp" },
-  { "pyrrho",          { NULL }, 5433,  "udp" },
-  { "sgi-arrayd",      { NULL }, 5434,  "tcp" },
-  { "sgi-arrayd",      { NULL }, 5434,  "udp" },
-  { "sceanics",        { NULL }, 5435,  "tcp" },
-  { "sceanics",        { NULL }, 5435,  "udp" },
-  { "pmip6-cntl",      { NULL }, 5436,  "udp" },
-  { "pmip6-data",      { NULL }, 5437,  "udp" },
-  { "spss",            { NULL }, 5443,  "tcp" },
-  { "spss",            { NULL }, 5443,  "udp" },
-  { "surebox",         { NULL }, 5453,  "tcp" },
-  { "surebox",         { NULL }, 5453,  "udp" },
-  { "apc-5454",        { NULL }, 5454,  "tcp" },
-  { "apc-5454",        { NULL }, 5454,  "udp" },
-  { "apc-5455",        { NULL }, 5455,  "tcp" },
-  { "apc-5455",        { NULL }, 5455,  "udp" },
-  { "apc-5456",        { NULL }, 5456,  "tcp" },
-  { "apc-5456",        { NULL }, 5456,  "udp" },
-  { "silkmeter",       { NULL }, 5461,  "tcp" },
-  { "silkmeter",       { NULL }, 5461,  "udp" },
-  { "ttl-publisher",   { NULL }, 5462,  "tcp" },
-  { "ttl-publisher",   { NULL }, 5462,  "udp" },
-  { "ttlpriceproxy",   { NULL }, 5463,  "tcp" },
-  { "ttlpriceproxy",   { NULL }, 5463,  "udp" },
-  { "quailnet",        { NULL }, 5464,  "tcp" },
-  { "quailnet",        { NULL }, 5464,  "udp" },
-  { "netops-broker",   { NULL }, 5465,  "tcp" },
-  { "netops-broker",   { NULL }, 5465,  "udp" },
-  { "fcp-addr-srvr1",  { NULL }, 5500,  "tcp" },
-  { "fcp-addr-srvr1",  { NULL }, 5500,  "udp" },
-  { "fcp-addr-srvr2",  { NULL }, 5501,  "tcp" },
-  { "fcp-addr-srvr2",  { NULL }, 5501,  "udp" },
-  { "fcp-srvr-inst1",  { NULL }, 5502,  "tcp" },
-  { "fcp-srvr-inst1",  { NULL }, 5502,  "udp" },
-  { "fcp-srvr-inst2",  { NULL }, 5503,  "tcp" },
-  { "fcp-srvr-inst2",  { NULL }, 5503,  "udp" },
-  { "fcp-cics-gw1",    { NULL }, 5504,  "tcp" },
-  { "fcp-cics-gw1",    { NULL }, 5504,  "udp" },
-  { "checkoutdb",      { NULL }, 5505,  "tcp" },
-  { "checkoutdb",      { NULL }, 5505,  "udp" },
-  { "amc",             { NULL }, 5506,  "tcp" },
-  { "amc",             { NULL }, 5506,  "udp" },
-  { "sgi-eventmond",   { NULL }, 5553,  "tcp" },
-  { "sgi-eventmond",   { NULL }, 5553,  "udp" },
-  { "sgi-esphttp",     { NULL }, 5554,  "tcp" },
-  { "sgi-esphttp",     { NULL }, 5554,  "udp" },
-  { "personal-agent",  { NULL }, 5555,  "tcp" },
-  { "personal-agent",  { NULL }, 5555,  "udp" },
-  { "freeciv",         { NULL }, 5556,  "tcp" },
-  { "freeciv",         { NULL }, 5556,  "udp" },
-  { "farenet",         { NULL }, 5557,  "tcp" },
-  { "westec-connect",  { NULL }, 5566,  "tcp" },
-  { "m-oap",           { NULL }, 5567,  "tcp" },
-  { "m-oap",           { NULL }, 5567,  "udp" },
-  { "sdt",             { NULL }, 5568,  "tcp" },
-  { "sdt",             { NULL }, 5568,  "udp" },
-  { "sdmmp",           { NULL }, 5573,  "tcp" },
-  { "sdmmp",           { NULL }, 5573,  "udp" },
-  { "lsi-bobcat",      { NULL }, 5574,  "tcp" },
-  { "ora-oap",         { NULL }, 5575,  "tcp" },
-  { "fdtracks",        { NULL }, 5579,  "tcp" },
-  { "tmosms0",         { NULL }, 5580,  "tcp" },
-  { "tmosms0",         { NULL }, 5580,  "udp" },
-  { "tmosms1",         { NULL }, 5581,  "tcp" },
-  { "tmosms1",         { NULL }, 5581,  "udp" },
-  { "fac-restore",     { NULL }, 5582,  "tcp" },
-  { "fac-restore",     { NULL }, 5582,  "udp" },
-  { "tmo-icon-sync",   { NULL }, 5583,  "tcp" },
-  { "tmo-icon-sync",   { NULL }, 5583,  "udp" },
-  { "bis-web",         { NULL }, 5584,  "tcp" },
-  { "bis-web",         { NULL }, 5584,  "udp" },
-  { "bis-sync",        { NULL }, 5585,  "tcp" },
-  { "bis-sync",        { NULL }, 5585,  "udp" },
-  { "ininmessaging",   { NULL }, 5597,  "tcp" },
-  { "ininmessaging",   { NULL }, 5597,  "udp" },
-  { "mctfeed",         { NULL }, 5598,  "tcp" },
-  { "mctfeed",         { NULL }, 5598,  "udp" },
-  { "esinstall",       { NULL }, 5599,  "tcp" },
-  { "esinstall",       { NULL }, 5599,  "udp" },
-  { "esmmanager",      { NULL }, 5600,  "tcp" },
-  { "esmmanager",      { NULL }, 5600,  "udp" },
-  { "esmagent",        { NULL }, 5601,  "tcp" },
-  { "esmagent",        { NULL }, 5601,  "udp" },
-  { "a1-msc",          { NULL }, 5602,  "tcp" },
-  { "a1-msc",          { NULL }, 5602,  "udp" },
-  { "a1-bs",           { NULL }, 5603,  "tcp" },
-  { "a1-bs",           { NULL }, 5603,  "udp" },
-  { "a3-sdunode",      { NULL }, 5604,  "tcp" },
-  { "a3-sdunode",      { NULL }, 5604,  "udp" },
-  { "a4-sdunode",      { NULL }, 5605,  "tcp" },
-  { "a4-sdunode",      { NULL }, 5605,  "udp" },
-  { "ninaf",           { NULL }, 5627,  "tcp" },
-  { "ninaf",           { NULL }, 5627,  "udp" },
-  { "htrust",          { NULL }, 5628,  "tcp" },
-  { "htrust",          { NULL }, 5628,  "udp" },
-  { "symantec-sfdb",   { NULL }, 5629,  "tcp" },
-  { "symantec-sfdb",   { NULL }, 5629,  "udp" },
-  { "precise-comm",    { NULL }, 5630,  "tcp" },
-  { "precise-comm",    { NULL }, 5630,  "udp" },
-  { "pcanywheredata",  { NULL }, 5631,  "tcp" },
-  { "pcanywheredata",  { NULL }, 5631,  "udp" },
-  { "pcanywherestat",  { NULL }, 5632,  "tcp" },
-  { "pcanywherestat",  { NULL }, 5632,  "udp" },
-  { "beorl",           { NULL }, 5633,  "tcp" },
-  { "beorl",           { NULL }, 5633,  "udp" },
-  { "xprtld",          { NULL }, 5634,  "tcp" },
-  { "xprtld",          { NULL }, 5634,  "udp" },
-  { "sfmsso",          { NULL }, 5635,  "tcp" },
-  { "sfm-db-server",   { NULL }, 5636,  "tcp" },
-  { "cssc",            { NULL }, 5637,  "tcp" },
-  { "amqps",           { NULL }, 5671,  "tcp" },
-  { "amqps",           { NULL }, 5671,  "udp" },
-  { "amqp",            { NULL }, 5672,  "tcp" },
-  { "amqp",            { NULL }, 5672,  "udp" },
-  { "amqp",            { NULL }, 5672,  "sctp"},
-  { "jms",             { NULL }, 5673,  "tcp" },
-  { "jms",             { NULL }, 5673,  "udp" },
-  { "hyperscsi-port",  { NULL }, 5674,  "tcp" },
-  { "hyperscsi-port",  { NULL }, 5674,  "udp" },
-  { "v5ua",            { NULL }, 5675,  "tcp" },
-  { "v5ua",            { NULL }, 5675,  "udp" },
-  { "v5ua",            { NULL }, 5675,  "sctp"},
-  { "raadmin",         { NULL }, 5676,  "tcp" },
-  { "raadmin",         { NULL }, 5676,  "udp" },
-  { "questdb2-lnchr",  { NULL }, 5677,  "tcp" },
-  { "questdb2-lnchr",  { NULL }, 5677,  "udp" },
-  { "rrac",            { NULL }, 5678,  "tcp" },
-  { "rrac",            { NULL }, 5678,  "udp" },
-  { "dccm",            { NULL }, 5679,  "tcp" },
-  { "dccm",            { NULL }, 5679,  "udp" },
-  { "auriga-router",   { NULL }, 5680,  "tcp" },
-  { "auriga-router",   { NULL }, 5680,  "udp" },
-  { "ncxcp",           { NULL }, 5681,  "tcp" },
-  { "ncxcp",           { NULL }, 5681,  "udp" },
-  { "brightcore",      { NULL }, 5682,  "udp" },
-  { "ggz",             { NULL }, 5688,  "tcp" },
-  { "ggz",             { NULL }, 5688,  "udp" },
-  { "qmvideo",         { NULL }, 5689,  "tcp" },
-  { "qmvideo",         { NULL }, 5689,  "udp" },
-  { "proshareaudio",   { NULL }, 5713,  "tcp" },
-  { "proshareaudio",   { NULL }, 5713,  "udp" },
-  { "prosharevideo",   { NULL }, 5714,  "tcp" },
-  { "prosharevideo",   { NULL }, 5714,  "udp" },
-  { "prosharedata",    { NULL }, 5715,  "tcp" },
-  { "prosharedata",    { NULL }, 5715,  "udp" },
-  { "prosharerequest", { NULL }, 5716,  "tcp" },
-  { "prosharerequest", { NULL }, 5716,  "udp" },
-  { "prosharenotify",  { NULL }, 5717,  "tcp" },
-  { "prosharenotify",  { NULL }, 5717,  "udp" },
-  { "dpm",             { NULL }, 5718,  "tcp" },
-  { "dpm",             { NULL }, 5718,  "udp" },
-  { "dpm-agent",       { NULL }, 5719,  "tcp" },
-  { "dpm-agent",       { NULL }, 5719,  "udp" },
-  { "ms-licensing",    { NULL }, 5720,  "tcp" },
-  { "ms-licensing",    { NULL }, 5720,  "udp" },
-  { "dtpt",            { NULL }, 5721,  "tcp" },
-  { "dtpt",            { NULL }, 5721,  "udp" },
-  { "msdfsr",          { NULL }, 5722,  "tcp" },
-  { "msdfsr",          { NULL }, 5722,  "udp" },
-  { "omhs",            { NULL }, 5723,  "tcp" },
-  { "omhs",            { NULL }, 5723,  "udp" },
-  { "omsdk",           { NULL }, 5724,  "tcp" },
-  { "omsdk",           { NULL }, 5724,  "udp" },
-  { "ms-ilm",          { NULL }, 5725,  "tcp" },
-  { "ms-ilm-sts",      { NULL }, 5726,  "tcp" },
-  { "asgenf",          { NULL }, 5727,  "tcp" },
-  { "io-dist-data",    { NULL }, 5728,  "tcp" },
-  { "io-dist-group",   { NULL }, 5728,  "udp" },
-  { "openmail",        { NULL }, 5729,  "tcp" },
-  { "openmail",        { NULL }, 5729,  "udp" },
-  { "unieng",          { NULL }, 5730,  "tcp" },
-  { "unieng",          { NULL }, 5730,  "udp" },
-  { "ida-discover1",   { NULL }, 5741,  "tcp" },
-  { "ida-discover1",   { NULL }, 5741,  "udp" },
-  { "ida-discover2",   { NULL }, 5742,  "tcp" },
-  { "ida-discover2",   { NULL }, 5742,  "udp" },
-  { "watchdoc-pod",    { NULL }, 5743,  "tcp" },
-  { "watchdoc-pod",    { NULL }, 5743,  "udp" },
-  { "watchdoc",        { NULL }, 5744,  "tcp" },
-  { "watchdoc",        { NULL }, 5744,  "udp" },
-  { "fcopy-server",    { NULL }, 5745,  "tcp" },
-  { "fcopy-server",    { NULL }, 5745,  "udp" },
-  { "fcopys-server",   { NULL }, 5746,  "tcp" },
-  { "fcopys-server",   { NULL }, 5746,  "udp" },
-  { "tunatic",         { NULL }, 5747,  "tcp" },
-  { "tunatic",         { NULL }, 5747,  "udp" },
-  { "tunalyzer",       { NULL }, 5748,  "tcp" },
-  { "tunalyzer",       { NULL }, 5748,  "udp" },
-  { "rscd",            { NULL }, 5750,  "tcp" },
-  { "rscd",            { NULL }, 5750,  "udp" },
-  { "openmailg",       { NULL }, 5755,  "tcp" },
-  { "openmailg",       { NULL }, 5755,  "udp" },
-  { "x500ms",          { NULL }, 5757,  "tcp" },
-  { "x500ms",          { NULL }, 5757,  "udp" },
-  { "openmailns",      { NULL }, 5766,  "tcp" },
-  { "openmailns",      { NULL }, 5766,  "udp" },
-  { "s-openmail",      { NULL }, 5767,  "tcp" },
-  { "s-openmail",      { NULL }, 5767,  "udp" },
-  { "openmailpxy",     { NULL }, 5768,  "tcp" },
-  { "openmailpxy",     { NULL }, 5768,  "udp" },
-  { "spramsca",        { NULL }, 5769,  "tcp" },
-  { "spramsca",        { NULL }, 5769,  "udp" },
-  { "spramsd",         { NULL }, 5770,  "tcp" },
-  { "spramsd",         { NULL }, 5770,  "udp" },
-  { "netagent",        { NULL }, 5771,  "tcp" },
-  { "netagent",        { NULL }, 5771,  "udp" },
-  { "dali-port",       { NULL }, 5777,  "tcp" },
-  { "dali-port",       { NULL }, 5777,  "udp" },
-  { "vts-rpc",         { NULL }, 5780,  "tcp" },
-  { "3par-evts",       { NULL }, 5781,  "tcp" },
-  { "3par-evts",       { NULL }, 5781,  "udp" },
-  { "3par-mgmt",       { NULL }, 5782,  "tcp" },
-  { "3par-mgmt",       { NULL }, 5782,  "udp" },
-  { "3par-mgmt-ssl",   { NULL }, 5783,  "tcp" },
-  { "3par-mgmt-ssl",   { NULL }, 5783,  "udp" },
-  { "ibar",            { NULL }, 5784,  "udp" },
-  { "3par-rcopy",      { NULL }, 5785,  "tcp" },
-  { "3par-rcopy",      { NULL }, 5785,  "udp" },
-  { "cisco-redu",      { NULL }, 5786,  "udp" },
-  { "waascluster",     { NULL }, 5787,  "udp" },
-  { "xtreamx",         { NULL }, 5793,  "tcp" },
-  { "xtreamx",         { NULL }, 5793,  "udp" },
-  { "spdp",            { NULL }, 5794,  "udp" },
-  { "icmpd",           { NULL }, 5813,  "tcp" },
-  { "icmpd",           { NULL }, 5813,  "udp" },
-  { "spt-automation",  { NULL }, 5814,  "tcp" },
-  { "spt-automation",  { NULL }, 5814,  "udp" },
-  { "wherehoo",        { NULL }, 5859,  "tcp" },
-  { "wherehoo",        { NULL }, 5859,  "udp" },
-  { "ppsuitemsg",      { NULL }, 5863,  "tcp" },
-  { "ppsuitemsg",      { NULL }, 5863,  "udp" },
-  { "rfb",             { NULL }, 5900,  "tcp" },
-  { "rfb",             { NULL }, 5900,  "udp" },
-  { "cm",              { NULL }, 5910,  "tcp" },
-  { "cm",              { NULL }, 5910,  "udp" },
-  { "cpdlc",           { NULL }, 5911,  "tcp" },
-  { "cpdlc",           { NULL }, 5911,  "udp" },
-  { "fis",             { NULL }, 5912,  "tcp" },
-  { "fis",             { NULL }, 5912,  "udp" },
-  { "ads-c",           { NULL }, 5913,  "tcp" },
-  { "ads-c",           { NULL }, 5913,  "udp" },
-  { "indy",            { NULL }, 5963,  "tcp" },
-  { "indy",            { NULL }, 5963,  "udp" },
-  { "mppolicy-v5",     { NULL }, 5968,  "tcp" },
-  { "mppolicy-v5",     { NULL }, 5968,  "udp" },
-  { "mppolicy-mgr",    { NULL }, 5969,  "tcp" },
-  { "mppolicy-mgr",    { NULL }, 5969,  "udp" },
-  { "couchdb",         { NULL }, 5984,  "tcp" },
-  { "couchdb",         { NULL }, 5984,  "udp" },
-  { "wsman",           { NULL }, 5985,  "tcp" },
-  { "wsman",           { NULL }, 5985,  "udp" },
-  { "wsmans",          { NULL }, 5986,  "tcp" },
-  { "wsmans",          { NULL }, 5986,  "udp" },
-  { "wbem-rmi",        { NULL }, 5987,  "tcp" },
-  { "wbem-rmi",        { NULL }, 5987,  "udp" },
-  { "wbem-http",       { NULL }, 5988,  "tcp" },
-  { "wbem-http",       { NULL }, 5988,  "udp" },
-  { "wbem-https",      { NULL }, 5989,  "tcp" },
-  { "wbem-https",      { NULL }, 5989,  "udp" },
-  { "wbem-exp-https",  { NULL }, 5990,  "tcp" },
-  { "wbem-exp-https",  { NULL }, 5990,  "udp" },
-  { "nuxsl",           { NULL }, 5991,  "tcp" },
-  { "nuxsl",           { NULL }, 5991,  "udp" },
-  { "consul-insight",  { NULL }, 5992,  "tcp" },
-  { "consul-insight",  { NULL }, 5992,  "udp" },
-  { "cvsup",           { NULL }, 5999,  "tcp" },
-  { "cvsup",           { NULL }, 5999,  "udp" },
-  { "ndl-ahp-svc",     { NULL }, 6064,  "tcp" },
-  { "ndl-ahp-svc",     { NULL }, 6064,  "udp" },
-  { "winpharaoh",      { NULL }, 6065,  "tcp" },
-  { "winpharaoh",      { NULL }, 6065,  "udp" },
-  { "ewctsp",          { NULL }, 6066,  "tcp" },
-  { "ewctsp",          { NULL }, 6066,  "udp" },
-  { "gsmp",            { NULL }, 6068,  "tcp" },
-  { "gsmp",            { NULL }, 6068,  "udp" },
-  { "trip",            { NULL }, 6069,  "tcp" },
-  { "trip",            { NULL }, 6069,  "udp" },
-  { "messageasap",     { NULL }, 6070,  "tcp" },
-  { "messageasap",     { NULL }, 6070,  "udp" },
-  { "ssdtp",           { NULL }, 6071,  "tcp" },
-  { "ssdtp",           { NULL }, 6071,  "udp" },
-  { "diagnose-proc",   { NULL }, 6072,  "tcp" },
-  { "diagnose-proc",   { NULL }, 6072,  "udp" },
-  { "directplay8",     { NULL }, 6073,  "tcp" },
-  { "directplay8",     { NULL }, 6073,  "udp" },
-  { "max",             { NULL }, 6074,  "tcp" },
-  { "max",             { NULL }, 6074,  "udp" },
-  { "dpm-acm",         { NULL }, 6075,  "tcp" },
-  { "miami-bcast",     { NULL }, 6083,  "udp" },
-  { "p2p-sip",         { NULL }, 6084,  "tcp" },
-  { "konspire2b",      { NULL }, 6085,  "tcp" },
-  { "konspire2b",      { NULL }, 6085,  "udp" },
-  { "pdtp",            { NULL }, 6086,  "tcp" },
-  { "pdtp",            { NULL }, 6086,  "udp" },
-  { "ldss",            { NULL }, 6087,  "tcp" },
-  { "ldss",            { NULL }, 6087,  "udp" },
-  { "raxa-mgmt",       { NULL }, 6099,  "tcp" },
-  { "synchronet-db",   { NULL }, 6100,  "tcp" },
-  { "synchronet-db",   { NULL }, 6100,  "udp" },
-  { "synchronet-rtc",  { NULL }, 6101,  "tcp" },
-  { "synchronet-rtc",  { NULL }, 6101,  "udp" },
-  { "synchronet-upd",  { NULL }, 6102,  "tcp" },
-  { "synchronet-upd",  { NULL }, 6102,  "udp" },
-  { "rets",            { NULL }, 6103,  "tcp" },
-  { "rets",            { NULL }, 6103,  "udp" },
-  { "dbdb",            { NULL }, 6104,  "tcp" },
-  { "dbdb",            { NULL }, 6104,  "udp" },
-  { "primaserver",     { NULL }, 6105,  "tcp" },
-  { "primaserver",     { NULL }, 6105,  "udp" },
-  { "mpsserver",       { NULL }, 6106,  "tcp" },
-  { "mpsserver",       { NULL }, 6106,  "udp" },
-  { "etc-control",     { NULL }, 6107,  "tcp" },
-  { "etc-control",     { NULL }, 6107,  "udp" },
-  { "sercomm-scadmin", { NULL }, 6108,  "tcp" },
-  { "sercomm-scadmin", { NULL }, 6108,  "udp" },
-  { "globecast-id",    { NULL }, 6109,  "tcp" },
-  { "globecast-id",    { NULL }, 6109,  "udp" },
-  { "softcm",          { NULL }, 6110,  "tcp" },
-  { "softcm",          { NULL }, 6110,  "udp" },
-  { "spc",             { NULL }, 6111,  "tcp" },
-  { "spc",             { NULL }, 6111,  "udp" },
-  { "dtspcd",          { NULL }, 6112,  "tcp" },
-  { "dtspcd",          { NULL }, 6112,  "udp" },
-  { "dayliteserver",   { NULL }, 6113,  "tcp" },
-  { "wrspice",         { NULL }, 6114,  "tcp" },
-  { "xic",             { NULL }, 6115,  "tcp" },
-  { "xtlserv",         { NULL }, 6116,  "tcp" },
-  { "daylitetouch",    { NULL }, 6117,  "tcp" },
-  { "spdy",            { NULL }, 6121,  "tcp" },
-  { "bex-webadmin",    { NULL }, 6122,  "tcp" },
-  { "bex-webadmin",    { NULL }, 6122,  "udp" },
-  { "backup-express",  { NULL }, 6123,  "tcp" },
-  { "backup-express",  { NULL }, 6123,  "udp" },
-  { "pnbs",            { NULL }, 6124,  "tcp" },
-  { "pnbs",            { NULL }, 6124,  "udp" },
-  { "nbt-wol",         { NULL }, 6133,  "tcp" },
-  { "nbt-wol",         { NULL }, 6133,  "udp" },
-  { "pulsonixnls",     { NULL }, 6140,  "tcp" },
-  { "pulsonixnls",     { NULL }, 6140,  "udp" },
-  { "meta-corp",       { NULL }, 6141,  "tcp" },
-  { "meta-corp",       { NULL }, 6141,  "udp" },
-  { "aspentec-lm",     { NULL }, 6142,  "tcp" },
-  { "aspentec-lm",     { NULL }, 6142,  "udp" },
-  { "watershed-lm",    { NULL }, 6143,  "tcp" },
-  { "watershed-lm",    { NULL }, 6143,  "udp" },
-  { "statsci1-lm",     { NULL }, 6144,  "tcp" },
-  { "statsci1-lm",     { NULL }, 6144,  "udp" },
-  { "statsci2-lm",     { NULL }, 6145,  "tcp" },
-  { "statsci2-lm",     { NULL }, 6145,  "udp" },
-  { "lonewolf-lm",     { NULL }, 6146,  "tcp" },
-  { "lonewolf-lm",     { NULL }, 6146,  "udp" },
-  { "montage-lm",      { NULL }, 6147,  "tcp" },
-  { "montage-lm",      { NULL }, 6147,  "udp" },
-  { "ricardo-lm",      { NULL }, 6148,  "tcp" },
-  { "ricardo-lm",      { NULL }, 6148,  "udp" },
-  { "tal-pod",         { NULL }, 6149,  "tcp" },
-  { "tal-pod",         { NULL }, 6149,  "udp" },
-  { "efb-aci",         { NULL }, 6159,  "tcp" },
-  { "patrol-ism",      { NULL }, 6161,  "tcp" },
-  { "patrol-ism",      { NULL }, 6161,  "udp" },
-  { "patrol-coll",     { NULL }, 6162,  "tcp" },
-  { "patrol-coll",     { NULL }, 6162,  "udp" },
-  { "pscribe",         { NULL }, 6163,  "tcp" },
-  { "pscribe",         { NULL }, 6163,  "udp" },
-  { "lm-x",            { NULL }, 6200,  "tcp" },
-  { "lm-x",            { NULL }, 6200,  "udp" },
-  { "radmind",         { NULL }, 6222,  "tcp" },
-  { "radmind",         { NULL }, 6222,  "udp" },
-  { "jeol-nsdtp-1",    { NULL }, 6241,  "tcp" },
-  { "jeol-nsddp-1",    { NULL }, 6241,  "udp" },
-  { "jeol-nsdtp-2",    { NULL }, 6242,  "tcp" },
-  { "jeol-nsddp-2",    { NULL }, 6242,  "udp" },
-  { "jeol-nsdtp-3",    { NULL }, 6243,  "tcp" },
-  { "jeol-nsddp-3",    { NULL }, 6243,  "udp" },
-  { "jeol-nsdtp-4",    { NULL }, 6244,  "tcp" },
-  { "jeol-nsddp-4",    { NULL }, 6244,  "udp" },
-  { "tl1-raw-ssl",     { NULL }, 6251,  "tcp" },
-  { "tl1-raw-ssl",     { NULL }, 6251,  "udp" },
-  { "tl1-ssh",         { NULL }, 6252,  "tcp" },
-  { "tl1-ssh",         { NULL }, 6252,  "udp" },
-  { "crip",            { NULL }, 6253,  "tcp" },
-  { "crip",            { NULL }, 6253,  "udp" },
-  { "gld",             { NULL }, 6267,  "tcp" },
-  { "grid",            { NULL }, 6268,  "tcp" },
-  { "grid",            { NULL }, 6268,  "udp" },
-  { "grid-alt",        { NULL }, 6269,  "tcp" },
-  { "grid-alt",        { NULL }, 6269,  "udp" },
-  { "bmc-grx",         { NULL }, 6300,  "tcp" },
-  { "bmc-grx",         { NULL }, 6300,  "udp" },
-  { "bmc_ctd_ldap",    { NULL }, 6301,  "tcp" },
-  { "bmc_ctd_ldap",    { NULL }, 6301,  "udp" },
-  { "ufmp",            { NULL }, 6306,  "tcp" },
-  { "ufmp",            { NULL }, 6306,  "udp" },
-  { "scup",            { NULL }, 6315,  "tcp" },
-  { "scup-disc",       { NULL }, 6315,  "udp" },
-  { "abb-escp",        { NULL }, 6316,  "tcp" },
-  { "abb-escp",        { NULL }, 6316,  "udp" },
-  { "repsvc",          { NULL }, 6320,  "tcp" },
-  { "repsvc",          { NULL }, 6320,  "udp" },
-  { "emp-server1",     { NULL }, 6321,  "tcp" },
-  { "emp-server1",     { NULL }, 6321,  "udp" },
-  { "emp-server2",     { NULL }, 6322,  "tcp" },
-  { "emp-server2",     { NULL }, 6322,  "udp" },
-  { "sflow",           { NULL }, 6343,  "tcp" },
-  { "sflow",           { NULL }, 6343,  "udp" },
-  { "gnutella-svc",    { NULL }, 6346,  "tcp" },
-  { "gnutella-svc",    { NULL }, 6346,  "udp" },
-  { "gnutella-rtr",    { NULL }, 6347,  "tcp" },
-  { "gnutella-rtr",    { NULL }, 6347,  "udp" },
-  { "adap",            { NULL }, 6350,  "tcp" },
-  { "adap",            { NULL }, 6350,  "udp" },
-  { "pmcs",            { NULL }, 6355,  "tcp" },
-  { "pmcs",            { NULL }, 6355,  "udp" },
-  { "metaedit-mu",     { NULL }, 6360,  "tcp" },
-  { "metaedit-mu",     { NULL }, 6360,  "udp" },
-  { "metaedit-se",     { NULL }, 6370,  "tcp" },
-  { "metaedit-se",     { NULL }, 6370,  "udp" },
-  { "metatude-mds",    { NULL }, 6382,  "tcp" },
-  { "metatude-mds",    { NULL }, 6382,  "udp" },
-  { "clariion-evr01",  { NULL }, 6389,  "tcp" },
-  { "clariion-evr01",  { NULL }, 6389,  "udp" },
-  { "metaedit-ws",     { NULL }, 6390,  "tcp" },
-  { "metaedit-ws",     { NULL }, 6390,  "udp" },
-  { "faxcomservice",   { NULL }, 6417,  "tcp" },
-  { "faxcomservice",   { NULL }, 6417,  "udp" },
-  { "syserverremote",  { NULL }, 6418,  "tcp" },
-  { "svdrp",           { NULL }, 6419,  "tcp" },
-  { "nim-vdrshell",    { NULL }, 6420,  "tcp" },
-  { "nim-vdrshell",    { NULL }, 6420,  "udp" },
-  { "nim-wan",         { NULL }, 6421,  "tcp" },
-  { "nim-wan",         { NULL }, 6421,  "udp" },
-  { "pgbouncer",       { NULL }, 6432,  "tcp" },
-  { "sun-sr-https",    { NULL }, 6443,  "tcp" },
-  { "sun-sr-https",    { NULL }, 6443,  "udp" },
-  { "sge_qmaster",     { NULL }, 6444,  "tcp" },
-  { "sge_qmaster",     { NULL }, 6444,  "udp" },
-  { "sge_execd",       { NULL }, 6445,  "tcp" },
-  { "sge_execd",       { NULL }, 6445,  "udp" },
-  { "mysql-proxy",     { NULL }, 6446,  "tcp" },
-  { "mysql-proxy",     { NULL }, 6446,  "udp" },
-  { "skip-cert-recv",  { NULL }, 6455,  "tcp" },
-  { "skip-cert-send",  { NULL }, 6456,  "udp" },
-  { "lvision-lm",      { NULL }, 6471,  "tcp" },
-  { "lvision-lm",      { NULL }, 6471,  "udp" },
-  { "sun-sr-http",     { NULL }, 6480,  "tcp" },
-  { "sun-sr-http",     { NULL }, 6480,  "udp" },
-  { "servicetags",     { NULL }, 6481,  "tcp" },
-  { "servicetags",     { NULL }, 6481,  "udp" },
-  { "ldoms-mgmt",      { NULL }, 6482,  "tcp" },
-  { "ldoms-mgmt",      { NULL }, 6482,  "udp" },
-  { "SunVTS-RMI",      { NULL }, 6483,  "tcp" },
-  { "SunVTS-RMI",      { NULL }, 6483,  "udp" },
-  { "sun-sr-jms",      { NULL }, 6484,  "tcp" },
-  { "sun-sr-jms",      { NULL }, 6484,  "udp" },
-  { "sun-sr-iiop",     { NULL }, 6485,  "tcp" },
-  { "sun-sr-iiop",     { NULL }, 6485,  "udp" },
-  { "sun-sr-iiops",    { NULL }, 6486,  "tcp" },
-  { "sun-sr-iiops",    { NULL }, 6486,  "udp" },
-  { "sun-sr-iiop-aut", { NULL }, 6487,  "tcp" },
-  { "sun-sr-iiop-aut", { NULL }, 6487,  "udp" },
-  { "sun-sr-jmx",      { NULL }, 6488,  "tcp" },
-  { "sun-sr-jmx",      { NULL }, 6488,  "udp" },
-  { "sun-sr-admin",    { NULL }, 6489,  "tcp" },
-  { "sun-sr-admin",    { NULL }, 6489,  "udp" },
-  { "boks",            { NULL }, 6500,  "tcp" },
-  { "boks",            { NULL }, 6500,  "udp" },
-  { "boks_servc",      { NULL }, 6501,  "tcp" },
-  { "boks_servc",      { NULL }, 6501,  "udp" },
-  { "boks_servm",      { NULL }, 6502,  "tcp" },
-  { "boks_servm",      { NULL }, 6502,  "udp" },
-  { "boks_clntd",      { NULL }, 6503,  "tcp" },
-  { "boks_clntd",      { NULL }, 6503,  "udp" },
-  { "badm_priv",       { NULL }, 6505,  "tcp" },
-  { "badm_priv",       { NULL }, 6505,  "udp" },
-  { "badm_pub",        { NULL }, 6506,  "tcp" },
-  { "badm_pub",        { NULL }, 6506,  "udp" },
-  { "bdir_priv",       { NULL }, 6507,  "tcp" },
-  { "bdir_priv",       { NULL }, 6507,  "udp" },
-  { "bdir_pub",        { NULL }, 6508,  "tcp" },
-  { "bdir_pub",        { NULL }, 6508,  "udp" },
-  { "mgcs-mfp-port",   { NULL }, 6509,  "tcp" },
-  { "mgcs-mfp-port",   { NULL }, 6509,  "udp" },
-  { "mcer-port",       { NULL }, 6510,  "tcp" },
-  { "mcer-port",       { NULL }, 6510,  "udp" },
-  { "netconf-tls",     { NULL }, 6513,  "tcp" },
-  { "syslog-tls",      { NULL }, 6514,  "tcp" },
-  { "syslog-tls",      { NULL }, 6514,  "udp" },
-  { "syslog-tls",      { NULL }, 6514,  "dccp"},
-  { "elipse-rec",      { NULL }, 6515,  "tcp" },
-  { "elipse-rec",      { NULL }, 6515,  "udp" },
-  { "lds-distrib",     { NULL }, 6543,  "tcp" },
-  { "lds-distrib",     { NULL }, 6543,  "udp" },
-  { "lds-dump",        { NULL }, 6544,  "tcp" },
-  { "lds-dump",        { NULL }, 6544,  "udp" },
-  { "apc-6547",        { NULL }, 6547,  "tcp" },
-  { "apc-6547",        { NULL }, 6547,  "udp" },
-  { "apc-6548",        { NULL }, 6548,  "tcp" },
-  { "apc-6548",        { NULL }, 6548,  "udp" },
-  { "apc-6549",        { NULL }, 6549,  "tcp" },
-  { "apc-6549",        { NULL }, 6549,  "udp" },
-  { "fg-sysupdate",    { NULL }, 6550,  "tcp" },
-  { "fg-sysupdate",    { NULL }, 6550,  "udp" },
-  { "sum",             { NULL }, 6551,  "tcp" },
-  { "sum",             { NULL }, 6551,  "udp" },
-  { "xdsxdm",          { NULL }, 6558,  "tcp" },
-  { "xdsxdm",          { NULL }, 6558,  "udp" },
-  { "sane-port",       { NULL }, 6566,  "tcp" },
-  { "sane-port",       { NULL }, 6566,  "udp" },
-  { "esp",             { NULL }, 6567,  "tcp" },
-  { "esp",             { NULL }, 6567,  "udp" },
-  { "canit_store",     { NULL }, 6568,  "tcp" },
-  { "rp-reputation",   { NULL }, 6568,  "udp" },
-  { "affiliate",       { NULL }, 6579,  "tcp" },
-  { "affiliate",       { NULL }, 6579,  "udp" },
-  { "parsec-master",   { NULL }, 6580,  "tcp" },
-  { "parsec-master",   { NULL }, 6580,  "udp" },
-  { "parsec-peer",     { NULL }, 6581,  "tcp" },
-  { "parsec-peer",     { NULL }, 6581,  "udp" },
-  { "parsec-game",     { NULL }, 6582,  "tcp" },
-  { "parsec-game",     { NULL }, 6582,  "udp" },
-  { "joaJewelSuite",   { NULL }, 6583,  "tcp" },
-  { "joaJewelSuite",   { NULL }, 6583,  "udp" },
-  { "mshvlm",          { NULL }, 6600,  "tcp" },
-  { "mstmg-sstp",      { NULL }, 6601,  "tcp" },
-  { "wsscomfrmwk",     { NULL }, 6602,  "tcp" },
-  { "odette-ftps",     { NULL }, 6619,  "tcp" },
-  { "odette-ftps",     { NULL }, 6619,  "udp" },
-  { "kftp-data",       { NULL }, 6620,  "tcp" },
-  { "kftp-data",       { NULL }, 6620,  "udp" },
-  { "kftp",            { NULL }, 6621,  "tcp" },
-  { "kftp",            { NULL }, 6621,  "udp" },
-  { "mcftp",           { NULL }, 6622,  "tcp" },
-  { "mcftp",           { NULL }, 6622,  "udp" },
-  { "ktelnet",         { NULL }, 6623,  "tcp" },
-  { "ktelnet",         { NULL }, 6623,  "udp" },
-  { "datascaler-db",   { NULL }, 6624,  "tcp" },
-  { "datascaler-ctl",  { NULL }, 6625,  "tcp" },
-  { "wago-service",    { NULL }, 6626,  "tcp" },
-  { "wago-service",    { NULL }, 6626,  "udp" },
-  { "nexgen",          { NULL }, 6627,  "tcp" },
-  { "nexgen",          { NULL }, 6627,  "udp" },
-  { "afesc-mc",        { NULL }, 6628,  "tcp" },
-  { "afesc-mc",        { NULL }, 6628,  "udp" },
-  { "mxodbc-connect",  { NULL }, 6632,  "tcp" },
-  { "pcs-sf-ui-man",   { NULL }, 6655,  "tcp" },
-  { "emgmsg",          { NULL }, 6656,  "tcp" },
-  { "palcom-disc",     { NULL }, 6657,  "udp" },
-  { "vocaltec-gold",   { NULL }, 6670,  "tcp" },
-  { "vocaltec-gold",   { NULL }, 6670,  "udp" },
-  { "p4p-portal",      { NULL }, 6671,  "tcp" },
-  { "p4p-portal",      { NULL }, 6671,  "udp" },
-  { "vision_server",   { NULL }, 6672,  "tcp" },
-  { "vision_server",   { NULL }, 6672,  "udp" },
-  { "vision_elmd",     { NULL }, 6673,  "tcp" },
-  { "vision_elmd",     { NULL }, 6673,  "udp" },
-  { "vfbp",            { NULL }, 6678,  "tcp" },
-  { "vfbp-disc",       { NULL }, 6678,  "udp" },
-  { "osaut",           { NULL }, 6679,  "tcp" },
-  { "osaut",           { NULL }, 6679,  "udp" },
-  { "clever-ctrace",   { NULL }, 6687,  "tcp" },
-  { "clever-tcpip",    { NULL }, 6688,  "tcp" },
-  { "tsa",             { NULL }, 6689,  "tcp" },
-  { "tsa",             { NULL }, 6689,  "udp" },
-  { "babel",           { NULL }, 6697,  "udp" },
-  { "kti-icad-srvr",   { NULL }, 6701,  "tcp" },
-  { "kti-icad-srvr",   { NULL }, 6701,  "udp" },
-  { "e-design-net",    { NULL }, 6702,  "tcp" },
-  { "e-design-net",    { NULL }, 6702,  "udp" },
-  { "e-design-web",    { NULL }, 6703,  "tcp" },
-  { "e-design-web",    { NULL }, 6703,  "udp" },
-  { "frc-hp",          { NULL }, 6704,  "sctp"},
-  { "frc-mp",          { NULL }, 6705,  "sctp"},
-  { "frc-lp",          { NULL }, 6706,  "sctp"},
-  { "ibprotocol",      { NULL }, 6714,  "tcp" },
-  { "ibprotocol",      { NULL }, 6714,  "udp" },
-  { "fibotrader-com",  { NULL }, 6715,  "tcp" },
-  { "fibotrader-com",  { NULL }, 6715,  "udp" },
-  { "bmc-perf-agent",  { NULL }, 6767,  "tcp" },
-  { "bmc-perf-agent",  { NULL }, 6767,  "udp" },
-  { "bmc-perf-mgrd",   { NULL }, 6768,  "tcp" },
-  { "bmc-perf-mgrd",   { NULL }, 6768,  "udp" },
-  { "adi-gxp-srvprt",  { NULL }, 6769,  "tcp" },
-  { "adi-gxp-srvprt",  { NULL }, 6769,  "udp" },
-  { "plysrv-http",     { NULL }, 6770,  "tcp" },
-  { "plysrv-http",     { NULL }, 6770,  "udp" },
-  { "plysrv-https",    { NULL }, 6771,  "tcp" },
-  { "plysrv-https",    { NULL }, 6771,  "udp" },
-  { "dgpf-exchg",      { NULL }, 6785,  "tcp" },
-  { "dgpf-exchg",      { NULL }, 6785,  "udp" },
-  { "smc-jmx",         { NULL }, 6786,  "tcp" },
-  { "smc-jmx",         { NULL }, 6786,  "udp" },
-  { "smc-admin",       { NULL }, 6787,  "tcp" },
-  { "smc-admin",       { NULL }, 6787,  "udp" },
-  { "smc-http",        { NULL }, 6788,  "tcp" },
-  { "smc-http",        { NULL }, 6788,  "udp" },
-  { "smc-https",       { NULL }, 6789,  "tcp" },
-  { "smc-https",       { NULL }, 6789,  "udp" },
-  { "hnmp",            { NULL }, 6790,  "tcp" },
-  { "hnmp",            { NULL }, 6790,  "udp" },
-  { "hnm",             { NULL }, 6791,  "tcp" },
-  { "hnm",             { NULL }, 6791,  "udp" },
-  { "acnet",           { NULL }, 6801,  "tcp" },
-  { "acnet",           { NULL }, 6801,  "udp" },
-  { "pentbox-sim",     { NULL }, 6817,  "tcp" },
-  { "ambit-lm",        { NULL }, 6831,  "tcp" },
-  { "ambit-lm",        { NULL }, 6831,  "udp" },
-  { "netmo-default",   { NULL }, 6841,  "tcp" },
-  { "netmo-default",   { NULL }, 6841,  "udp" },
-  { "netmo-http",      { NULL }, 6842,  "tcp" },
-  { "netmo-http",      { NULL }, 6842,  "udp" },
-  { "iccrushmore",     { NULL }, 6850,  "tcp" },
-  { "iccrushmore",     { NULL }, 6850,  "udp" },
-  { "acctopus-cc",     { NULL }, 6868,  "tcp" },
-  { "acctopus-st",     { NULL }, 6868,  "udp" },
-  { "muse",            { NULL }, 6888,  "tcp" },
-  { "muse",            { NULL }, 6888,  "udp" },
-  { "jetstream",       { NULL }, 6901,  "tcp" },
-  { "xsmsvc",          { NULL }, 6936,  "tcp" },
-  { "xsmsvc",          { NULL }, 6936,  "udp" },
-  { "bioserver",       { NULL }, 6946,  "tcp" },
-  { "bioserver",       { NULL }, 6946,  "udp" },
-  { "otlp",            { NULL }, 6951,  "tcp" },
-  { "otlp",            { NULL }, 6951,  "udp" },
-  { "jmact3",          { NULL }, 6961,  "tcp" },
-  { "jmact3",          { NULL }, 6961,  "udp" },
-  { "jmevt2",          { NULL }, 6962,  "tcp" },
-  { "jmevt2",          { NULL }, 6962,  "udp" },
-  { "swismgr1",        { NULL }, 6963,  "tcp" },
-  { "swismgr1",        { NULL }, 6963,  "udp" },
-  { "swismgr2",        { NULL }, 6964,  "tcp" },
-  { "swismgr2",        { NULL }, 6964,  "udp" },
-  { "swistrap",        { NULL }, 6965,  "tcp" },
-  { "swistrap",        { NULL }, 6965,  "udp" },
-  { "swispol",         { NULL }, 6966,  "tcp" },
-  { "swispol",         { NULL }, 6966,  "udp" },
-  { "acmsoda",         { NULL }, 6969,  "tcp" },
-  { "acmsoda",         { NULL }, 6969,  "udp" },
-  { "MobilitySrv",     { NULL }, 6997,  "tcp" },
-  { "MobilitySrv",     { NULL }, 6997,  "udp" },
-  { "iatp-highpri",    { NULL }, 6998,  "tcp" },
-  { "iatp-highpri",    { NULL }, 6998,  "udp" },
-  { "iatp-normalpri",  { NULL }, 6999,  "tcp" },
-  { "iatp-normalpri",  { NULL }, 6999,  "udp" },
-  { "afs3-fileserver", { NULL }, 7000,  "tcp" },
-  { "afs3-fileserver", { NULL }, 7000,  "udp" },
-  { "afs3-callback",   { NULL }, 7001,  "tcp" },
-  { "afs3-callback",   { NULL }, 7001,  "udp" },
-  { "afs3-prserver",   { NULL }, 7002,  "tcp" },
-  { "afs3-prserver",   { NULL }, 7002,  "udp" },
-  { "afs3-vlserver",   { NULL }, 7003,  "tcp" },
-  { "afs3-vlserver",   { NULL }, 7003,  "udp" },
-  { "afs3-kaserver",   { NULL }, 7004,  "tcp" },
-  { "afs3-kaserver",   { NULL }, 7004,  "udp" },
-  { "afs3-volser",     { NULL }, 7005,  "tcp" },
-  { "afs3-volser",     { NULL }, 7005,  "udp" },
-  { "afs3-errors",     { NULL }, 7006,  "tcp" },
-  { "afs3-errors",     { NULL }, 7006,  "udp" },
-  { "afs3-bos",        { NULL }, 7007,  "tcp" },
-  { "afs3-bos",        { NULL }, 7007,  "udp" },
-  { "afs3-update",     { NULL }, 7008,  "tcp" },
-  { "afs3-update",     { NULL }, 7008,  "udp" },
-  { "afs3-rmtsys",     { NULL }, 7009,  "tcp" },
-  { "afs3-rmtsys",     { NULL }, 7009,  "udp" },
-  { "ups-onlinet",     { NULL }, 7010,  "tcp" },
-  { "ups-onlinet",     { NULL }, 7010,  "udp" },
-  { "talon-disc",      { NULL }, 7011,  "tcp" },
-  { "talon-disc",      { NULL }, 7011,  "udp" },
-  { "talon-engine",    { NULL }, 7012,  "tcp" },
-  { "talon-engine",    { NULL }, 7012,  "udp" },
-  { "microtalon-dis",  { NULL }, 7013,  "tcp" },
-  { "microtalon-dis",  { NULL }, 7013,  "udp" },
-  { "microtalon-com",  { NULL }, 7014,  "tcp" },
-  { "microtalon-com",  { NULL }, 7014,  "udp" },
-  { "talon-webserver", { NULL }, 7015,  "tcp" },
-  { "talon-webserver", { NULL }, 7015,  "udp" },
-  { "dpserve",         { NULL }, 7020,  "tcp" },
-  { "dpserve",         { NULL }, 7020,  "udp" },
-  { "dpserveadmin",    { NULL }, 7021,  "tcp" },
-  { "dpserveadmin",    { NULL }, 7021,  "udp" },
-  { "ctdp",            { NULL }, 7022,  "tcp" },
-  { "ctdp",            { NULL }, 7022,  "udp" },
-  { "ct2nmcs",         { NULL }, 7023,  "tcp" },
-  { "ct2nmcs",         { NULL }, 7023,  "udp" },
-  { "vmsvc",           { NULL }, 7024,  "tcp" },
-  { "vmsvc",           { NULL }, 7024,  "udp" },
-  { "vmsvc-2",         { NULL }, 7025,  "tcp" },
-  { "vmsvc-2",         { NULL }, 7025,  "udp" },
-  { "op-probe",        { NULL }, 7030,  "tcp" },
-  { "op-probe",        { NULL }, 7030,  "udp" },
-  { "arcp",            { NULL }, 7070,  "tcp" },
-  { "arcp",            { NULL }, 7070,  "udp" },
-  { "iwg1",            { NULL }, 7071,  "tcp" },
-  { "iwg1",            { NULL }, 7071,  "udp" },
-  { "empowerid",       { NULL }, 7080,  "tcp" },
-  { "empowerid",       { NULL }, 7080,  "udp" },
-  { "lazy-ptop",       { NULL }, 7099,  "tcp" },
-  { "lazy-ptop",       { NULL }, 7099,  "udp" },
-  { "font-service",    { NULL }, 7100,  "tcp" },
-  { "font-service",    { NULL }, 7100,  "udp" },
-  { "elcn",            { NULL }, 7101,  "tcp" },
-  { "elcn",            { NULL }, 7101,  "udp" },
-  { "aes-x170",        { NULL }, 7107,  "udp" },
-  { "virprot-lm",      { NULL }, 7121,  "tcp" },
-  { "virprot-lm",      { NULL }, 7121,  "udp" },
-  { "scenidm",         { NULL }, 7128,  "tcp" },
-  { "scenidm",         { NULL }, 7128,  "udp" },
-  { "scenccs",         { NULL }, 7129,  "tcp" },
-  { "scenccs",         { NULL }, 7129,  "udp" },
-  { "cabsm-comm",      { NULL }, 7161,  "tcp" },
-  { "cabsm-comm",      { NULL }, 7161,  "udp" },
-  { "caistoragemgr",   { NULL }, 7162,  "tcp" },
-  { "caistoragemgr",   { NULL }, 7162,  "udp" },
-  { "cacsambroker",    { NULL }, 7163,  "tcp" },
-  { "cacsambroker",    { NULL }, 7163,  "udp" },
-  { "fsr",             { NULL }, 7164,  "tcp" },
-  { "fsr",             { NULL }, 7164,  "udp" },
-  { "doc-server",      { NULL }, 7165,  "tcp" },
-  { "doc-server",      { NULL }, 7165,  "udp" },
-  { "aruba-server",    { NULL }, 7166,  "tcp" },
-  { "aruba-server",    { NULL }, 7166,  "udp" },
-  { "casrmagent",      { NULL }, 7167,  "tcp" },
-  { "cnckadserver",    { NULL }, 7168,  "tcp" },
-  { "ccag-pib",        { NULL }, 7169,  "tcp" },
-  { "ccag-pib",        { NULL }, 7169,  "udp" },
-  { "nsrp",            { NULL }, 7170,  "tcp" },
-  { "nsrp",            { NULL }, 7170,  "udp" },
-  { "drm-production",  { NULL }, 7171,  "tcp" },
-  { "drm-production",  { NULL }, 7171,  "udp" },
-  { "zsecure",         { NULL }, 7173,  "tcp" },
-  { "clutild",         { NULL }, 7174,  "tcp" },
-  { "clutild",         { NULL }, 7174,  "udp" },
-  { "fodms",           { NULL }, 7200,  "tcp" },
-  { "fodms",           { NULL }, 7200,  "udp" },
-  { "dlip",            { NULL }, 7201,  "tcp" },
-  { "dlip",            { NULL }, 7201,  "udp" },
-  { "ramp",            { NULL }, 7227,  "tcp" },
-  { "ramp",            { NULL }, 7227,  "udp" },
-  { "citrixupp",       { NULL }, 7228,  "tcp" },
-  { "citrixuppg",      { NULL }, 7229,  "tcp" },
-  { "pads",            { NULL }, 7237,  "tcp" },
-  { "cnap",            { NULL }, 7262,  "tcp" },
-  { "cnap",            { NULL }, 7262,  "udp" },
-  { "watchme-7272",    { NULL }, 7272,  "tcp" },
-  { "watchme-7272",    { NULL }, 7272,  "udp" },
-  { "oma-rlp",         { NULL }, 7273,  "tcp" },
-  { "oma-rlp",         { NULL }, 7273,  "udp" },
-  { "oma-rlp-s",       { NULL }, 7274,  "tcp" },
-  { "oma-rlp-s",       { NULL }, 7274,  "udp" },
-  { "oma-ulp",         { NULL }, 7275,  "tcp" },
-  { "oma-ulp",         { NULL }, 7275,  "udp" },
-  { "oma-ilp",         { NULL }, 7276,  "tcp" },
-  { "oma-ilp",         { NULL }, 7276,  "udp" },
-  { "oma-ilp-s",       { NULL }, 7277,  "tcp" },
-  { "oma-ilp-s",       { NULL }, 7277,  "udp" },
-  { "oma-dcdocbs",     { NULL }, 7278,  "tcp" },
-  { "oma-dcdocbs",     { NULL }, 7278,  "udp" },
-  { "ctxlic",          { NULL }, 7279,  "tcp" },
-  { "ctxlic",          { NULL }, 7279,  "udp" },
-  { "itactionserver1", { NULL }, 7280,  "tcp" },
-  { "itactionserver1", { NULL }, 7280,  "udp" },
-  { "itactionserver2", { NULL }, 7281,  "tcp" },
-  { "itactionserver2", { NULL }, 7281,  "udp" },
-  { "mzca-action",     { NULL }, 7282,  "tcp" },
-  { "mzca-alert",      { NULL }, 7282,  "udp" },
-  { "lcm-server",      { NULL }, 7365,  "tcp" },
-  { "lcm-server",      { NULL }, 7365,  "udp" },
-  { "mindfilesys",     { NULL }, 7391,  "tcp" },
-  { "mindfilesys",     { NULL }, 7391,  "udp" },
-  { "mrssrendezvous",  { NULL }, 7392,  "tcp" },
-  { "mrssrendezvous",  { NULL }, 7392,  "udp" },
-  { "nfoldman",        { NULL }, 7393,  "tcp" },
-  { "nfoldman",        { NULL }, 7393,  "udp" },
-  { "fse",             { NULL }, 7394,  "tcp" },
-  { "fse",             { NULL }, 7394,  "udp" },
-  { "winqedit",        { NULL }, 7395,  "tcp" },
-  { "winqedit",        { NULL }, 7395,  "udp" },
-  { "hexarc",          { NULL }, 7397,  "tcp" },
-  { "hexarc",          { NULL }, 7397,  "udp" },
-  { "rtps-discovery",  { NULL }, 7400,  "tcp" },
-  { "rtps-discovery",  { NULL }, 7400,  "udp" },
-  { "rtps-dd-ut",      { NULL }, 7401,  "tcp" },
-  { "rtps-dd-ut",      { NULL }, 7401,  "udp" },
-  { "rtps-dd-mt",      { NULL }, 7402,  "tcp" },
-  { "rtps-dd-mt",      { NULL }, 7402,  "udp" },
-  { "ionixnetmon",     { NULL }, 7410,  "tcp" },
-  { "ionixnetmon",     { NULL }, 7410,  "udp" },
-  { "mtportmon",       { NULL }, 7421,  "tcp" },
-  { "mtportmon",       { NULL }, 7421,  "udp" },
-  { "pmdmgr",          { NULL }, 7426,  "tcp" },
-  { "pmdmgr",          { NULL }, 7426,  "udp" },
-  { "oveadmgr",        { NULL }, 7427,  "tcp" },
-  { "oveadmgr",        { NULL }, 7427,  "udp" },
-  { "ovladmgr",        { NULL }, 7428,  "tcp" },
-  { "ovladmgr",        { NULL }, 7428,  "udp" },
-  { "opi-sock",        { NULL }, 7429,  "tcp" },
-  { "opi-sock",        { NULL }, 7429,  "udp" },
-  { "xmpv7",           { NULL }, 7430,  "tcp" },
-  { "xmpv7",           { NULL }, 7430,  "udp" },
-  { "pmd",             { NULL }, 7431,  "tcp" },
-  { "pmd",             { NULL }, 7431,  "udp" },
-  { "faximum",         { NULL }, 7437,  "tcp" },
-  { "faximum",         { NULL }, 7437,  "udp" },
-  { "oracleas-https",  { NULL }, 7443,  "tcp" },
-  { "oracleas-https",  { NULL }, 7443,  "udp" },
-  { "rise",            { NULL }, 7473,  "tcp" },
-  { "rise",            { NULL }, 7473,  "udp" },
-  { "telops-lmd",      { NULL }, 7491,  "tcp" },
-  { "telops-lmd",      { NULL }, 7491,  "udp" },
-  { "silhouette",      { NULL }, 7500,  "tcp" },
-  { "silhouette",      { NULL }, 7500,  "udp" },
-  { "ovbus",           { NULL }, 7501,  "tcp" },
-  { "ovbus",           { NULL }, 7501,  "udp" },
-  { "acplt",           { NULL }, 7509,  "tcp" },
-  { "ovhpas",          { NULL }, 7510,  "tcp" },
-  { "ovhpas",          { NULL }, 7510,  "udp" },
-  { "pafec-lm",        { NULL }, 7511,  "tcp" },
-  { "pafec-lm",        { NULL }, 7511,  "udp" },
-  { "saratoga",        { NULL }, 7542,  "tcp" },
-  { "saratoga",        { NULL }, 7542,  "udp" },
-  { "atul",            { NULL }, 7543,  "tcp" },
-  { "atul",            { NULL }, 7543,  "udp" },
-  { "nta-ds",          { NULL }, 7544,  "tcp" },
-  { "nta-ds",          { NULL }, 7544,  "udp" },
-  { "nta-us",          { NULL }, 7545,  "tcp" },
-  { "nta-us",          { NULL }, 7545,  "udp" },
-  { "cfs",             { NULL }, 7546,  "tcp" },
-  { "cfs",             { NULL }, 7546,  "udp" },
-  { "cwmp",            { NULL }, 7547,  "tcp" },
-  { "cwmp",            { NULL }, 7547,  "udp" },
-  { "tidp",            { NULL }, 7548,  "tcp" },
-  { "tidp",            { NULL }, 7548,  "udp" },
-  { "nls-tl",          { NULL }, 7549,  "tcp" },
-  { "nls-tl",          { NULL }, 7549,  "udp" },
-  { "sncp",            { NULL }, 7560,  "tcp" },
-  { "sncp",            { NULL }, 7560,  "udp" },
-  { "cfw",             { NULL }, 7563,  "tcp" },
-  { "vsi-omega",       { NULL }, 7566,  "tcp" },
-  { "vsi-omega",       { NULL }, 7566,  "udp" },
-  { "dell-eql-asm",    { NULL }, 7569,  "tcp" },
-  { "aries-kfinder",   { NULL }, 7570,  "tcp" },
-  { "aries-kfinder",   { NULL }, 7570,  "udp" },
-  { "sun-lm",          { NULL }, 7588,  "tcp" },
-  { "sun-lm",          { NULL }, 7588,  "udp" },
-  { "indi",            { NULL }, 7624,  "tcp" },
-  { "indi",            { NULL }, 7624,  "udp" },
-  { "simco",           { NULL }, 7626,  "tcp" },
-  { "simco",           { NULL }, 7626,  "sctp"},
-  { "soap-http",       { NULL }, 7627,  "tcp" },
-  { "soap-http",       { NULL }, 7627,  "udp" },
-  { "zen-pawn",        { NULL }, 7628,  "tcp" },
-  { "zen-pawn",        { NULL }, 7628,  "udp" },
-  { "xdas",            { NULL }, 7629,  "tcp" },
-  { "xdas",            { NULL }, 7629,  "udp" },
-  { "hawk",            { NULL }, 7630,  "tcp" },
-  { "tesla-sys-msg",   { NULL }, 7631,  "tcp" },
-  { "pmdfmgt",         { NULL }, 7633,  "tcp" },
-  { "pmdfmgt",         { NULL }, 7633,  "udp" },
-  { "cuseeme",         { NULL }, 7648,  "tcp" },
-  { "cuseeme",         { NULL }, 7648,  "udp" },
-  { "imqstomp",        { NULL }, 7672,  "tcp" },
-  { "imqstomps",       { NULL }, 7673,  "tcp" },
-  { "imqtunnels",      { NULL }, 7674,  "tcp" },
-  { "imqtunnels",      { NULL }, 7674,  "udp" },
-  { "imqtunnel",       { NULL }, 7675,  "tcp" },
-  { "imqtunnel",       { NULL }, 7675,  "udp" },
-  { "imqbrokerd",      { NULL }, 7676,  "tcp" },
-  { "imqbrokerd",      { NULL }, 7676,  "udp" },
-  { "sun-user-https",  { NULL }, 7677,  "tcp" },
-  { "sun-user-https",  { NULL }, 7677,  "udp" },
-  { "pando-pub",       { NULL }, 7680,  "tcp" },
-  { "pando-pub",       { NULL }, 7680,  "udp" },
-  { "collaber",        { NULL }, 7689,  "tcp" },
-  { "collaber",        { NULL }, 7689,  "udp" },
-  { "klio",            { NULL }, 7697,  "tcp" },
-  { "klio",            { NULL }, 7697,  "udp" },
-  { "em7-secom",       { NULL }, 7700,  "tcp" },
-  { "sync-em7",        { NULL }, 7707,  "tcp" },
-  { "sync-em7",        { NULL }, 7707,  "udp" },
-  { "scinet",          { NULL }, 7708,  "tcp" },
-  { "scinet",          { NULL }, 7708,  "udp" },
-  { "medimageportal",  { NULL }, 7720,  "tcp" },
-  { "medimageportal",  { NULL }, 7720,  "udp" },
-  { "nsdeepfreezectl", { NULL }, 7724,  "tcp" },
-  { "nsdeepfreezectl", { NULL }, 7724,  "udp" },
-  { "nitrogen",        { NULL }, 7725,  "tcp" },
-  { "nitrogen",        { NULL }, 7725,  "udp" },
-  { "freezexservice",  { NULL }, 7726,  "tcp" },
-  { "freezexservice",  { NULL }, 7726,  "udp" },
-  { "trident-data",    { NULL }, 7727,  "tcp" },
-  { "trident-data",    { NULL }, 7727,  "udp" },
-  { "smip",            { NULL }, 7734,  "tcp" },
-  { "smip",            { NULL }, 7734,  "udp" },
-  { "aiagent",         { NULL }, 7738,  "tcp" },
-  { "aiagent",         { NULL }, 7738,  "udp" },
-  { "scriptview",      { NULL }, 7741,  "tcp" },
-  { "scriptview",      { NULL }, 7741,  "udp" },
-  { "msss",            { NULL }, 7742,  "tcp" },
-  { "sstp-1",          { NULL }, 7743,  "tcp" },
-  { "sstp-1",          { NULL }, 7743,  "udp" },
-  { "raqmon-pdu",      { NULL }, 7744,  "tcp" },
-  { "raqmon-pdu",      { NULL }, 7744,  "udp" },
-  { "prgp",            { NULL }, 7747,  "tcp" },
-  { "prgp",            { NULL }, 7747,  "udp" },
-  { "cbt",             { NULL }, 7777,  "tcp" },
-  { "cbt",             { NULL }, 7777,  "udp" },
-  { "interwise",       { NULL }, 7778,  "tcp" },
-  { "interwise",       { NULL }, 7778,  "udp" },
-  { "vstat",           { NULL }, 7779,  "tcp" },
-  { "vstat",           { NULL }, 7779,  "udp" },
-  { "accu-lmgr",       { NULL }, 7781,  "tcp" },
-  { "accu-lmgr",       { NULL }, 7781,  "udp" },
-  { "minivend",        { NULL }, 7786,  "tcp" },
-  { "minivend",        { NULL }, 7786,  "udp" },
-  { "popup-reminders", { NULL }, 7787,  "tcp" },
-  { "popup-reminders", { NULL }, 7787,  "udp" },
-  { "office-tools",    { NULL }, 7789,  "tcp" },
-  { "office-tools",    { NULL }, 7789,  "udp" },
-  { "q3ade",           { NULL }, 7794,  "tcp" },
-  { "q3ade",           { NULL }, 7794,  "udp" },
-  { "pnet-conn",       { NULL }, 7797,  "tcp" },
-  { "pnet-conn",       { NULL }, 7797,  "udp" },
-  { "pnet-enc",        { NULL }, 7798,  "tcp" },
-  { "pnet-enc",        { NULL }, 7798,  "udp" },
-  { "altbsdp",         { NULL }, 7799,  "tcp" },
-  { "altbsdp",         { NULL }, 7799,  "udp" },
-  { "asr",             { NULL }, 7800,  "tcp" },
-  { "asr",             { NULL }, 7800,  "udp" },
-  { "ssp-client",      { NULL }, 7801,  "tcp" },
-  { "ssp-client",      { NULL }, 7801,  "udp" },
-  { "rbt-wanopt",      { NULL }, 7810,  "tcp" },
-  { "rbt-wanopt",      { NULL }, 7810,  "udp" },
-  { "apc-7845",        { NULL }, 7845,  "tcp" },
-  { "apc-7845",        { NULL }, 7845,  "udp" },
-  { "apc-7846",        { NULL }, 7846,  "tcp" },
-  { "apc-7846",        { NULL }, 7846,  "udp" },
-  { "mobileanalyzer",  { NULL }, 7869,  "tcp" },
-  { "rbt-smc",         { NULL }, 7870,  "tcp" },
-  { "pss",             { NULL }, 7880,  "tcp" },
-  { "pss",             { NULL }, 7880,  "udp" },
-  { "ubroker",         { NULL }, 7887,  "tcp" },
-  { "ubroker",         { NULL }, 7887,  "udp" },
-  { "mevent",          { NULL }, 7900,  "tcp" },
-  { "mevent",          { NULL }, 7900,  "udp" },
-  { "tnos-sp",         { NULL }, 7901,  "tcp" },
-  { "tnos-sp",         { NULL }, 7901,  "udp" },
-  { "tnos-dp",         { NULL }, 7902,  "tcp" },
-  { "tnos-dp",         { NULL }, 7902,  "udp" },
-  { "tnos-dps",        { NULL }, 7903,  "tcp" },
-  { "tnos-dps",        { NULL }, 7903,  "udp" },
-  { "qo-secure",       { NULL }, 7913,  "tcp" },
-  { "qo-secure",       { NULL }, 7913,  "udp" },
-  { "t2-drm",          { NULL }, 7932,  "tcp" },
-  { "t2-drm",          { NULL }, 7932,  "udp" },
-  { "t2-brm",          { NULL }, 7933,  "tcp" },
-  { "t2-brm",          { NULL }, 7933,  "udp" },
-  { "supercell",       { NULL }, 7967,  "tcp" },
-  { "supercell",       { NULL }, 7967,  "udp" },
-  { "micromuse-ncps",  { NULL }, 7979,  "tcp" },
-  { "micromuse-ncps",  { NULL }, 7979,  "udp" },
-  { "quest-vista",     { NULL }, 7980,  "tcp" },
-  { "quest-vista",     { NULL }, 7980,  "udp" },
-  { "sossd-collect",   { NULL }, 7981,  "tcp" },
-  { "sossd-agent",     { NULL }, 7982,  "tcp" },
-  { "sossd-disc",      { NULL }, 7982,  "udp" },
-  { "pushns",          { NULL }, 7997,  "tcp" },
-  { "usicontentpush",  { NULL }, 7998,  "udp" },
-  { "irdmi2",          { NULL }, 7999,  "tcp" },
-  { "irdmi2",          { NULL }, 7999,  "udp" },
-  { "irdmi",           { NULL }, 8000,  "tcp" },
-  { "irdmi",           { NULL }, 8000,  "udp" },
-  { "vcom-tunnel",     { NULL }, 8001,  "tcp" },
-  { "vcom-tunnel",     { NULL }, 8001,  "udp" },
-  { "teradataordbms",  { NULL }, 8002,  "tcp" },
-  { "teradataordbms",  { NULL }, 8002,  "udp" },
-  { "mcreport",        { NULL }, 8003,  "tcp" },
-  { "mcreport",        { NULL }, 8003,  "udp" },
-  { "mxi",             { NULL }, 8005,  "tcp" },
-  { "mxi",             { NULL }, 8005,  "udp" },
-  { "http-alt",        { NULL }, 8008,  "tcp" },
-  { "http-alt",        { NULL }, 8008,  "udp" },
-  { "qbdb",            { NULL }, 8019,  "tcp" },
-  { "qbdb",            { NULL }, 8019,  "udp" },
-  { "intu-ec-svcdisc", { NULL }, 8020,  "tcp" },
-  { "intu-ec-svcdisc", { NULL }, 8020,  "udp" },
-  { "intu-ec-client",  { NULL }, 8021,  "tcp" },
-  { "intu-ec-client",  { NULL }, 8021,  "udp" },
-  { "oa-system",       { NULL }, 8022,  "tcp" },
-  { "oa-system",       { NULL }, 8022,  "udp" },
-  { "ca-audit-da",     { NULL }, 8025,  "tcp" },
-  { "ca-audit-da",     { NULL }, 8025,  "udp" },
-  { "ca-audit-ds",     { NULL }, 8026,  "tcp" },
-  { "ca-audit-ds",     { NULL }, 8026,  "udp" },
-  { "pro-ed",          { NULL }, 8032,  "tcp" },
-  { "pro-ed",          { NULL }, 8032,  "udp" },
-  { "mindprint",       { NULL }, 8033,  "tcp" },
-  { "mindprint",       { NULL }, 8033,  "udp" },
-  { "vantronix-mgmt",  { NULL }, 8034,  "tcp" },
-  { "vantronix-mgmt",  { NULL }, 8034,  "udp" },
-  { "ampify",          { NULL }, 8040,  "tcp" },
-  { "ampify",          { NULL }, 8040,  "udp" },
-  { "fs-agent",        { NULL }, 8042,  "tcp" },
-  { "fs-server",       { NULL }, 8043,  "tcp" },
-  { "fs-mgmt",         { NULL }, 8044,  "tcp" },
-  { "senomix01",       { NULL }, 8052,  "tcp" },
-  { "senomix01",       { NULL }, 8052,  "udp" },
-  { "senomix02",       { NULL }, 8053,  "tcp" },
-  { "senomix02",       { NULL }, 8053,  "udp" },
-  { "senomix03",       { NULL }, 8054,  "tcp" },
-  { "senomix03",       { NULL }, 8054,  "udp" },
-  { "senomix04",       { NULL }, 8055,  "tcp" },
-  { "senomix04",       { NULL }, 8055,  "udp" },
-  { "senomix05",       { NULL }, 8056,  "tcp" },
-  { "senomix05",       { NULL }, 8056,  "udp" },
-  { "senomix06",       { NULL }, 8057,  "tcp" },
-  { "senomix06",       { NULL }, 8057,  "udp" },
-  { "senomix07",       { NULL }, 8058,  "tcp" },
-  { "senomix07",       { NULL }, 8058,  "udp" },
-  { "senomix08",       { NULL }, 8059,  "tcp" },
-  { "senomix08",       { NULL }, 8059,  "udp" },
-  { "gadugadu",        { NULL }, 8074,  "tcp" },
-  { "gadugadu",        { NULL }, 8074,  "udp" },
-  { "http-alt",        { NULL }, 8080,  "tcp" },
-  { "http-alt",        { NULL }, 8080,  "udp" },
-  { "sunproxyadmin",   { NULL }, 8081,  "tcp" },
-  { "sunproxyadmin",   { NULL }, 8081,  "udp" },
-  { "us-cli",          { NULL }, 8082,  "tcp" },
-  { "us-cli",          { NULL }, 8082,  "udp" },
-  { "us-srv",          { NULL }, 8083,  "tcp" },
-  { "us-srv",          { NULL }, 8083,  "udp" },
-  { "d-s-n",           { NULL }, 8086,  "tcp" },
-  { "d-s-n",           { NULL }, 8086,  "udp" },
-  { "simplifymedia",   { NULL }, 8087,  "tcp" },
-  { "simplifymedia",   { NULL }, 8087,  "udp" },
-  { "radan-http",      { NULL }, 8088,  "tcp" },
-  { "radan-http",      { NULL }, 8088,  "udp" },
-  { "jamlink",         { NULL }, 8091,  "tcp" },
-  { "sac",             { NULL }, 8097,  "tcp" },
-  { "sac",             { NULL }, 8097,  "udp" },
-  { "xprint-server",   { NULL }, 8100,  "tcp" },
-  { "xprint-server",   { NULL }, 8100,  "udp" },
-  { "ldoms-migr",      { NULL }, 8101,  "tcp" },
-  { "mtl8000-matrix",  { NULL }, 8115,  "tcp" },
-  { "mtl8000-matrix",  { NULL }, 8115,  "udp" },
-  { "cp-cluster",      { NULL }, 8116,  "tcp" },
-  { "cp-cluster",      { NULL }, 8116,  "udp" },
-  { "privoxy",         { NULL }, 8118,  "tcp" },
-  { "privoxy",         { NULL }, 8118,  "udp" },
-  { "apollo-data",     { NULL }, 8121,  "tcp" },
-  { "apollo-data",     { NULL }, 8121,  "udp" },
-  { "apollo-admin",    { NULL }, 8122,  "tcp" },
-  { "apollo-admin",    { NULL }, 8122,  "udp" },
-  { "paycash-online",  { NULL }, 8128,  "tcp" },
-  { "paycash-online",  { NULL }, 8128,  "udp" },
-  { "paycash-wbp",     { NULL }, 8129,  "tcp" },
-  { "paycash-wbp",     { NULL }, 8129,  "udp" },
-  { "indigo-vrmi",     { NULL }, 8130,  "tcp" },
-  { "indigo-vrmi",     { NULL }, 8130,  "udp" },
-  { "indigo-vbcp",     { NULL }, 8131,  "tcp" },
-  { "indigo-vbcp",     { NULL }, 8131,  "udp" },
-  { "dbabble",         { NULL }, 8132,  "tcp" },
-  { "dbabble",         { NULL }, 8132,  "udp" },
-  { "isdd",            { NULL }, 8148,  "tcp" },
-  { "isdd",            { NULL }, 8148,  "udp" },
-  { "patrol",          { NULL }, 8160,  "tcp" },
-  { "patrol",          { NULL }, 8160,  "udp" },
-  { "patrol-snmp",     { NULL }, 8161,  "tcp" },
-  { "patrol-snmp",     { NULL }, 8161,  "udp" },
-  { "vmware-fdm",      { NULL }, 8182,  "tcp" },
-  { "vmware-fdm",      { NULL }, 8182,  "udp" },
-  { "proremote",       { NULL }, 8183,  "tcp" },
-  { "itach",           { NULL }, 8184,  "tcp" },
-  { "itach",           { NULL }, 8184,  "udp" },
-  { "spytechphone",    { NULL }, 8192,  "tcp" },
-  { "spytechphone",    { NULL }, 8192,  "udp" },
-  { "blp1",            { NULL }, 8194,  "tcp" },
-  { "blp1",            { NULL }, 8194,  "udp" },
-  { "blp2",            { NULL }, 8195,  "tcp" },
-  { "blp2",            { NULL }, 8195,  "udp" },
-  { "vvr-data",        { NULL }, 8199,  "tcp" },
-  { "vvr-data",        { NULL }, 8199,  "udp" },
-  { "trivnet1",        { NULL }, 8200,  "tcp" },
-  { "trivnet1",        { NULL }, 8200,  "udp" },
-  { "trivnet2",        { NULL }, 8201,  "tcp" },
-  { "trivnet2",        { NULL }, 8201,  "udp" },
-  { "lm-perfworks",    { NULL }, 8204,  "tcp" },
-  { "lm-perfworks",    { NULL }, 8204,  "udp" },
-  { "lm-instmgr",      { NULL }, 8205,  "tcp" },
-  { "lm-instmgr",      { NULL }, 8205,  "udp" },
-  { "lm-dta",          { NULL }, 8206,  "tcp" },
-  { "lm-dta",          { NULL }, 8206,  "udp" },
-  { "lm-sserver",      { NULL }, 8207,  "tcp" },
-  { "lm-sserver",      { NULL }, 8207,  "udp" },
-  { "lm-webwatcher",   { NULL }, 8208,  "tcp" },
-  { "lm-webwatcher",   { NULL }, 8208,  "udp" },
-  { "rexecj",          { NULL }, 8230,  "tcp" },
-  { "rexecj",          { NULL }, 8230,  "udp" },
-  { "synapse-nhttps",  { NULL }, 8243,  "tcp" },
-  { "synapse-nhttps",  { NULL }, 8243,  "udp" },
-  { "pando-sec",       { NULL }, 8276,  "tcp" },
-  { "pando-sec",       { NULL }, 8276,  "udp" },
-  { "synapse-nhttp",   { NULL }, 8280,  "tcp" },
-  { "synapse-nhttp",   { NULL }, 8280,  "udp" },
-  { "blp3",            { NULL }, 8292,  "tcp" },
-  { "blp3",            { NULL }, 8292,  "udp" },
-  { "hiperscan-id",    { NULL }, 8293,  "tcp" },
-  { "blp4",            { NULL }, 8294,  "tcp" },
-  { "blp4",            { NULL }, 8294,  "udp" },
-  { "tmi",             { NULL }, 8300,  "tcp" },
-  { "tmi",             { NULL }, 8300,  "udp" },
-  { "amberon",         { NULL }, 8301,  "tcp" },
-  { "amberon",         { NULL }, 8301,  "udp" },
-  { "tnp-discover",    { NULL }, 8320,  "tcp" },
-  { "tnp-discover",    { NULL }, 8320,  "udp" },
-  { "tnp",             { NULL }, 8321,  "tcp" },
-  { "tnp",             { NULL }, 8321,  "udp" },
-  { "server-find",     { NULL }, 8351,  "tcp" },
-  { "server-find",     { NULL }, 8351,  "udp" },
-  { "cruise-enum",     { NULL }, 8376,  "tcp" },
-  { "cruise-enum",     { NULL }, 8376,  "udp" },
-  { "cruise-swroute",  { NULL }, 8377,  "tcp" },
-  { "cruise-swroute",  { NULL }, 8377,  "udp" },
-  { "cruise-config",   { NULL }, 8378,  "tcp" },
-  { "cruise-config",   { NULL }, 8378,  "udp" },
-  { "cruise-diags",    { NULL }, 8379,  "tcp" },
-  { "cruise-diags",    { NULL }, 8379,  "udp" },
-  { "cruise-update",   { NULL }, 8380,  "tcp" },
-  { "cruise-update",   { NULL }, 8380,  "udp" },
-  { "m2mservices",     { NULL }, 8383,  "tcp" },
-  { "m2mservices",     { NULL }, 8383,  "udp" },
-  { "cvd",             { NULL }, 8400,  "tcp" },
-  { "cvd",             { NULL }, 8400,  "udp" },
-  { "sabarsd",         { NULL }, 8401,  "tcp" },
-  { "sabarsd",         { NULL }, 8401,  "udp" },
-  { "abarsd",          { NULL }, 8402,  "tcp" },
-  { "abarsd",          { NULL }, 8402,  "udp" },
-  { "admind",          { NULL }, 8403,  "tcp" },
-  { "admind",          { NULL }, 8403,  "udp" },
-  { "svcloud",         { NULL }, 8404,  "tcp" },
-  { "svbackup",        { NULL }, 8405,  "tcp" },
-  { "espeech",         { NULL }, 8416,  "tcp" },
-  { "espeech",         { NULL }, 8416,  "udp" },
-  { "espeech-rtp",     { NULL }, 8417,  "tcp" },
-  { "espeech-rtp",     { NULL }, 8417,  "udp" },
-  { "cybro-a-bus",     { NULL }, 8442,  "tcp" },
-  { "cybro-a-bus",     { NULL }, 8442,  "udp" },
-  { "pcsync-https",    { NULL }, 8443,  "tcp" },
-  { "pcsync-https",    { NULL }, 8443,  "udp" },
-  { "pcsync-http",     { NULL }, 8444,  "tcp" },
-  { "pcsync-http",     { NULL }, 8444,  "udp" },
-  { "npmp",            { NULL }, 8450,  "tcp" },
-  { "npmp",            { NULL }, 8450,  "udp" },
-  { "cisco-avp",       { NULL }, 8470,  "tcp" },
-  { "pim-port",        { NULL }, 8471,  "tcp" },
-  { "pim-port",        { NULL }, 8471,  "sctp"},
-  { "otv",             { NULL }, 8472,  "tcp" },
-  { "otv",             { NULL }, 8472,  "udp" },
-  { "vp2p",            { NULL }, 8473,  "tcp" },
-  { "vp2p",            { NULL }, 8473,  "udp" },
-  { "noteshare",       { NULL }, 8474,  "tcp" },
-  { "noteshare",       { NULL }, 8474,  "udp" },
-  { "fmtp",            { NULL }, 8500,  "tcp" },
-  { "fmtp",            { NULL }, 8500,  "udp" },
-  { "rtsp-alt",        { NULL }, 8554,  "tcp" },
-  { "rtsp-alt",        { NULL }, 8554,  "udp" },
-  { "d-fence",         { NULL }, 8555,  "tcp" },
-  { "d-fence",         { NULL }, 8555,  "udp" },
-  { "oap-admin",       { NULL }, 8567,  "tcp" },
-  { "oap-admin",       { NULL }, 8567,  "udp" },
-  { "asterix",         { NULL }, 8600,  "tcp" },
-  { "asterix",         { NULL }, 8600,  "udp" },
-  { "canon-mfnp",      { NULL }, 8610,  "tcp" },
-  { "canon-mfnp",      { NULL }, 8610,  "udp" },
-  { "canon-bjnp1",     { NULL }, 8611,  "tcp" },
-  { "canon-bjnp1",     { NULL }, 8611,  "udp" },
-  { "canon-bjnp2",     { NULL }, 8612,  "tcp" },
-  { "canon-bjnp2",     { NULL }, 8612,  "udp" },
-  { "canon-bjnp3",     { NULL }, 8613,  "tcp" },
-  { "canon-bjnp3",     { NULL }, 8613,  "udp" },
-  { "canon-bjnp4",     { NULL }, 8614,  "tcp" },
-  { "canon-bjnp4",     { NULL }, 8614,  "udp" },
-  { "sun-as-jmxrmi",   { NULL }, 8686,  "tcp" },
-  { "sun-as-jmxrmi",   { NULL }, 8686,  "udp" },
-  { "vnyx",            { NULL }, 8699,  "tcp" },
-  { "vnyx",            { NULL }, 8699,  "udp" },
-  { "dtp-net",         { NULL }, 8732,  "udp" },
-  { "ibus",            { NULL }, 8733,  "tcp" },
-  { "ibus",            { NULL }, 8733,  "udp" },
-  { "mc-appserver",    { NULL }, 8763,  "tcp" },
-  { "mc-appserver",    { NULL }, 8763,  "udp" },
-  { "openqueue",       { NULL }, 8764,  "tcp" },
-  { "openqueue",       { NULL }, 8764,  "udp" },
-  { "ultraseek-http",  { NULL }, 8765,  "tcp" },
-  { "ultraseek-http",  { NULL }, 8765,  "udp" },
-  { "dpap",            { NULL }, 8770,  "tcp" },
-  { "dpap",            { NULL }, 8770,  "udp" },
-  { "msgclnt",         { NULL }, 8786,  "tcp" },
-  { "msgclnt",         { NULL }, 8786,  "udp" },
-  { "msgsrvr",         { NULL }, 8787,  "tcp" },
-  { "msgsrvr",         { NULL }, 8787,  "udp" },
-  { "sunwebadmin",     { NULL }, 8800,  "tcp" },
-  { "sunwebadmin",     { NULL }, 8800,  "udp" },
-  { "truecm",          { NULL }, 8804,  "tcp" },
-  { "truecm",          { NULL }, 8804,  "udp" },
-  { "dxspider",        { NULL }, 8873,  "tcp" },
-  { "dxspider",        { NULL }, 8873,  "udp" },
-  { "cddbp-alt",       { NULL }, 8880,  "tcp" },
-  { "cddbp-alt",       { NULL }, 8880,  "udp" },
-  { "secure-mqtt",     { NULL }, 8883,  "tcp" },
-  { "secure-mqtt",     { NULL }, 8883,  "udp" },
-  { "ddi-tcp-1",       { NULL }, 8888,  "tcp" },
-  { "ddi-udp-1",       { NULL }, 8888,  "udp" },
-  { "ddi-tcp-2",       { NULL }, 8889,  "tcp" },
-  { "ddi-udp-2",       { NULL }, 8889,  "udp" },
-  { "ddi-tcp-3",       { NULL }, 8890,  "tcp" },
-  { "ddi-udp-3",       { NULL }, 8890,  "udp" },
-  { "ddi-tcp-4",       { NULL }, 8891,  "tcp" },
-  { "ddi-udp-4",       { NULL }, 8891,  "udp" },
-  { "ddi-tcp-5",       { NULL }, 8892,  "tcp" },
-  { "ddi-udp-5",       { NULL }, 8892,  "udp" },
-  { "ddi-tcp-6",       { NULL }, 8893,  "tcp" },
-  { "ddi-udp-6",       { NULL }, 8893,  "udp" },
-  { "ddi-tcp-7",       { NULL }, 8894,  "tcp" },
-  { "ddi-udp-7",       { NULL }, 8894,  "udp" },
-  { "ospf-lite",       { NULL }, 8899,  "tcp" },
-  { "ospf-lite",       { NULL }, 8899,  "udp" },
-  { "jmb-cds1",        { NULL }, 8900,  "tcp" },
-  { "jmb-cds1",        { NULL }, 8900,  "udp" },
-  { "jmb-cds2",        { NULL }, 8901,  "tcp" },
-  { "jmb-cds2",        { NULL }, 8901,  "udp" },
-  { "manyone-http",    { NULL }, 8910,  "tcp" },
-  { "manyone-http",    { NULL }, 8910,  "udp" },
-  { "manyone-xml",     { NULL }, 8911,  "tcp" },
-  { "manyone-xml",     { NULL }, 8911,  "udp" },
-  { "wcbackup",        { NULL }, 8912,  "tcp" },
-  { "wcbackup",        { NULL }, 8912,  "udp" },
-  { "dragonfly",       { NULL }, 8913,  "tcp" },
-  { "dragonfly",       { NULL }, 8913,  "udp" },
-  { "twds",            { NULL }, 8937,  "tcp" },
-  { "cumulus-admin",   { NULL }, 8954,  "tcp" },
-  { "cumulus-admin",   { NULL }, 8954,  "udp" },
-  { "sunwebadmins",    { NULL }, 8989,  "tcp" },
-  { "sunwebadmins",    { NULL }, 8989,  "udp" },
-  { "http-wmap",       { NULL }, 8990,  "tcp" },
-  { "http-wmap",       { NULL }, 8990,  "udp" },
-  { "https-wmap",      { NULL }, 8991,  "tcp" },
-  { "https-wmap",      { NULL }, 8991,  "udp" },
-  { "bctp",            { NULL }, 8999,  "tcp" },
-  { "bctp",            { NULL }, 8999,  "udp" },
-  { "cslistener",      { NULL }, 9000,  "tcp" },
-  { "cslistener",      { NULL }, 9000,  "udp" },
-  { "etlservicemgr",   { NULL }, 9001,  "tcp" },
-  { "etlservicemgr",   { NULL }, 9001,  "udp" },
-  { "dynamid",         { NULL }, 9002,  "tcp" },
-  { "dynamid",         { NULL }, 9002,  "udp" },
-  { "ogs-client",      { NULL }, 9007,  "udp" },
-  { "ogs-server",      { NULL }, 9008,  "tcp" },
-  { "pichat",          { NULL }, 9009,  "tcp" },
-  { "pichat",          { NULL }, 9009,  "udp" },
-  { "sdr",             { NULL }, 9010,  "tcp" },
-  { "tambora",         { NULL }, 9020,  "tcp" },
-  { "tambora",         { NULL }, 9020,  "udp" },
-  { "panagolin-ident", { NULL }, 9021,  "tcp" },
-  { "panagolin-ident", { NULL }, 9021,  "udp" },
-  { "paragent",        { NULL }, 9022,  "tcp" },
-  { "paragent",        { NULL }, 9022,  "udp" },
-  { "swa-1",           { NULL }, 9023,  "tcp" },
-  { "swa-1",           { NULL }, 9023,  "udp" },
-  { "swa-2",           { NULL }, 9024,  "tcp" },
-  { "swa-2",           { NULL }, 9024,  "udp" },
-  { "swa-3",           { NULL }, 9025,  "tcp" },
-  { "swa-3",           { NULL }, 9025,  "udp" },
-  { "swa-4",           { NULL }, 9026,  "tcp" },
-  { "swa-4",           { NULL }, 9026,  "udp" },
-  { "versiera",        { NULL }, 9050,  "tcp" },
-  { "fio-cmgmt",       { NULL }, 9051,  "tcp" },
-  { "glrpc",           { NULL }, 9080,  "tcp" },
-  { "glrpc",           { NULL }, 9080,  "udp" },
-  { "lcs-ap",          { NULL }, 9082,  "sctp"},
-  { "emc-pp-mgmtsvc",  { NULL }, 9083,  "tcp" },
-  { "aurora",          { NULL }, 9084,  "tcp" },
-  { "aurora",          { NULL }, 9084,  "udp" },
-  { "aurora",          { NULL }, 9084,  "sctp"},
-  { "ibm-rsyscon",     { NULL }, 9085,  "tcp" },
-  { "ibm-rsyscon",     { NULL }, 9085,  "udp" },
-  { "net2display",     { NULL }, 9086,  "tcp" },
-  { "net2display",     { NULL }, 9086,  "udp" },
-  { "classic",         { NULL }, 9087,  "tcp" },
-  { "classic",         { NULL }, 9087,  "udp" },
-  { "sqlexec",         { NULL }, 9088,  "tcp" },
-  { "sqlexec",         { NULL }, 9088,  "udp" },
-  { "sqlexec-ssl",     { NULL }, 9089,  "tcp" },
-  { "sqlexec-ssl",     { NULL }, 9089,  "udp" },
-  { "websm",           { NULL }, 9090,  "tcp" },
-  { "websm",           { NULL }, 9090,  "udp" },
-  { "xmltec-xmlmail",  { NULL }, 9091,  "tcp" },
-  { "xmltec-xmlmail",  { NULL }, 9091,  "udp" },
-  { "XmlIpcRegSvc",    { NULL }, 9092,  "tcp" },
-  { "XmlIpcRegSvc",    { NULL }, 9092,  "udp" },
-  { "hp-pdl-datastr",  { NULL }, 9100,  "tcp" },
-  { "hp-pdl-datastr",  { NULL }, 9100,  "udp" },
-  { "pdl-datastream",  { NULL }, 9100,  "tcp" },
-  { "pdl-datastream",  { NULL }, 9100,  "udp" },
-  { "bacula-dir",      { NULL }, 9101,  "tcp" },
-  { "bacula-dir",      { NULL }, 9101,  "udp" },
-  { "bacula-fd",       { NULL }, 9102,  "tcp" },
-  { "bacula-fd",       { NULL }, 9102,  "udp" },
-  { "bacula-sd",       { NULL }, 9103,  "tcp" },
-  { "bacula-sd",       { NULL }, 9103,  "udp" },
-  { "peerwire",        { NULL }, 9104,  "tcp" },
-  { "peerwire",        { NULL }, 9104,  "udp" },
-  { "xadmin",          { NULL }, 9105,  "tcp" },
-  { "xadmin",          { NULL }, 9105,  "udp" },
-  { "astergate",       { NULL }, 9106,  "tcp" },
-  { "astergate-disc",  { NULL }, 9106,  "udp" },
-  { "astergatefax",    { NULL }, 9107,  "tcp" },
-  { "mxit",            { NULL }, 9119,  "tcp" },
-  { "mxit",            { NULL }, 9119,  "udp" },
-  { "dddp",            { NULL }, 9131,  "tcp" },
-  { "dddp",            { NULL }, 9131,  "udp" },
-  { "apani1",          { NULL }, 9160,  "tcp" },
-  { "apani1",          { NULL }, 9160,  "udp" },
-  { "apani2",          { NULL }, 9161,  "tcp" },
-  { "apani2",          { NULL }, 9161,  "udp" },
-  { "apani3",          { NULL }, 9162,  "tcp" },
-  { "apani3",          { NULL }, 9162,  "udp" },
-  { "apani4",          { NULL }, 9163,  "tcp" },
-  { "apani4",          { NULL }, 9163,  "udp" },
-  { "apani5",          { NULL }, 9164,  "tcp" },
-  { "apani5",          { NULL }, 9164,  "udp" },
-  { "sun-as-jpda",     { NULL }, 9191,  "tcp" },
-  { "sun-as-jpda",     { NULL }, 9191,  "udp" },
-  { "wap-wsp",         { NULL }, 9200,  "tcp" },
-  { "wap-wsp",         { NULL }, 9200,  "udp" },
-  { "wap-wsp-wtp",     { NULL }, 9201,  "tcp" },
-  { "wap-wsp-wtp",     { NULL }, 9201,  "udp" },
-  { "wap-wsp-s",       { NULL }, 9202,  "tcp" },
-  { "wap-wsp-s",       { NULL }, 9202,  "udp" },
-  { "wap-wsp-wtp-s",   { NULL }, 9203,  "tcp" },
-  { "wap-wsp-wtp-s",   { NULL }, 9203,  "udp" },
-  { "wap-vcard",       { NULL }, 9204,  "tcp" },
-  { "wap-vcard",       { NULL }, 9204,  "udp" },
-  { "wap-vcal",        { NULL }, 9205,  "tcp" },
-  { "wap-vcal",        { NULL }, 9205,  "udp" },
-  { "wap-vcard-s",     { NULL }, 9206,  "tcp" },
-  { "wap-vcard-s",     { NULL }, 9206,  "udp" },
-  { "wap-vcal-s",      { NULL }, 9207,  "tcp" },
-  { "wap-vcal-s",      { NULL }, 9207,  "udp" },
-  { "rjcdb-vcards",    { NULL }, 9208,  "tcp" },
-  { "rjcdb-vcards",    { NULL }, 9208,  "udp" },
-  { "almobile-system", { NULL }, 9209,  "tcp" },
-  { "almobile-system", { NULL }, 9209,  "udp" },
-  { "oma-mlp",         { NULL }, 9210,  "tcp" },
-  { "oma-mlp",         { NULL }, 9210,  "udp" },
-  { "oma-mlp-s",       { NULL }, 9211,  "tcp" },
-  { "oma-mlp-s",       { NULL }, 9211,  "udp" },
-  { "serverviewdbms",  { NULL }, 9212,  "tcp" },
-  { "serverviewdbms",  { NULL }, 9212,  "udp" },
-  { "serverstart",     { NULL }, 9213,  "tcp" },
-  { "serverstart",     { NULL }, 9213,  "udp" },
-  { "ipdcesgbs",       { NULL }, 9214,  "tcp" },
-  { "ipdcesgbs",       { NULL }, 9214,  "udp" },
-  { "insis",           { NULL }, 9215,  "tcp" },
-  { "insis",           { NULL }, 9215,  "udp" },
-  { "acme",            { NULL }, 9216,  "tcp" },
-  { "acme",            { NULL }, 9216,  "udp" },
-  { "fsc-port",        { NULL }, 9217,  "tcp" },
-  { "fsc-port",        { NULL }, 9217,  "udp" },
-  { "teamcoherence",   { NULL }, 9222,  "tcp" },
-  { "teamcoherence",   { NULL }, 9222,  "udp" },
-  { "mon",             { NULL }, 9255,  "tcp" },
-  { "mon",             { NULL }, 9255,  "udp" },
-  { "pegasus",         { NULL }, 9278,  "tcp" },
-  { "pegasus",         { NULL }, 9278,  "udp" },
-  { "pegasus-ctl",     { NULL }, 9279,  "tcp" },
-  { "pegasus-ctl",     { NULL }, 9279,  "udp" },
-  { "pgps",            { NULL }, 9280,  "tcp" },
-  { "pgps",            { NULL }, 9280,  "udp" },
-  { "swtp-port1",      { NULL }, 9281,  "tcp" },
-  { "swtp-port1",      { NULL }, 9281,  "udp" },
-  { "swtp-port2",      { NULL }, 9282,  "tcp" },
-  { "swtp-port2",      { NULL }, 9282,  "udp" },
-  { "callwaveiam",     { NULL }, 9283,  "tcp" },
-  { "callwaveiam",     { NULL }, 9283,  "udp" },
-  { "visd",            { NULL }, 9284,  "tcp" },
-  { "visd",            { NULL }, 9284,  "udp" },
-  { "n2h2server",      { NULL }, 9285,  "tcp" },
-  { "n2h2server",      { NULL }, 9285,  "udp" },
-  { "n2receive",       { NULL }, 9286,  "udp" },
-  { "cumulus",         { NULL }, 9287,  "tcp" },
-  { "cumulus",         { NULL }, 9287,  "udp" },
-  { "armtechdaemon",   { NULL }, 9292,  "tcp" },
-  { "armtechdaemon",   { NULL }, 9292,  "udp" },
-  { "storview",        { NULL }, 9293,  "tcp" },
-  { "storview",        { NULL }, 9293,  "udp" },
-  { "armcenterhttp",   { NULL }, 9294,  "tcp" },
-  { "armcenterhttp",   { NULL }, 9294,  "udp" },
-  { "armcenterhttps",  { NULL }, 9295,  "tcp" },
-  { "armcenterhttps",  { NULL }, 9295,  "udp" },
-  { "vrace",           { NULL }, 9300,  "tcp" },
-  { "vrace",           { NULL }, 9300,  "udp" },
-  { "sphinxql",        { NULL }, 9306,  "tcp" },
-  { "sphinxapi",       { NULL }, 9312,  "tcp" },
-  { "secure-ts",       { NULL }, 9318,  "tcp" },
-  { "secure-ts",       { NULL }, 9318,  "udp" },
-  { "guibase",         { NULL }, 9321,  "tcp" },
-  { "guibase",         { NULL }, 9321,  "udp" },
-  { "mpidcmgr",        { NULL }, 9343,  "tcp" },
-  { "mpidcmgr",        { NULL }, 9343,  "udp" },
-  { "mphlpdmc",        { NULL }, 9344,  "tcp" },
-  { "mphlpdmc",        { NULL }, 9344,  "udp" },
-  { "ctechlicensing",  { NULL }, 9346,  "tcp" },
-  { "ctechlicensing",  { NULL }, 9346,  "udp" },
-  { "fjdmimgr",        { NULL }, 9374,  "tcp" },
-  { "fjdmimgr",        { NULL }, 9374,  "udp" },
-  { "boxp",            { NULL }, 9380,  "tcp" },
-  { "boxp",            { NULL }, 9380,  "udp" },
-  { "d2dconfig",       { NULL }, 9387,  "tcp" },
-  { "d2ddatatrans",    { NULL }, 9388,  "tcp" },
-  { "adws",            { NULL }, 9389,  "tcp" },
-  { "otp",             { NULL }, 9390,  "tcp" },
-  { "fjinvmgr",        { NULL }, 9396,  "tcp" },
-  { "fjinvmgr",        { NULL }, 9396,  "udp" },
-  { "mpidcagt",        { NULL }, 9397,  "tcp" },
-  { "mpidcagt",        { NULL }, 9397,  "udp" },
-  { "sec-t4net-srv",   { NULL }, 9400,  "tcp" },
-  { "sec-t4net-srv",   { NULL }, 9400,  "udp" },
-  { "sec-t4net-clt",   { NULL }, 9401,  "tcp" },
-  { "sec-t4net-clt",   { NULL }, 9401,  "udp" },
-  { "sec-pc2fax-srv",  { NULL }, 9402,  "tcp" },
-  { "sec-pc2fax-srv",  { NULL }, 9402,  "udp" },
-  { "git",             { NULL }, 9418,  "tcp" },
-  { "git",             { NULL }, 9418,  "udp" },
-  { "tungsten-https",  { NULL }, 9443,  "tcp" },
-  { "tungsten-https",  { NULL }, 9443,  "udp" },
-  { "wso2esb-console", { NULL }, 9444,  "tcp" },
-  { "wso2esb-console", { NULL }, 9444,  "udp" },
-  { "sntlkeyssrvr",    { NULL }, 9450,  "tcp" },
-  { "sntlkeyssrvr",    { NULL }, 9450,  "udp" },
-  { "ismserver",       { NULL }, 9500,  "tcp" },
-  { "ismserver",       { NULL }, 9500,  "udp" },
-  { "sma-spw",         { NULL }, 9522,  "udp" },
-  { "mngsuite",        { NULL }, 9535,  "tcp" },
-  { "mngsuite",        { NULL }, 9535,  "udp" },
-  { "laes-bf",         { NULL }, 9536,  "tcp" },
-  { "laes-bf",         { NULL }, 9536,  "udp" },
-  { "trispen-sra",     { NULL }, 9555,  "tcp" },
-  { "trispen-sra",     { NULL }, 9555,  "udp" },
-  { "ldgateway",       { NULL }, 9592,  "tcp" },
-  { "ldgateway",       { NULL }, 9592,  "udp" },
-  { "cba8",            { NULL }, 9593,  "tcp" },
-  { "cba8",            { NULL }, 9593,  "udp" },
-  { "msgsys",          { NULL }, 9594,  "tcp" },
-  { "msgsys",          { NULL }, 9594,  "udp" },
-  { "pds",             { NULL }, 9595,  "tcp" },
-  { "pds",             { NULL }, 9595,  "udp" },
-  { "mercury-disc",    { NULL }, 9596,  "tcp" },
-  { "mercury-disc",    { NULL }, 9596,  "udp" },
-  { "pd-admin",        { NULL }, 9597,  "tcp" },
-  { "pd-admin",        { NULL }, 9597,  "udp" },
-  { "vscp",            { NULL }, 9598,  "tcp" },
-  { "vscp",            { NULL }, 9598,  "udp" },
-  { "robix",           { NULL }, 9599,  "tcp" },
-  { "robix",           { NULL }, 9599,  "udp" },
-  { "micromuse-ncpw",  { NULL }, 9600,  "tcp" },
-  { "micromuse-ncpw",  { NULL }, 9600,  "udp" },
-  { "streamcomm-ds",   { NULL }, 9612,  "tcp" },
-  { "streamcomm-ds",   { NULL }, 9612,  "udp" },
-  { "iadt-tls",        { NULL }, 9614,  "tcp" },
-  { "erunbook_agent",  { NULL }, 9616,  "tcp" },
-  { "erunbook_server", { NULL }, 9617,  "tcp" },
-  { "condor",          { NULL }, 9618,  "tcp" },
-  { "condor",          { NULL }, 9618,  "udp" },
-  { "odbcpathway",     { NULL }, 9628,  "tcp" },
-  { "odbcpathway",     { NULL }, 9628,  "udp" },
-  { "uniport",         { NULL }, 9629,  "tcp" },
-  { "uniport",         { NULL }, 9629,  "udp" },
-  { "peoctlr",         { NULL }, 9630,  "tcp" },
-  { "peocoll",         { NULL }, 9631,  "tcp" },
-  { "mc-comm",         { NULL }, 9632,  "udp" },
-  { "pqsflows",        { NULL }, 9640,  "tcp" },
-  { "xmms2",           { NULL }, 9667,  "tcp" },
-  { "xmms2",           { NULL }, 9667,  "udp" },
-  { "tec5-sdctp",      { NULL }, 9668,  "tcp" },
-  { "tec5-sdctp",      { NULL }, 9668,  "udp" },
-  { "client-wakeup",   { NULL }, 9694,  "tcp" },
-  { "client-wakeup",   { NULL }, 9694,  "udp" },
-  { "ccnx",            { NULL }, 9695,  "tcp" },
-  { "ccnx",            { NULL }, 9695,  "udp" },
-  { "board-roar",      { NULL }, 9700,  "tcp" },
-  { "board-roar",      { NULL }, 9700,  "udp" },
-  { "l5nas-parchan",   { NULL }, 9747,  "tcp" },
-  { "l5nas-parchan",   { NULL }, 9747,  "udp" },
-  { "board-voip",      { NULL }, 9750,  "tcp" },
-  { "board-voip",      { NULL }, 9750,  "udp" },
-  { "rasadv",          { NULL }, 9753,  "tcp" },
-  { "rasadv",          { NULL }, 9753,  "udp" },
-  { "tungsten-http",   { NULL }, 9762,  "tcp" },
-  { "tungsten-http",   { NULL }, 9762,  "udp" },
-  { "davsrc",          { NULL }, 9800,  "tcp" },
-  { "davsrc",          { NULL }, 9800,  "udp" },
-  { "sstp-2",          { NULL }, 9801,  "tcp" },
-  { "sstp-2",          { NULL }, 9801,  "udp" },
-  { "davsrcs",         { NULL }, 9802,  "tcp" },
-  { "davsrcs",         { NULL }, 9802,  "udp" },
-  { "sapv1",           { NULL }, 9875,  "tcp" },
-  { "sapv1",           { NULL }, 9875,  "udp" },
-  { "sd",              { NULL }, 9876,  "tcp" },
-  { "sd",              { NULL }, 9876,  "udp" },
-  { "cyborg-systems",  { NULL }, 9888,  "tcp" },
-  { "cyborg-systems",  { NULL }, 9888,  "udp" },
-  { "gt-proxy",        { NULL }, 9889,  "tcp" },
-  { "gt-proxy",        { NULL }, 9889,  "udp" },
-  { "monkeycom",       { NULL }, 9898,  "tcp" },
-  { "monkeycom",       { NULL }, 9898,  "udp" },
-  { "sctp-tunneling",  { NULL }, 9899,  "tcp" },
-  { "sctp-tunneling",  { NULL }, 9899,  "udp" },
-  { "iua",             { NULL }, 9900,  "tcp" },
-  { "iua",             { NULL }, 9900,  "udp" },
-  { "iua",             { NULL }, 9900,  "sctp"},
-  { "enrp",            { NULL }, 9901,  "udp" },
-  { "enrp-sctp",       { NULL }, 9901,  "sctp"},
-  { "enrp-sctp-tls",   { NULL }, 9902,  "sctp"},
-  { "domaintime",      { NULL }, 9909,  "tcp" },
-  { "domaintime",      { NULL }, 9909,  "udp" },
-  { "sype-transport",  { NULL }, 9911,  "tcp" },
-  { "sype-transport",  { NULL }, 9911,  "udp" },
-  { "apc-9950",        { NULL }, 9950,  "tcp" },
-  { "apc-9950",        { NULL }, 9950,  "udp" },
-  { "apc-9951",        { NULL }, 9951,  "tcp" },
-  { "apc-9951",        { NULL }, 9951,  "udp" },
-  { "apc-9952",        { NULL }, 9952,  "tcp" },
-  { "apc-9952",        { NULL }, 9952,  "udp" },
-  { "acis",            { NULL }, 9953,  "tcp" },
-  { "acis",            { NULL }, 9953,  "udp" },
-  { "odnsp",           { NULL }, 9966,  "tcp" },
-  { "odnsp",           { NULL }, 9966,  "udp" },
-  { "dsm-scm-target",  { NULL }, 9987,  "tcp" },
-  { "dsm-scm-target",  { NULL }, 9987,  "udp" },
-  { "nsesrvr",         { NULL }, 9988,  "tcp" },
-  { "osm-appsrvr",     { NULL }, 9990,  "tcp" },
-  { "osm-appsrvr",     { NULL }, 9990,  "udp" },
-  { "osm-oev",         { NULL }, 9991,  "tcp" },
-  { "osm-oev",         { NULL }, 9991,  "udp" },
-  { "palace-1",        { NULL }, 9992,  "tcp" },
-  { "palace-1",        { NULL }, 9992,  "udp" },
-  { "palace-2",        { NULL }, 9993,  "tcp" },
-  { "palace-2",        { NULL }, 9993,  "udp" },
-  { "palace-3",        { NULL }, 9994,  "tcp" },
-  { "palace-3",        { NULL }, 9994,  "udp" },
-  { "palace-4",        { NULL }, 9995,  "tcp" },
-  { "palace-4",        { NULL }, 9995,  "udp" },
-  { "palace-5",        { NULL }, 9996,  "tcp" },
-  { "palace-5",        { NULL }, 9996,  "udp" },
-  { "palace-6",        { NULL }, 9997,  "tcp" },
-  { "palace-6",        { NULL }, 9997,  "udp" },
-  { "distinct32",      { NULL }, 9998,  "tcp" },
-  { "distinct32",      { NULL }, 9998,  "udp" },
-  { "distinct",        { NULL }, 9999,  "tcp" },
-  { "distinct",        { NULL }, 9999,  "udp" },
-  { "ndmp",            { NULL }, 10000, "tcp" },
-  { "ndmp",            { NULL }, 10000, "udp" },
-  { "scp-config",      { NULL }, 10001, "tcp" },
-  { "scp-config",      { NULL }, 10001, "udp" },
-  { "documentum",      { NULL }, 10002, "tcp" },
-  { "documentum",      { NULL }, 10002, "udp" },
-  { "documentum_s",    { NULL }, 10003, "tcp" },
-  { "documentum_s",    { NULL }, 10003, "udp" },
-  { "emcrmirccd",      { NULL }, 10004, "tcp" },
-  { "emcrmird",        { NULL }, 10005, "tcp" },
-  { "mvs-capacity",    { NULL }, 10007, "tcp" },
-  { "mvs-capacity",    { NULL }, 10007, "udp" },
-  { "octopus",         { NULL }, 10008, "tcp" },
-  { "octopus",         { NULL }, 10008, "udp" },
-  { "swdtp-sv",        { NULL }, 10009, "tcp" },
-  { "swdtp-sv",        { NULL }, 10009, "udp" },
-  { "rxapi",           { NULL }, 10010, "tcp" },
-  { "zabbix-agent",    { NULL }, 10050, "tcp" },
-  { "zabbix-agent",    { NULL }, 10050, "udp" },
-  { "zabbix-trapper",  { NULL }, 10051, "tcp" },
-  { "zabbix-trapper",  { NULL }, 10051, "udp" },
-  { "qptlmd",          { NULL }, 10055, "tcp" },
-  { "amanda",          { NULL }, 10080, "tcp" },
-  { "amanda",          { NULL }, 10080, "udp" },
-  { "famdc",           { NULL }, 10081, "tcp" },
-  { "famdc",           { NULL }, 10081, "udp" },
-  { "itap-ddtp",       { NULL }, 10100, "tcp" },
-  { "itap-ddtp",       { NULL }, 10100, "udp" },
-  { "ezmeeting-2",     { NULL }, 10101, "tcp" },
-  { "ezmeeting-2",     { NULL }, 10101, "udp" },
-  { "ezproxy-2",       { NULL }, 10102, "tcp" },
-  { "ezproxy-2",       { NULL }, 10102, "udp" },
-  { "ezrelay",         { NULL }, 10103, "tcp" },
-  { "ezrelay",         { NULL }, 10103, "udp" },
-  { "swdtp",           { NULL }, 10104, "tcp" },
-  { "swdtp",           { NULL }, 10104, "udp" },
-  { "bctp-server",     { NULL }, 10107, "tcp" },
-  { "bctp-server",     { NULL }, 10107, "udp" },
-  { "nmea-0183",       { NULL }, 10110, "tcp" },
-  { "nmea-0183",       { NULL }, 10110, "udp" },
-  { "netiq-endpoint",  { NULL }, 10113, "tcp" },
-  { "netiq-endpoint",  { NULL }, 10113, "udp" },
-  { "netiq-qcheck",    { NULL }, 10114, "tcp" },
-  { "netiq-qcheck",    { NULL }, 10114, "udp" },
-  { "netiq-endpt",     { NULL }, 10115, "tcp" },
-  { "netiq-endpt",     { NULL }, 10115, "udp" },
-  { "netiq-voipa",     { NULL }, 10116, "tcp" },
-  { "netiq-voipa",     { NULL }, 10116, "udp" },
-  { "iqrm",            { NULL }, 10117, "tcp" },
-  { "iqrm",            { NULL }, 10117, "udp" },
-  { "bmc-perf-sd",     { NULL }, 10128, "tcp" },
-  { "bmc-perf-sd",     { NULL }, 10128, "udp" },
-  { "bmc-gms",         { NULL }, 10129, "tcp" },
-  { "qb-db-server",    { NULL }, 10160, "tcp" },
-  { "qb-db-server",    { NULL }, 10160, "udp" },
-  { "snmptls",         { NULL }, 10161, "tcp" },
-  { "snmpdtls",        { NULL }, 10161, "udp" },
-  { "snmptls-trap",    { NULL }, 10162, "tcp" },
-  { "snmpdtls-trap",   { NULL }, 10162, "udp" },
-  { "trisoap",         { NULL }, 10200, "tcp" },
-  { "trisoap",         { NULL }, 10200, "udp" },
-  { "rsms",            { NULL }, 10201, "tcp" },
-  { "rscs",            { NULL }, 10201, "udp" },
-  { "apollo-relay",    { NULL }, 10252, "tcp" },
-  { "apollo-relay",    { NULL }, 10252, "udp" },
-  { "axis-wimp-port",  { NULL }, 10260, "tcp" },
-  { "axis-wimp-port",  { NULL }, 10260, "udp" },
-  { "blocks",          { NULL }, 10288, "tcp" },
-  { "blocks",          { NULL }, 10288, "udp" },
-  { "cosir",           { NULL }, 10321, "tcp" },
-  { "hip-nat-t",       { NULL }, 10500, "udp" },
-  { "MOS-lower",       { NULL }, 10540, "tcp" },
-  { "MOS-lower",       { NULL }, 10540, "udp" },
-  { "MOS-upper",       { NULL }, 10541, "tcp" },
-  { "MOS-upper",       { NULL }, 10541, "udp" },
-  { "MOS-aux",         { NULL }, 10542, "tcp" },
-  { "MOS-aux",         { NULL }, 10542, "udp" },
-  { "MOS-soap",        { NULL }, 10543, "tcp" },
-  { "MOS-soap",        { NULL }, 10543, "udp" },
-  { "MOS-soap-opt",    { NULL }, 10544, "tcp" },
-  { "MOS-soap-opt",    { NULL }, 10544, "udp" },
-  { "gap",             { NULL }, 10800, "tcp" },
-  { "gap",             { NULL }, 10800, "udp" },
-  { "lpdg",            { NULL }, 10805, "tcp" },
-  { "lpdg",            { NULL }, 10805, "udp" },
-  { "nbd",             { NULL }, 10809, "tcp" },
-  { "nmc-disc",        { NULL }, 10810, "udp" },
-  { "helix",           { NULL }, 10860, "tcp" },
-  { "helix",           { NULL }, 10860, "udp" },
-  { "rmiaux",          { NULL }, 10990, "tcp" },
-  { "rmiaux",          { NULL }, 10990, "udp" },
-  { "irisa",           { NULL }, 11000, "tcp" },
-  { "irisa",           { NULL }, 11000, "udp" },
-  { "metasys",         { NULL }, 11001, "tcp" },
-  { "metasys",         { NULL }, 11001, "udp" },
-  { "netapp-icmgmt",   { NULL }, 11104, "tcp" },
-  { "netapp-icdata",   { NULL }, 11105, "tcp" },
-  { "sgi-lk",          { NULL }, 11106, "tcp" },
-  { "sgi-lk",          { NULL }, 11106, "udp" },
-  { "vce",             { NULL }, 11111, "tcp" },
-  { "vce",             { NULL }, 11111, "udp" },
-  { "dicom",           { NULL }, 11112, "tcp" },
-  { "dicom",           { NULL }, 11112, "udp" },
-  { "suncacao-snmp",   { NULL }, 11161, "tcp" },
-  { "suncacao-snmp",   { NULL }, 11161, "udp" },
-  { "suncacao-jmxmp",  { NULL }, 11162, "tcp" },
-  { "suncacao-jmxmp",  { NULL }, 11162, "udp" },
-  { "suncacao-rmi",    { NULL }, 11163, "tcp" },
-  { "suncacao-rmi",    { NULL }, 11163, "udp" },
-  { "suncacao-csa",    { NULL }, 11164, "tcp" },
-  { "suncacao-csa",    { NULL }, 11164, "udp" },
-  { "suncacao-websvc", { NULL }, 11165, "tcp" },
-  { "suncacao-websvc", { NULL }, 11165, "udp" },
-  { "snss",            { NULL }, 11171, "udp" },
-  { "oemcacao-jmxmp",  { NULL }, 11172, "tcp" },
-  { "oemcacao-rmi",    { NULL }, 11174, "tcp" },
-  { "oemcacao-websvc", { NULL }, 11175, "tcp" },
-  { "smsqp",           { NULL }, 11201, "tcp" },
-  { "smsqp",           { NULL }, 11201, "udp" },
-  { "wifree",          { NULL }, 11208, "tcp" },
-  { "wifree",          { NULL }, 11208, "udp" },
-  { "memcache",        { NULL }, 11211, "tcp" },
-  { "memcache",        { NULL }, 11211, "udp" },
-  { "imip",            { NULL }, 11319, "tcp" },
-  { "imip",            { NULL }, 11319, "udp" },
-  { "imip-channels",   { NULL }, 11320, "tcp" },
-  { "imip-channels",   { NULL }, 11320, "udp" },
-  { "arena-server",    { NULL }, 11321, "tcp" },
-  { "arena-server",    { NULL }, 11321, "udp" },
-  { "atm-uhas",        { NULL }, 11367, "tcp" },
-  { "atm-uhas",        { NULL }, 11367, "udp" },
-  { "hkp",             { NULL }, 11371, "tcp" },
-  { "hkp",             { NULL }, 11371, "udp" },
-  { "asgcypresstcps",  { NULL }, 11489, "tcp" },
-  { "tempest-port",    { NULL }, 11600, "tcp" },
-  { "tempest-port",    { NULL }, 11600, "udp" },
-  { "h323callsigalt",  { NULL }, 11720, "tcp" },
-  { "h323callsigalt",  { NULL }, 11720, "udp" },
-  { "intrepid-ssl",    { NULL }, 11751, "tcp" },
-  { "intrepid-ssl",    { NULL }, 11751, "udp" },
-  { "xoraya",          { NULL }, 11876, "tcp" },
-  { "xoraya",          { NULL }, 11876, "udp" },
-  { "x2e-disc",        { NULL }, 11877, "udp" },
-  { "sysinfo-sp",      { NULL }, 11967, "tcp" },
-  { "sysinfo-sp",      { NULL }, 11967, "udp" },
-  { "wmereceiving",    { NULL }, 11997, "sctp"},
-  { "wmedistribution", { NULL }, 11998, "sctp"},
-  { "wmereporting",    { NULL }, 11999, "sctp"},
-  { "entextxid",       { NULL }, 12000, "tcp" },
-  { "entextxid",       { NULL }, 12000, "udp" },
-  { "entextnetwk",     { NULL }, 12001, "tcp" },
-  { "entextnetwk",     { NULL }, 12001, "udp" },
-  { "entexthigh",      { NULL }, 12002, "tcp" },
-  { "entexthigh",      { NULL }, 12002, "udp" },
-  { "entextmed",       { NULL }, 12003, "tcp" },
-  { "entextmed",       { NULL }, 12003, "udp" },
-  { "entextlow",       { NULL }, 12004, "tcp" },
-  { "entextlow",       { NULL }, 12004, "udp" },
-  { "dbisamserver1",   { NULL }, 12005, "tcp" },
-  { "dbisamserver1",   { NULL }, 12005, "udp" },
-  { "dbisamserver2",   { NULL }, 12006, "tcp" },
-  { "dbisamserver2",   { NULL }, 12006, "udp" },
-  { "accuracer",       { NULL }, 12007, "tcp" },
-  { "accuracer",       { NULL }, 12007, "udp" },
-  { "accuracer-dbms",  { NULL }, 12008, "tcp" },
-  { "accuracer-dbms",  { NULL }, 12008, "udp" },
-  { "edbsrvr",         { NULL }, 12010, "tcp" },
-  { "vipera",          { NULL }, 12012, "tcp" },
-  { "vipera",          { NULL }, 12012, "udp" },
-  { "vipera-ssl",      { NULL }, 12013, "tcp" },
-  { "vipera-ssl",      { NULL }, 12013, "udp" },
-  { "rets-ssl",        { NULL }, 12109, "tcp" },
-  { "rets-ssl",        { NULL }, 12109, "udp" },
-  { "nupaper-ss",      { NULL }, 12121, "tcp" },
-  { "nupaper-ss",      { NULL }, 12121, "udp" },
-  { "cawas",           { NULL }, 12168, "tcp" },
-  { "cawas",           { NULL }, 12168, "udp" },
-  { "hivep",           { NULL }, 12172, "tcp" },
-  { "hivep",           { NULL }, 12172, "udp" },
-  { "linogridengine",  { NULL }, 12300, "tcp" },
-  { "linogridengine",  { NULL }, 12300, "udp" },
-  { "warehouse-sss",   { NULL }, 12321, "tcp" },
-  { "warehouse-sss",   { NULL }, 12321, "udp" },
-  { "warehouse",       { NULL }, 12322, "tcp" },
-  { "warehouse",       { NULL }, 12322, "udp" },
-  { "italk",           { NULL }, 12345, "tcp" },
-  { "italk",           { NULL }, 12345, "udp" },
-  { "tsaf",            { NULL }, 12753, "tcp" },
-  { "tsaf",            { NULL }, 12753, "udp" },
-  { "i-zipqd",         { NULL }, 13160, "tcp" },
-  { "i-zipqd",         { NULL }, 13160, "udp" },
-  { "bcslogc",         { NULL }, 13216, "tcp" },
-  { "bcslogc",         { NULL }, 13216, "udp" },
-  { "rs-pias",         { NULL }, 13217, "tcp" },
-  { "rs-pias",         { NULL }, 13217, "udp" },
-  { "emc-vcas-tcp",    { NULL }, 13218, "tcp" },
-  { "emc-vcas-udp",    { NULL }, 13218, "udp" },
-  { "powwow-client",   { NULL }, 13223, "tcp" },
-  { "powwow-client",   { NULL }, 13223, "udp" },
-  { "powwow-server",   { NULL }, 13224, "tcp" },
-  { "powwow-server",   { NULL }, 13224, "udp" },
-  { "doip-data",       { NULL }, 13400, "tcp" },
-  { "doip-disc",       { NULL }, 13400, "udp" },
-  { "bprd",            { NULL }, 13720, "tcp" },
-  { "bprd",            { NULL }, 13720, "udp" },
-  { "bpdbm",           { NULL }, 13721, "tcp" },
-  { "bpdbm",           { NULL }, 13721, "udp" },
-  { "bpjava-msvc",     { NULL }, 13722, "tcp" },
-  { "bpjava-msvc",     { NULL }, 13722, "udp" },
-  { "vnetd",           { NULL }, 13724, "tcp" },
-  { "vnetd",           { NULL }, 13724, "udp" },
-  { "bpcd",            { NULL }, 13782, "tcp" },
-  { "bpcd",            { NULL }, 13782, "udp" },
-  { "vopied",          { NULL }, 13783, "tcp" },
-  { "vopied",          { NULL }, 13783, "udp" },
-  { "nbdb",            { NULL }, 13785, "tcp" },
-  { "nbdb",            { NULL }, 13785, "udp" },
-  { "nomdb",           { NULL }, 13786, "tcp" },
-  { "nomdb",           { NULL }, 13786, "udp" },
-  { "dsmcc-config",    { NULL }, 13818, "tcp" },
-  { "dsmcc-config",    { NULL }, 13818, "udp" },
-  { "dsmcc-session",   { NULL }, 13819, "tcp" },
-  { "dsmcc-session",   { NULL }, 13819, "udp" },
-  { "dsmcc-passthru",  { NULL }, 13820, "tcp" },
-  { "dsmcc-passthru",  { NULL }, 13820, "udp" },
-  { "dsmcc-download",  { NULL }, 13821, "tcp" },
-  { "dsmcc-download",  { NULL }, 13821, "udp" },
-  { "dsmcc-ccp",       { NULL }, 13822, "tcp" },
-  { "dsmcc-ccp",       { NULL }, 13822, "udp" },
-  { "bmdss",           { NULL }, 13823, "tcp" },
-  { "dta-systems",     { NULL }, 13929, "tcp" },
-  { "dta-systems",     { NULL }, 13929, "udp" },
-  { "medevolve",       { NULL }, 13930, "tcp" },
-  { "scotty-ft",       { NULL }, 14000, "tcp" },
-  { "scotty-ft",       { NULL }, 14000, "udp" },
-  { "sua",             { NULL }, 14001, "tcp" },
-  { "sua",             { NULL }, 14001, "udp" },
-  { "sua",             { NULL }, 14001, "sctp"},
-  { "sage-best-com1",  { NULL }, 14033, "tcp" },
-  { "sage-best-com1",  { NULL }, 14033, "udp" },
-  { "sage-best-com2",  { NULL }, 14034, "tcp" },
-  { "sage-best-com2",  { NULL }, 14034, "udp" },
-  { "vcs-app",         { NULL }, 14141, "tcp" },
-  { "vcs-app",         { NULL }, 14141, "udp" },
-  { "icpp",            { NULL }, 14142, "tcp" },
-  { "icpp",            { NULL }, 14142, "udp" },
-  { "gcm-app",         { NULL }, 14145, "tcp" },
-  { "gcm-app",         { NULL }, 14145, "udp" },
-  { "vrts-tdd",        { NULL }, 14149, "tcp" },
-  { "vrts-tdd",        { NULL }, 14149, "udp" },
-  { "vcscmd",          { NULL }, 14150, "tcp" },
-  { "vad",             { NULL }, 14154, "tcp" },
-  { "vad",             { NULL }, 14154, "udp" },
-  { "cps",             { NULL }, 14250, "tcp" },
-  { "cps",             { NULL }, 14250, "udp" },
-  { "ca-web-update",   { NULL }, 14414, "tcp" },
-  { "ca-web-update",   { NULL }, 14414, "udp" },
-  { "hde-lcesrvr-1",   { NULL }, 14936, "tcp" },
-  { "hde-lcesrvr-1",   { NULL }, 14936, "udp" },
-  { "hde-lcesrvr-2",   { NULL }, 14937, "tcp" },
-  { "hde-lcesrvr-2",   { NULL }, 14937, "udp" },
-  { "hydap",           { NULL }, 15000, "tcp" },
-  { "hydap",           { NULL }, 15000, "udp" },
-  { "xpilot",          { NULL }, 15345, "tcp" },
-  { "xpilot",          { NULL }, 15345, "udp" },
-  { "3link",           { NULL }, 15363, "tcp" },
-  { "3link",           { NULL }, 15363, "udp" },
-  { "cisco-snat",      { NULL }, 15555, "tcp" },
-  { "cisco-snat",      { NULL }, 15555, "udp" },
-  { "bex-xr",          { NULL }, 15660, "tcp" },
-  { "bex-xr",          { NULL }, 15660, "udp" },
-  { "ptp",             { NULL }, 15740, "tcp" },
-  { "ptp",             { NULL }, 15740, "udp" },
-  { "2ping",           { NULL }, 15998, "udp" },
-  { "programmar",      { NULL }, 15999, "tcp" },
-  { "fmsas",           { NULL }, 16000, "tcp" },
-  { "fmsascon",        { NULL }, 16001, "tcp" },
-  { "gsms",            { NULL }, 16002, "tcp" },
-  { "alfin",           { NULL }, 16003, "udp" },
-  { "jwpc",            { NULL }, 16020, "tcp" },
-  { "jwpc-bin",        { NULL }, 16021, "tcp" },
-  { "sun-sea-port",    { NULL }, 16161, "tcp" },
-  { "sun-sea-port",    { NULL }, 16161, "udp" },
-  { "solaris-audit",   { NULL }, 16162, "tcp" },
-  { "etb4j",           { NULL }, 16309, "tcp" },
-  { "etb4j",           { NULL }, 16309, "udp" },
-  { "pduncs",          { NULL }, 16310, "tcp" },
-  { "pduncs",          { NULL }, 16310, "udp" },
-  { "pdefmns",         { NULL }, 16311, "tcp" },
-  { "pdefmns",         { NULL }, 16311, "udp" },
-  { "netserialext1",   { NULL }, 16360, "tcp" },
-  { "netserialext1",   { NULL }, 16360, "udp" },
-  { "netserialext2",   { NULL }, 16361, "tcp" },
-  { "netserialext2",   { NULL }, 16361, "udp" },
-  { "netserialext3",   { NULL }, 16367, "tcp" },
-  { "netserialext3",   { NULL }, 16367, "udp" },
-  { "netserialext4",   { NULL }, 16368, "tcp" },
-  { "netserialext4",   { NULL }, 16368, "udp" },
-  { "connected",       { NULL }, 16384, "tcp" },
-  { "connected",       { NULL }, 16384, "udp" },
-  { "xoms",            { NULL }, 16619, "tcp" },
-  { "newbay-snc-mc",   { NULL }, 16900, "tcp" },
-  { "newbay-snc-mc",   { NULL }, 16900, "udp" },
-  { "sgcip",           { NULL }, 16950, "tcp" },
-  { "sgcip",           { NULL }, 16950, "udp" },
-  { "intel-rci-mp",    { NULL }, 16991, "tcp" },
-  { "intel-rci-mp",    { NULL }, 16991, "udp" },
-  { "amt-soap-http",   { NULL }, 16992, "tcp" },
-  { "amt-soap-http",   { NULL }, 16992, "udp" },
-  { "amt-soap-https",  { NULL }, 16993, "tcp" },
-  { "amt-soap-https",  { NULL }, 16993, "udp" },
-  { "amt-redir-tcp",   { NULL }, 16994, "tcp" },
-  { "amt-redir-tcp",   { NULL }, 16994, "udp" },
-  { "amt-redir-tls",   { NULL }, 16995, "tcp" },
-  { "amt-redir-tls",   { NULL }, 16995, "udp" },
-  { "isode-dua",       { NULL }, 17007, "tcp" },
-  { "isode-dua",       { NULL }, 17007, "udp" },
-  { "soundsvirtual",   { NULL }, 17185, "tcp" },
-  { "soundsvirtual",   { NULL }, 17185, "udp" },
-  { "chipper",         { NULL }, 17219, "tcp" },
-  { "chipper",         { NULL }, 17219, "udp" },
-  { "integrius-stp",   { NULL }, 17234, "tcp" },
-  { "integrius-stp",   { NULL }, 17234, "udp" },
-  { "ssh-mgmt",        { NULL }, 17235, "tcp" },
-  { "ssh-mgmt",        { NULL }, 17235, "udp" },
-  { "db-lsp",          { NULL }, 17500, "tcp" },
-  { "db-lsp-disc",     { NULL }, 17500, "udp" },
-  { "ea",              { NULL }, 17729, "tcp" },
-  { "ea",              { NULL }, 17729, "udp" },
-  { "zep",             { NULL }, 17754, "tcp" },
-  { "zep",             { NULL }, 17754, "udp" },
-  { "zigbee-ip",       { NULL }, 17755, "tcp" },
-  { "zigbee-ip",       { NULL }, 17755, "udp" },
-  { "zigbee-ips",      { NULL }, 17756, "tcp" },
-  { "zigbee-ips",      { NULL }, 17756, "udp" },
-  { "sw-orion",        { NULL }, 17777, "tcp" },
-  { "biimenu",         { NULL }, 18000, "tcp" },
-  { "biimenu",         { NULL }, 18000, "udp" },
-  { "radpdf",          { NULL }, 18104, "tcp" },
-  { "racf",            { NULL }, 18136, "tcp" },
-  { "opsec-cvp",       { NULL }, 18181, "tcp" },
-  { "opsec-cvp",       { NULL }, 18181, "udp" },
-  { "opsec-ufp",       { NULL }, 18182, "tcp" },
-  { "opsec-ufp",       { NULL }, 18182, "udp" },
-  { "opsec-sam",       { NULL }, 18183, "tcp" },
-  { "opsec-sam",       { NULL }, 18183, "udp" },
-  { "opsec-lea",       { NULL }, 18184, "tcp" },
-  { "opsec-lea",       { NULL }, 18184, "udp" },
-  { "opsec-omi",       { NULL }, 18185, "tcp" },
-  { "opsec-omi",       { NULL }, 18185, "udp" },
-  { "ohsc",            { NULL }, 18186, "tcp" },
-  { "ohsc",            { NULL }, 18186, "udp" },
-  { "opsec-ela",       { NULL }, 18187, "tcp" },
-  { "opsec-ela",       { NULL }, 18187, "udp" },
-  { "checkpoint-rtm",  { NULL }, 18241, "tcp" },
-  { "checkpoint-rtm",  { NULL }, 18241, "udp" },
-  { "gv-pf",           { NULL }, 18262, "tcp" },
-  { "gv-pf",           { NULL }, 18262, "udp" },
-  { "ac-cluster",      { NULL }, 18463, "tcp" },
-  { "ac-cluster",      { NULL }, 18463, "udp" },
-  { "rds-ib",          { NULL }, 18634, "tcp" },
-  { "rds-ib",          { NULL }, 18634, "udp" },
-  { "rds-ip",          { NULL }, 18635, "tcp" },
-  { "rds-ip",          { NULL }, 18635, "udp" },
-  { "ique",            { NULL }, 18769, "tcp" },
-  { "ique",            { NULL }, 18769, "udp" },
-  { "infotos",         { NULL }, 18881, "tcp" },
-  { "infotos",         { NULL }, 18881, "udp" },
-  { "apc-necmp",       { NULL }, 18888, "tcp" },
-  { "apc-necmp",       { NULL }, 18888, "udp" },
-  { "igrid",           { NULL }, 19000, "tcp" },
-  { "igrid",           { NULL }, 19000, "udp" },
-  { "j-link",          { NULL }, 19020, "tcp" },
-  { "opsec-uaa",       { NULL }, 19191, "tcp" },
-  { "opsec-uaa",       { NULL }, 19191, "udp" },
-  { "ua-secureagent",  { NULL }, 19194, "tcp" },
-  { "ua-secureagent",  { NULL }, 19194, "udp" },
-  { "keysrvr",         { NULL }, 19283, "tcp" },
-  { "keysrvr",         { NULL }, 19283, "udp" },
-  { "keyshadow",       { NULL }, 19315, "tcp" },
-  { "keyshadow",       { NULL }, 19315, "udp" },
-  { "mtrgtrans",       { NULL }, 19398, "tcp" },
-  { "mtrgtrans",       { NULL }, 19398, "udp" },
-  { "hp-sco",          { NULL }, 19410, "tcp" },
-  { "hp-sco",          { NULL }, 19410, "udp" },
-  { "hp-sca",          { NULL }, 19411, "tcp" },
-  { "hp-sca",          { NULL }, 19411, "udp" },
-  { "hp-sessmon",      { NULL }, 19412, "tcp" },
-  { "hp-sessmon",      { NULL }, 19412, "udp" },
-  { "fxuptp",          { NULL }, 19539, "tcp" },
-  { "fxuptp",          { NULL }, 19539, "udp" },
-  { "sxuptp",          { NULL }, 19540, "tcp" },
-  { "sxuptp",          { NULL }, 19540, "udp" },
-  { "jcp",             { NULL }, 19541, "tcp" },
-  { "jcp",             { NULL }, 19541, "udp" },
-  { "iec-104-sec",     { NULL }, 19998, "tcp" },
-  { "dnp-sec",         { NULL }, 19999, "tcp" },
-  { "dnp-sec",         { NULL }, 19999, "udp" },
-  { "dnp",             { NULL }, 20000, "tcp" },
-  { "dnp",             { NULL }, 20000, "udp" },
-  { "microsan",        { NULL }, 20001, "tcp" },
-  { "microsan",        { NULL }, 20001, "udp" },
-  { "commtact-http",   { NULL }, 20002, "tcp" },
-  { "commtact-http",   { NULL }, 20002, "udp" },
-  { "commtact-https",  { NULL }, 20003, "tcp" },
-  { "commtact-https",  { NULL }, 20003, "udp" },
-  { "openwebnet",      { NULL }, 20005, "tcp" },
-  { "openwebnet",      { NULL }, 20005, "udp" },
-  { "ss-idi-disc",     { NULL }, 20012, "udp" },
-  { "ss-idi",          { NULL }, 20013, "tcp" },
-  { "opendeploy",      { NULL }, 20014, "tcp" },
-  { "opendeploy",      { NULL }, 20014, "udp" },
-  { "nburn_id",        { NULL }, 20034, "tcp" },
-  { "nburn_id",        { NULL }, 20034, "udp" },
-  { "tmophl7mts",      { NULL }, 20046, "tcp" },
-  { "tmophl7mts",      { NULL }, 20046, "udp" },
-  { "mountd",          { NULL }, 20048, "tcp" },
-  { "mountd",          { NULL }, 20048, "udp" },
-  { "nfsrdma",         { NULL }, 20049, "tcp" },
-  { "nfsrdma",         { NULL }, 20049, "udp" },
-  { "nfsrdma",         { NULL }, 20049, "sctp"},
-  { "tolfab",          { NULL }, 20167, "tcp" },
-  { "tolfab",          { NULL }, 20167, "udp" },
-  { "ipdtp-port",      { NULL }, 20202, "tcp" },
-  { "ipdtp-port",      { NULL }, 20202, "udp" },
-  { "ipulse-ics",      { NULL }, 20222, "tcp" },
-  { "ipulse-ics",      { NULL }, 20222, "udp" },
-  { "emwavemsg",       { NULL }, 20480, "tcp" },
-  { "emwavemsg",       { NULL }, 20480, "udp" },
-  { "track",           { NULL }, 20670, "tcp" },
-  { "track",           { NULL }, 20670, "udp" },
-  { "athand-mmp",      { NULL }, 20999, "tcp" },
-  { "athand-mmp",      { NULL }, 20999, "udp" },
-  { "irtrans",         { NULL }, 21000, "tcp" },
-  { "irtrans",         { NULL }, 21000, "udp" },
-  { "dfserver",        { NULL }, 21554, "tcp" },
-  { "dfserver",        { NULL }, 21554, "udp" },
-  { "vofr-gateway",    { NULL }, 21590, "tcp" },
-  { "vofr-gateway",    { NULL }, 21590, "udp" },
-  { "tvpm",            { NULL }, 21800, "tcp" },
-  { "tvpm",            { NULL }, 21800, "udp" },
-  { "webphone",        { NULL }, 21845, "tcp" },
-  { "webphone",        { NULL }, 21845, "udp" },
-  { "netspeak-is",     { NULL }, 21846, "tcp" },
-  { "netspeak-is",     { NULL }, 21846, "udp" },
-  { "netspeak-cs",     { NULL }, 21847, "tcp" },
-  { "netspeak-cs",     { NULL }, 21847, "udp" },
-  { "netspeak-acd",    { NULL }, 21848, "tcp" },
-  { "netspeak-acd",    { NULL }, 21848, "udp" },
-  { "netspeak-cps",    { NULL }, 21849, "tcp" },
-  { "netspeak-cps",    { NULL }, 21849, "udp" },
-  { "snapenetio",      { NULL }, 22000, "tcp" },
-  { "snapenetio",      { NULL }, 22000, "udp" },
-  { "optocontrol",     { NULL }, 22001, "tcp" },
-  { "optocontrol",     { NULL }, 22001, "udp" },
-  { "optohost002",     { NULL }, 22002, "tcp" },
-  { "optohost002",     { NULL }, 22002, "udp" },
-  { "optohost003",     { NULL }, 22003, "tcp" },
-  { "optohost003",     { NULL }, 22003, "udp" },
-  { "optohost004",     { NULL }, 22004, "tcp" },
-  { "optohost004",     { NULL }, 22004, "udp" },
-  { "optohost004",     { NULL }, 22005, "tcp" },
-  { "optohost004",     { NULL }, 22005, "udp" },
-  { "dcap",            { NULL }, 22125, "tcp" },
-  { "gsidcap",         { NULL }, 22128, "tcp" },
-  { "wnn6",            { NULL }, 22273, "tcp" },
-  { "wnn6",            { NULL }, 22273, "udp" },
-  { "cis",             { NULL }, 22305, "tcp" },
-  { "cis",             { NULL }, 22305, "udp" },
-  { "cis-secure",      { NULL }, 22343, "tcp" },
-  { "cis-secure",      { NULL }, 22343, "udp" },
-  { "WibuKey",         { NULL }, 22347, "tcp" },
-  { "WibuKey",         { NULL }, 22347, "udp" },
-  { "CodeMeter",       { NULL }, 22350, "tcp" },
-  { "CodeMeter",       { NULL }, 22350, "udp" },
-  { "vocaltec-wconf",  { NULL }, 22555, "tcp" },
-  { "vocaltec-phone",  { NULL }, 22555, "udp" },
-  { "talikaserver",    { NULL }, 22763, "tcp" },
-  { "talikaserver",    { NULL }, 22763, "udp" },
-  { "aws-brf",         { NULL }, 22800, "tcp" },
-  { "aws-brf",         { NULL }, 22800, "udp" },
-  { "brf-gw",          { NULL }, 22951, "tcp" },
-  { "brf-gw",          { NULL }, 22951, "udp" },
-  { "inovaport1",      { NULL }, 23000, "tcp" },
-  { "inovaport1",      { NULL }, 23000, "udp" },
-  { "inovaport2",      { NULL }, 23001, "tcp" },
-  { "inovaport2",      { NULL }, 23001, "udp" },
-  { "inovaport3",      { NULL }, 23002, "tcp" },
-  { "inovaport3",      { NULL }, 23002, "udp" },
-  { "inovaport4",      { NULL }, 23003, "tcp" },
-  { "inovaport4",      { NULL }, 23003, "udp" },
-  { "inovaport5",      { NULL }, 23004, "tcp" },
-  { "inovaport5",      { NULL }, 23004, "udp" },
-  { "inovaport6",      { NULL }, 23005, "tcp" },
-  { "inovaport6",      { NULL }, 23005, "udp" },
-  { "s102",            { NULL }, 23272, "udp" },
-  { "elxmgmt",         { NULL }, 23333, "tcp" },
-  { "elxmgmt",         { NULL }, 23333, "udp" },
-  { "novar-dbase",     { NULL }, 23400, "tcp" },
-  { "novar-dbase",     { NULL }, 23400, "udp" },
-  { "novar-alarm",     { NULL }, 23401, "tcp" },
-  { "novar-alarm",     { NULL }, 23401, "udp" },
-  { "novar-global",    { NULL }, 23402, "tcp" },
-  { "novar-global",    { NULL }, 23402, "udp" },
-  { "aequus",          { NULL }, 23456, "tcp" },
-  { "aequus-alt",      { NULL }, 23457, "tcp" },
-  { "med-ltp",         { NULL }, 24000, "tcp" },
-  { "med-ltp",         { NULL }, 24000, "udp" },
-  { "med-fsp-rx",      { NULL }, 24001, "tcp" },
-  { "med-fsp-rx",      { NULL }, 24001, "udp" },
-  { "med-fsp-tx",      { NULL }, 24002, "tcp" },
-  { "med-fsp-tx",      { NULL }, 24002, "udp" },
-  { "med-supp",        { NULL }, 24003, "tcp" },
-  { "med-supp",        { NULL }, 24003, "udp" },
-  { "med-ovw",         { NULL }, 24004, "tcp" },
-  { "med-ovw",         { NULL }, 24004, "udp" },
-  { "med-ci",          { NULL }, 24005, "tcp" },
-  { "med-ci",          { NULL }, 24005, "udp" },
-  { "med-net-svc",     { NULL }, 24006, "tcp" },
-  { "med-net-svc",     { NULL }, 24006, "udp" },
-  { "filesphere",      { NULL }, 24242, "tcp" },
-  { "filesphere",      { NULL }, 24242, "udp" },
-  { "vista-4gl",       { NULL }, 24249, "tcp" },
-  { "vista-4gl",       { NULL }, 24249, "udp" },
-  { "ild",             { NULL }, 24321, "tcp" },
-  { "ild",             { NULL }, 24321, "udp" },
-  { "intel_rci",       { NULL }, 24386, "tcp" },
-  { "intel_rci",       { NULL }, 24386, "udp" },
-  { "tonidods",        { NULL }, 24465, "tcp" },
-  { "tonidods",        { NULL }, 24465, "udp" },
-  { "binkp",           { NULL }, 24554, "tcp" },
-  { "binkp",           { NULL }, 24554, "udp" },
-  { "canditv",         { NULL }, 24676, "tcp" },
-  { "canditv",         { NULL }, 24676, "udp" },
-  { "flashfiler",      { NULL }, 24677, "tcp" },
-  { "flashfiler",      { NULL }, 24677, "udp" },
-  { "proactivate",     { NULL }, 24678, "tcp" },
-  { "proactivate",     { NULL }, 24678, "udp" },
-  { "tcc-http",        { NULL }, 24680, "tcp" },
-  { "tcc-http",        { NULL }, 24680, "udp" },
-  { "cslg",            { NULL }, 24754, "tcp" },
-  { "find",            { NULL }, 24922, "tcp" },
-  { "find",            { NULL }, 24922, "udp" },
-  { "icl-twobase1",    { NULL }, 25000, "tcp" },
-  { "icl-twobase1",    { NULL }, 25000, "udp" },
-  { "icl-twobase2",    { NULL }, 25001, "tcp" },
-  { "icl-twobase2",    { NULL }, 25001, "udp" },
-  { "icl-twobase3",    { NULL }, 25002, "tcp" },
-  { "icl-twobase3",    { NULL }, 25002, "udp" },
-  { "icl-twobase4",    { NULL }, 25003, "tcp" },
-  { "icl-twobase4",    { NULL }, 25003, "udp" },
-  { "icl-twobase5",    { NULL }, 25004, "tcp" },
-  { "icl-twobase5",    { NULL }, 25004, "udp" },
-  { "icl-twobase6",    { NULL }, 25005, "tcp" },
-  { "icl-twobase6",    { NULL }, 25005, "udp" },
-  { "icl-twobase7",    { NULL }, 25006, "tcp" },
-  { "icl-twobase7",    { NULL }, 25006, "udp" },
-  { "icl-twobase8",    { NULL }, 25007, "tcp" },
-  { "icl-twobase8",    { NULL }, 25007, "udp" },
-  { "icl-twobase9",    { NULL }, 25008, "tcp" },
-  { "icl-twobase9",    { NULL }, 25008, "udp" },
-  { "icl-twobase10",   { NULL }, 25009, "tcp" },
-  { "icl-twobase10",   { NULL }, 25009, "udp" },
-  { "rna",             { NULL }, 25471, "sctp"},
-  { "sauterdongle",    { NULL }, 25576, "tcp" },
-  { "vocaltec-hos",    { NULL }, 25793, "tcp" },
-  { "vocaltec-hos",    { NULL }, 25793, "udp" },
-  { "tasp-net",        { NULL }, 25900, "tcp" },
-  { "tasp-net",        { NULL }, 25900, "udp" },
-  { "niobserver",      { NULL }, 25901, "tcp" },
-  { "niobserver",      { NULL }, 25901, "udp" },
-  { "nilinkanalyst",   { NULL }, 25902, "tcp" },
-  { "nilinkanalyst",   { NULL }, 25902, "udp" },
-  { "niprobe",         { NULL }, 25903, "tcp" },
-  { "niprobe",         { NULL }, 25903, "udp" },
-  { "quake",           { NULL }, 26000, "tcp" },
-  { "quake",           { NULL }, 26000, "udp" },
-  { "scscp",           { NULL }, 26133, "tcp" },
-  { "scscp",           { NULL }, 26133, "udp" },
-  { "wnn6-ds",         { NULL }, 26208, "tcp" },
-  { "wnn6-ds",         { NULL }, 26208, "udp" },
-  { "ezproxy",         { NULL }, 26260, "tcp" },
-  { "ezproxy",         { NULL }, 26260, "udp" },
-  { "ezmeeting",       { NULL }, 26261, "tcp" },
-  { "ezmeeting",       { NULL }, 26261, "udp" },
-  { "k3software-svr",  { NULL }, 26262, "tcp" },
-  { "k3software-svr",  { NULL }, 26262, "udp" },
-  { "k3software-cli",  { NULL }, 26263, "tcp" },
-  { "k3software-cli",  { NULL }, 26263, "udp" },
-  { "exoline-tcp",     { NULL }, 26486, "tcp" },
-  { "exoline-udp",     { NULL }, 26486, "udp" },
-  { "exoconfig",       { NULL }, 26487, "tcp" },
-  { "exoconfig",       { NULL }, 26487, "udp" },
-  { "exonet",          { NULL }, 26489, "tcp" },
-  { "exonet",          { NULL }, 26489, "udp" },
-  { "imagepump",       { NULL }, 27345, "tcp" },
-  { "imagepump",       { NULL }, 27345, "udp" },
-  { "jesmsjc",         { NULL }, 27442, "tcp" },
-  { "jesmsjc",         { NULL }, 27442, "udp" },
-  { "kopek-httphead",  { NULL }, 27504, "tcp" },
-  { "kopek-httphead",  { NULL }, 27504, "udp" },
-  { "ars-vista",       { NULL }, 27782, "tcp" },
-  { "ars-vista",       { NULL }, 27782, "udp" },
-  { "tw-auth-key",     { NULL }, 27999, "tcp" },
-  { "tw-auth-key",     { NULL }, 27999, "udp" },
-  { "nxlmd",           { NULL }, 28000, "tcp" },
-  { "nxlmd",           { NULL }, 28000, "udp" },
-  { "pqsp",            { NULL }, 28001, "tcp" },
-  { "siemensgsm",      { NULL }, 28240, "tcp" },
-  { "siemensgsm",      { NULL }, 28240, "udp" },
-  { "sgsap",           { NULL }, 29118, "sctp"},
-  { "otmp",            { NULL }, 29167, "tcp" },
-  { "otmp",            { NULL }, 29167, "udp" },
-  { "sbcap",           { NULL }, 29168, "sctp"},
-  { "iuhsctpassoc",    { NULL }, 29169, "sctp"},
-  { "pago-services1",  { NULL }, 30001, "tcp" },
-  { "pago-services1",  { NULL }, 30001, "udp" },
-  { "pago-services2",  { NULL }, 30002, "tcp" },
-  { "pago-services2",  { NULL }, 30002, "udp" },
-  { "kingdomsonline",  { NULL }, 30260, "tcp" },
-  { "kingdomsonline",  { NULL }, 30260, "udp" },
-  { "ovobs",           { NULL }, 30999, "tcp" },
-  { "ovobs",           { NULL }, 30999, "udp" },
-  { "autotrac-acp",    { NULL }, 31020, "tcp" },
-  { "yawn",            { NULL }, 31029, "udp" },
-  { "xqosd",           { NULL }, 31416, "tcp" },
-  { "xqosd",           { NULL }, 31416, "udp" },
-  { "tetrinet",        { NULL }, 31457, "tcp" },
-  { "tetrinet",        { NULL }, 31457, "udp" },
-  { "lm-mon",          { NULL }, 31620, "tcp" },
-  { "lm-mon",          { NULL }, 31620, "udp" },
-  { "dsx_monitor",     { NULL }, 31685, "tcp" },
-  { "gamesmith-port",  { NULL }, 31765, "tcp" },
-  { "gamesmith-port",  { NULL }, 31765, "udp" },
-  { "iceedcp_tx",      { NULL }, 31948, "tcp" },
-  { "iceedcp_tx",      { NULL }, 31948, "udp" },
-  { "iceedcp_rx",      { NULL }, 31949, "tcp" },
-  { "iceedcp_rx",      { NULL }, 31949, "udp" },
-  { "iracinghelper",   { NULL }, 32034, "tcp" },
-  { "iracinghelper",   { NULL }, 32034, "udp" },
-  { "t1distproc60",    { NULL }, 32249, "tcp" },
-  { "t1distproc60",    { NULL }, 32249, "udp" },
-  { "apm-link",        { NULL }, 32483, "tcp" },
-  { "apm-link",        { NULL }, 32483, "udp" },
-  { "sec-ntb-clnt",    { NULL }, 32635, "tcp" },
-  { "sec-ntb-clnt",    { NULL }, 32635, "udp" },
-  { "DMExpress",       { NULL }, 32636, "tcp" },
-  { "DMExpress",       { NULL }, 32636, "udp" },
-  { "filenet-powsrm",  { NULL }, 32767, "tcp" },
-  { "filenet-powsrm",  { NULL }, 32767, "udp" },
-  { "filenet-tms",     { NULL }, 32768, "tcp" },
-  { "filenet-tms",     { NULL }, 32768, "udp" },
-  { "filenet-rpc",     { NULL }, 32769, "tcp" },
-  { "filenet-rpc",     { NULL }, 32769, "udp" },
-  { "filenet-nch",     { NULL }, 32770, "tcp" },
-  { "filenet-nch",     { NULL }, 32770, "udp" },
-  { "filenet-rmi",     { NULL }, 32771, "tcp" },
-  { "filenet-rmi",     { NULL }, 32771, "udp" },
-  { "filenet-pa",      { NULL }, 32772, "tcp" },
-  { "filenet-pa",      { NULL }, 32772, "udp" },
-  { "filenet-cm",      { NULL }, 32773, "tcp" },
-  { "filenet-cm",      { NULL }, 32773, "udp" },
-  { "filenet-re",      { NULL }, 32774, "tcp" },
-  { "filenet-re",      { NULL }, 32774, "udp" },
-  { "filenet-pch",     { NULL }, 32775, "tcp" },
-  { "filenet-pch",     { NULL }, 32775, "udp" },
-  { "filenet-peior",   { NULL }, 32776, "tcp" },
-  { "filenet-peior",   { NULL }, 32776, "udp" },
-  { "filenet-obrok",   { NULL }, 32777, "tcp" },
-  { "filenet-obrok",   { NULL }, 32777, "udp" },
-  { "mlsn",            { NULL }, 32801, "tcp" },
-  { "mlsn",            { NULL }, 32801, "udp" },
-  { "retp",            { NULL }, 32811, "tcp" },
-  { "idmgratm",        { NULL }, 32896, "tcp" },
-  { "idmgratm",        { NULL }, 32896, "udp" },
-  { "aurora-balaena",  { NULL }, 33123, "tcp" },
-  { "aurora-balaena",  { NULL }, 33123, "udp" },
-  { "diamondport",     { NULL }, 33331, "tcp" },
-  { "diamondport",     { NULL }, 33331, "udp" },
-  { "dgi-serv",        { NULL }, 33333, "tcp" },
-  { "traceroute",      { NULL }, 33434, "tcp" },
-  { "traceroute",      { NULL }, 33434, "udp" },
-  { "snip-slave",      { NULL }, 33656, "tcp" },
-  { "snip-slave",      { NULL }, 33656, "udp" },
-  { "turbonote-2",     { NULL }, 34249, "tcp" },
-  { "turbonote-2",     { NULL }, 34249, "udp" },
-  { "p-net-local",     { NULL }, 34378, "tcp" },
-  { "p-net-local",     { NULL }, 34378, "udp" },
-  { "p-net-remote",    { NULL }, 34379, "tcp" },
-  { "p-net-remote",    { NULL }, 34379, "udp" },
-  { "dhanalakshmi",    { NULL }, 34567, "tcp" },
-  { "profinet-rt",     { NULL }, 34962, "tcp" },
-  { "profinet-rt",     { NULL }, 34962, "udp" },
-  { "profinet-rtm",    { NULL }, 34963, "tcp" },
-  { "profinet-rtm",    { NULL }, 34963, "udp" },
-  { "profinet-cm",     { NULL }, 34964, "tcp" },
-  { "profinet-cm",     { NULL }, 34964, "udp" },
-  { "ethercat",        { NULL }, 34980, "tcp" },
-  { "ethercat",        { NULL }, 34980, "udp" },
-  { "allpeers",        { NULL }, 36001, "tcp" },
-  { "allpeers",        { NULL }, 36001, "udp" },
-  { "s1-control",      { NULL }, 36412, "sctp"},
-  { "x2-control",      { NULL }, 36422, "sctp"},
-  { "m2ap",            { NULL }, 36443, "sctp"},
-  { "m3ap",            { NULL }, 36444, "sctp"},
-  { "kastenxpipe",     { NULL }, 36865, "tcp" },
-  { "kastenxpipe",     { NULL }, 36865, "udp" },
-  { "neckar",          { NULL }, 37475, "tcp" },
-  { "neckar",          { NULL }, 37475, "udp" },
-  { "unisys-eportal",  { NULL }, 37654, "tcp" },
-  { "unisys-eportal",  { NULL }, 37654, "udp" },
-  { "galaxy7-data",    { NULL }, 38201, "tcp" },
-  { "galaxy7-data",    { NULL }, 38201, "udp" },
-  { "fairview",        { NULL }, 38202, "tcp" },
-  { "fairview",        { NULL }, 38202, "udp" },
-  { "agpolicy",        { NULL }, 38203, "tcp" },
-  { "agpolicy",        { NULL }, 38203, "udp" },
-  { "turbonote-1",     { NULL }, 39681, "tcp" },
-  { "turbonote-1",     { NULL }, 39681, "udp" },
-  { "safetynetp",      { NULL }, 40000, "tcp" },
-  { "safetynetp",      { NULL }, 40000, "udp" },
-  { "cscp",            { NULL }, 40841, "tcp" },
-  { "cscp",            { NULL }, 40841, "udp" },
-  { "csccredir",       { NULL }, 40842, "tcp" },
-  { "csccredir",       { NULL }, 40842, "udp" },
-  { "csccfirewall",    { NULL }, 40843, "tcp" },
-  { "csccfirewall",    { NULL }, 40843, "udp" },
-  { "ortec-disc",      { NULL }, 40853, "udp" },
-  { "fs-qos",          { NULL }, 41111, "tcp" },
-  { "fs-qos",          { NULL }, 41111, "udp" },
-  { "tentacle",        { NULL }, 41121, "tcp" },
-  { "crestron-cip",    { NULL }, 41794, "tcp" },
-  { "crestron-cip",    { NULL }, 41794, "udp" },
-  { "crestron-ctp",    { NULL }, 41795, "tcp" },
-  { "crestron-ctp",    { NULL }, 41795, "udp" },
-  { "candp",           { NULL }, 42508, "tcp" },
-  { "candp",           { NULL }, 42508, "udp" },
-  { "candrp",          { NULL }, 42509, "tcp" },
-  { "candrp",          { NULL }, 42509, "udp" },
-  { "caerpc",          { NULL }, 42510, "tcp" },
-  { "caerpc",          { NULL }, 42510, "udp" },
-  { "reachout",        { NULL }, 43188, "tcp" },
-  { "reachout",        { NULL }, 43188, "udp" },
-  { "ndm-agent-port",  { NULL }, 43189, "tcp" },
-  { "ndm-agent-port",  { NULL }, 43189, "udp" },
-  { "ip-provision",    { NULL }, 43190, "tcp" },
-  { "ip-provision",    { NULL }, 43190, "udp" },
-  { "noit-transport",  { NULL }, 43191, "tcp" },
-  { "ew-mgmt",         { NULL }, 43440, "tcp" },
-  { "ew-disc-cmd",     { NULL }, 43440, "udp" },
-  { "ciscocsdb",       { NULL }, 43441, "tcp" },
-  { "ciscocsdb",       { NULL }, 43441, "udp" },
-  { "pmcd",            { NULL }, 44321, "tcp" },
-  { "pmcd",            { NULL }, 44321, "udp" },
-  { "pmcdproxy",       { NULL }, 44322, "tcp" },
-  { "pmcdproxy",       { NULL }, 44322, "udp" },
-  { "pcp",             { NULL }, 44323, "udp" },
-  { "rbr-debug",       { NULL }, 44553, "tcp" },
-  { "rbr-debug",       { NULL }, 44553, "udp" },
-  { "EtherNet/IP-2",   { NULL }, 44818, "tcp" },
-  { "EtherNet/IP-2",   { NULL }, 44818, "udp" },
-  { "invision-ag",     { NULL }, 45054, "tcp" },
-  { "invision-ag",     { NULL }, 45054, "udp" },
-  { "eba",             { NULL }, 45678, "tcp" },
-  { "eba",             { NULL }, 45678, "udp" },
-  { "qdb2service",     { NULL }, 45825, "tcp" },
-  { "qdb2service",     { NULL }, 45825, "udp" },
-  { "ssr-servermgr",   { NULL }, 45966, "tcp" },
-  { "ssr-servermgr",   { NULL }, 45966, "udp" },
-  { "mediabox",        { NULL }, 46999, "tcp" },
-  { "mediabox",        { NULL }, 46999, "udp" },
-  { "mbus",            { NULL }, 47000, "tcp" },
-  { "mbus",            { NULL }, 47000, "udp" },
-  { "winrm",           { NULL }, 47001, "tcp" },
-  { "dbbrowse",        { NULL }, 47557, "tcp" },
-  { "dbbrowse",        { NULL }, 47557, "udp" },
-  { "directplaysrvr",  { NULL }, 47624, "tcp" },
-  { "directplaysrvr",  { NULL }, 47624, "udp" },
-  { "ap",              { NULL }, 47806, "tcp" },
-  { "ap",              { NULL }, 47806, "udp" },
-  { "bacnet",          { NULL }, 47808, "tcp" },
-  { "bacnet",          { NULL }, 47808, "udp" },
-  { "nimcontroller",   { NULL }, 48000, "tcp" },
-  { "nimcontroller",   { NULL }, 48000, "udp" },
-  { "nimspooler",      { NULL }, 48001, "tcp" },
-  { "nimspooler",      { NULL }, 48001, "udp" },
-  { "nimhub",          { NULL }, 48002, "tcp" },
-  { "nimhub",          { NULL }, 48002, "udp" },
-  { "nimgtw",          { NULL }, 48003, "tcp" },
-  { "nimgtw",          { NULL }, 48003, "udp" },
-  { "nimbusdb",        { NULL }, 48004, "tcp" },
-  { "nimbusdbctrl",    { NULL }, 48005, "tcp" },
-  { "3gpp-cbsp",       { NULL }, 48049, "tcp" },
-  { "isnetserv",       { NULL }, 48128, "tcp" },
-  { "isnetserv",       { NULL }, 48128, "udp" },
-  { "blp5",            { NULL }, 48129, "tcp" },
-  { "blp5",            { NULL }, 48129, "udp" },
-  { "com-bardac-dw",   { NULL }, 48556, "tcp" },
-  { "com-bardac-dw",   { NULL }, 48556, "udp" },
-  { "iqobject",        { NULL }, 48619, "tcp" },
-  { "iqobject",        { NULL }, 48619, "udp" },
+  { "blackjack",       { NULL }, 1025,  "tcp"  },
+  { "blackjack",       { NULL }, 1025,  "udp"  },
+  { "cap",             { NULL }, 1026,  "tcp"  },
+  { "cap",             { NULL }, 1026,  "udp"  },
+  { "solid-mux",       { NULL }, 1029,  "tcp"  },
+  { "solid-mux",       { NULL }, 1029,  "udp"  },
+  { "iad1",            { NULL }, 1030,  "tcp"  },
+  { "iad1",            { NULL }, 1030,  "udp"  },
+  { "iad2",            { NULL }, 1031,  "tcp"  },
+  { "iad2",            { NULL }, 1031,  "udp"  },
+  { "iad3",            { NULL }, 1032,  "tcp"  },
+  { "iad3",            { NULL }, 1032,  "udp"  },
+  { "netinfo-local",   { NULL }, 1033,  "tcp"  },
+  { "netinfo-local",   { NULL }, 1033,  "udp"  },
+  { "activesync",      { NULL }, 1034,  "tcp"  },
+  { "activesync",      { NULL }, 1034,  "udp"  },
+  { "mxxrlogin",       { NULL }, 1035,  "tcp"  },
+  { "mxxrlogin",       { NULL }, 1035,  "udp"  },
+  { "nsstp",           { NULL }, 1036,  "tcp"  },
+  { "nsstp",           { NULL }, 1036,  "udp"  },
+  { "ams",             { NULL }, 1037,  "tcp"  },
+  { "ams",             { NULL }, 1037,  "udp"  },
+  { "mtqp",            { NULL }, 1038,  "tcp"  },
+  { "mtqp",            { NULL }, 1038,  "udp"  },
+  { "sbl",             { NULL }, 1039,  "tcp"  },
+  { "sbl",             { NULL }, 1039,  "udp"  },
+  { "netarx",          { NULL }, 1040,  "tcp"  },
+  { "netarx",          { NULL }, 1040,  "udp"  },
+  { "danf-ak2",        { NULL }, 1041,  "tcp"  },
+  { "danf-ak2",        { NULL }, 1041,  "udp"  },
+  { "afrog",           { NULL }, 1042,  "tcp"  },
+  { "afrog",           { NULL }, 1042,  "udp"  },
+  { "boinc-client",    { NULL }, 1043,  "tcp"  },
+  { "boinc-client",    { NULL }, 1043,  "udp"  },
+  { "dcutility",       { NULL }, 1044,  "tcp"  },
+  { "dcutility",       { NULL }, 1044,  "udp"  },
+  { "fpitp",           { NULL }, 1045,  "tcp"  },
+  { "fpitp",           { NULL }, 1045,  "udp"  },
+  { "wfremotertm",     { NULL }, 1046,  "tcp"  },
+  { "wfremotertm",     { NULL }, 1046,  "udp"  },
+  { "neod1",           { NULL }, 1047,  "tcp"  },
+  { "neod1",           { NULL }, 1047,  "udp"  },
+  { "neod2",           { NULL }, 1048,  "tcp"  },
+  { "neod2",           { NULL }, 1048,  "udp"  },
+  { "td-postman",      { NULL }, 1049,  "tcp"  },
+  { "td-postman",      { NULL }, 1049,  "udp"  },
+  { "cma",             { NULL }, 1050,  "tcp"  },
+  { "cma",             { NULL }, 1050,  "udp"  },
+  { "optima-vnet",     { NULL }, 1051,  "tcp"  },
+  { "optima-vnet",     { NULL }, 1051,  "udp"  },
+  { "ddt",             { NULL }, 1052,  "tcp"  },
+  { "ddt",             { NULL }, 1052,  "udp"  },
+  { "remote-as",       { NULL }, 1053,  "tcp"  },
+  { "remote-as",       { NULL }, 1053,  "udp"  },
+  { "brvread",         { NULL }, 1054,  "tcp"  },
+  { "brvread",         { NULL }, 1054,  "udp"  },
+  { "ansyslmd",        { NULL }, 1055,  "tcp"  },
+  { "ansyslmd",        { NULL }, 1055,  "udp"  },
+  { "vfo",             { NULL }, 1056,  "tcp"  },
+  { "vfo",             { NULL }, 1056,  "udp"  },
+  { "startron",        { NULL }, 1057,  "tcp"  },
+  { "startron",        { NULL }, 1057,  "udp"  },
+  { "nim",             { NULL }, 1058,  "tcp"  },
+  { "nim",             { NULL }, 1058,  "udp"  },
+  { "nimreg",          { NULL }, 1059,  "tcp"  },
+  { "nimreg",          { NULL }, 1059,  "udp"  },
+  { "polestar",        { NULL }, 1060,  "tcp"  },
+  { "polestar",        { NULL }, 1060,  "udp"  },
+  { "kiosk",           { NULL }, 1061,  "tcp"  },
+  { "kiosk",           { NULL }, 1061,  "udp"  },
+  { "veracity",        { NULL }, 1062,  "tcp"  },
+  { "veracity",        { NULL }, 1062,  "udp"  },
+  { "kyoceranetdev",   { NULL }, 1063,  "tcp"  },
+  { "kyoceranetdev",   { NULL }, 1063,  "udp"  },
+  { "jstel",           { NULL }, 1064,  "tcp"  },
+  { "jstel",           { NULL }, 1064,  "udp"  },
+  { "syscomlan",       { NULL }, 1065,  "tcp"  },
+  { "syscomlan",       { NULL }, 1065,  "udp"  },
+  { "fpo-fns",         { NULL }, 1066,  "tcp"  },
+  { "fpo-fns",         { NULL }, 1066,  "udp"  },
+  { "instl_boots",     { NULL }, 1067,  "tcp"  },
+  { "instl_boots",     { NULL }, 1067,  "udp"  },
+  { "instl_bootc",     { NULL }, 1068,  "tcp"  },
+  { "instl_bootc",     { NULL }, 1068,  "udp"  },
+  { "cognex-insight",  { NULL }, 1069,  "tcp"  },
+  { "cognex-insight",  { NULL }, 1069,  "udp"  },
+  { "gmrupdateserv",   { NULL }, 1070,  "tcp"  },
+  { "gmrupdateserv",   { NULL }, 1070,  "udp"  },
+  { "bsquare-voip",    { NULL }, 1071,  "tcp"  },
+  { "bsquare-voip",    { NULL }, 1071,  "udp"  },
+  { "cardax",          { NULL }, 1072,  "tcp"  },
+  { "cardax",          { NULL }, 1072,  "udp"  },
+  { "bridgecontrol",   { NULL }, 1073,  "tcp"  },
+  { "bridgecontrol",   { NULL }, 1073,  "udp"  },
+  { "warmspotMgmt",    { NULL }, 1074,  "tcp"  },
+  { "warmspotMgmt",    { NULL }, 1074,  "udp"  },
+  { "rdrmshc",         { NULL }, 1075,  "tcp"  },
+  { "rdrmshc",         { NULL }, 1075,  "udp"  },
+  { "dab-sti-c",       { NULL }, 1076,  "tcp"  },
+  { "dab-sti-c",       { NULL }, 1076,  "udp"  },
+  { "imgames",         { NULL }, 1077,  "tcp"  },
+  { "imgames",         { NULL }, 1077,  "udp"  },
+  { "avocent-proxy",   { NULL }, 1078,  "tcp"  },
+  { "avocent-proxy",   { NULL }, 1078,  "udp"  },
+  { "asprovatalk",     { NULL }, 1079,  "tcp"  },
+  { "asprovatalk",     { NULL }, 1079,  "udp"  },
+  { "socks",           { NULL }, 1080,  "tcp"  },
+  { "socks",           { NULL }, 1080,  "udp"  },
+  { "pvuniwien",       { NULL }, 1081,  "tcp"  },
+  { "pvuniwien",       { NULL }, 1081,  "udp"  },
+  { "amt-esd-prot",    { NULL }, 1082,  "tcp"  },
+  { "amt-esd-prot",    { NULL }, 1082,  "udp"  },
+  { "ansoft-lm-1",     { NULL }, 1083,  "tcp"  },
+  { "ansoft-lm-1",     { NULL }, 1083,  "udp"  },
+  { "ansoft-lm-2",     { NULL }, 1084,  "tcp"  },
+  { "ansoft-lm-2",     { NULL }, 1084,  "udp"  },
+  { "webobjects",      { NULL }, 1085,  "tcp"  },
+  { "webobjects",      { NULL }, 1085,  "udp"  },
+  { "cplscrambler-lg", { NULL }, 1086,  "tcp"  },
+  { "cplscrambler-lg", { NULL }, 1086,  "udp"  },
+  { "cplscrambler-in", { NULL }, 1087,  "tcp"  },
+  { "cplscrambler-in", { NULL }, 1087,  "udp"  },
+  { "cplscrambler-al", { NULL }, 1088,  "tcp"  },
+  { "cplscrambler-al", { NULL }, 1088,  "udp"  },
+  { "ff-annunc",       { NULL }, 1089,  "tcp"  },
+  { "ff-annunc",       { NULL }, 1089,  "udp"  },
+  { "ff-fms",          { NULL }, 1090,  "tcp"  },
+  { "ff-fms",          { NULL }, 1090,  "udp"  },
+  { "ff-sm",           { NULL }, 1091,  "tcp"  },
+  { "ff-sm",           { NULL }, 1091,  "udp"  },
+  { "obrpd",           { NULL }, 1092,  "tcp"  },
+  { "obrpd",           { NULL }, 1092,  "udp"  },
+  { "proofd",          { NULL }, 1093,  "tcp"  },
+  { "proofd",          { NULL }, 1093,  "udp"  },
+  { "rootd",           { NULL }, 1094,  "tcp"  },
+  { "rootd",           { NULL }, 1094,  "udp"  },
+  { "nicelink",        { NULL }, 1095,  "tcp"  },
+  { "nicelink",        { NULL }, 1095,  "udp"  },
+  { "cnrprotocol",     { NULL }, 1096,  "tcp"  },
+  { "cnrprotocol",     { NULL }, 1096,  "udp"  },
+  { "sunclustermgr",   { NULL }, 1097,  "tcp"  },
+  { "sunclustermgr",   { NULL }, 1097,  "udp"  },
+  { "rmiactivation",   { NULL }, 1098,  "tcp"  },
+  { "rmiactivation",   { NULL }, 1098,  "udp"  },
+  { "rmiregistry",     { NULL }, 1099,  "tcp"  },
+  { "rmiregistry",     { NULL }, 1099,  "udp"  },
+  { "mctp",            { NULL }, 1100,  "tcp"  },
+  { "mctp",            { NULL }, 1100,  "udp"  },
+  { "pt2-discover",    { NULL }, 1101,  "tcp"  },
+  { "pt2-discover",    { NULL }, 1101,  "udp"  },
+  { "adobeserver-1",   { NULL }, 1102,  "tcp"  },
+  { "adobeserver-1",   { NULL }, 1102,  "udp"  },
+  { "adobeserver-2",   { NULL }, 1103,  "tcp"  },
+  { "adobeserver-2",   { NULL }, 1103,  "udp"  },
+  { "xrl",             { NULL }, 1104,  "tcp"  },
+  { "xrl",             { NULL }, 1104,  "udp"  },
+  { "ftranhc",         { NULL }, 1105,  "tcp"  },
+  { "ftranhc",         { NULL }, 1105,  "udp"  },
+  { "isoipsigport-1",  { NULL }, 1106,  "tcp"  },
+  { "isoipsigport-1",  { NULL }, 1106,  "udp"  },
+  { "isoipsigport-2",  { NULL }, 1107,  "tcp"  },
+  { "isoipsigport-2",  { NULL }, 1107,  "udp"  },
+  { "ratio-adp",       { NULL }, 1108,  "tcp"  },
+  { "ratio-adp",       { NULL }, 1108,  "udp"  },
+  { "webadmstart",     { NULL }, 1110,  "tcp"  },
+  { "nfsd-keepalive",  { NULL }, 1110,  "udp"  },
+  { "lmsocialserver",  { NULL }, 1111,  "tcp"  },
+  { "lmsocialserver",  { NULL }, 1111,  "udp"  },
+  { "icp",             { NULL }, 1112,  "tcp"  },
+  { "icp",             { NULL }, 1112,  "udp"  },
+  { "ltp-deepspace",   { NULL }, 1113,  "tcp"  },
+  { "ltp-deepspace",   { NULL }, 1113,  "udp"  },
+  { "mini-sql",        { NULL }, 1114,  "tcp"  },
+  { "mini-sql",        { NULL }, 1114,  "udp"  },
+  { "ardus-trns",      { NULL }, 1115,  "tcp"  },
+  { "ardus-trns",      { NULL }, 1115,  "udp"  },
+  { "ardus-cntl",      { NULL }, 1116,  "tcp"  },
+  { "ardus-cntl",      { NULL }, 1116,  "udp"  },
+  { "ardus-mtrns",     { NULL }, 1117,  "tcp"  },
+  { "ardus-mtrns",     { NULL }, 1117,  "udp"  },
+  { "sacred",          { NULL }, 1118,  "tcp"  },
+  { "sacred",          { NULL }, 1118,  "udp"  },
+  { "bnetgame",        { NULL }, 1119,  "tcp"  },
+  { "bnetgame",        { NULL }, 1119,  "udp"  },
+  { "bnetfile",        { NULL }, 1120,  "tcp"  },
+  { "bnetfile",        { NULL }, 1120,  "udp"  },
+  { "rmpp",            { NULL }, 1121,  "tcp"  },
+  { "rmpp",            { NULL }, 1121,  "udp"  },
+  { "availant-mgr",    { NULL }, 1122,  "tcp"  },
+  { "availant-mgr",    { NULL }, 1122,  "udp"  },
+  { "murray",          { NULL }, 1123,  "tcp"  },
+  { "murray",          { NULL }, 1123,  "udp"  },
+  { "hpvmmcontrol",    { NULL }, 1124,  "tcp"  },
+  { "hpvmmcontrol",    { NULL }, 1124,  "udp"  },
+  { "hpvmmagent",      { NULL }, 1125,  "tcp"  },
+  { "hpvmmagent",      { NULL }, 1125,  "udp"  },
+  { "hpvmmdata",       { NULL }, 1126,  "tcp"  },
+  { "hpvmmdata",       { NULL }, 1126,  "udp"  },
+  { "kwdb-commn",      { NULL }, 1127,  "tcp"  },
+  { "kwdb-commn",      { NULL }, 1127,  "udp"  },
+  { "saphostctrl",     { NULL }, 1128,  "tcp"  },
+  { "saphostctrl",     { NULL }, 1128,  "udp"  },
+  { "saphostctrls",    { NULL }, 1129,  "tcp"  },
+  { "saphostctrls",    { NULL }, 1129,  "udp"  },
+  { "casp",            { NULL }, 1130,  "tcp"  },
+  { "casp",            { NULL }, 1130,  "udp"  },
+  { "caspssl",         { NULL }, 1131,  "tcp"  },
+  { "caspssl",         { NULL }, 1131,  "udp"  },
+  { "kvm-via-ip",      { NULL }, 1132,  "tcp"  },
+  { "kvm-via-ip",      { NULL }, 1132,  "udp"  },
+  { "dfn",             { NULL }, 1133,  "tcp"  },
+  { "dfn",             { NULL }, 1133,  "udp"  },
+  { "aplx",            { NULL }, 1134,  "tcp"  },
+  { "aplx",            { NULL }, 1134,  "udp"  },
+  { "omnivision",      { NULL }, 1135,  "tcp"  },
+  { "omnivision",      { NULL }, 1135,  "udp"  },
+  { "hhb-gateway",     { NULL }, 1136,  "tcp"  },
+  { "hhb-gateway",     { NULL }, 1136,  "udp"  },
+  { "trim",            { NULL }, 1137,  "tcp"  },
+  { "trim",            { NULL }, 1137,  "udp"  },
+  { "encrypted_admin", { NULL }, 1138,  "tcp"  },
+  { "encrypted_admin", { NULL }, 1138,  "udp"  },
+  { "evm",             { NULL }, 1139,  "tcp"  },
+  { "evm",             { NULL }, 1139,  "udp"  },
+  { "autonoc",         { NULL }, 1140,  "tcp"  },
+  { "autonoc",         { NULL }, 1140,  "udp"  },
+  { "mxomss",          { NULL }, 1141,  "tcp"  },
+  { "mxomss",          { NULL }, 1141,  "udp"  },
+  { "edtools",         { NULL }, 1142,  "tcp"  },
+  { "edtools",         { NULL }, 1142,  "udp"  },
+  { "imyx",            { NULL }, 1143,  "tcp"  },
+  { "imyx",            { NULL }, 1143,  "udp"  },
+  { "fuscript",        { NULL }, 1144,  "tcp"  },
+  { "fuscript",        { NULL }, 1144,  "udp"  },
+  { "x9-icue",         { NULL }, 1145,  "tcp"  },
+  { "x9-icue",         { NULL }, 1145,  "udp"  },
+  { "audit-transfer",  { NULL }, 1146,  "tcp"  },
+  { "audit-transfer",  { NULL }, 1146,  "udp"  },
+  { "capioverlan",     { NULL }, 1147,  "tcp"  },
+  { "capioverlan",     { NULL }, 1147,  "udp"  },
+  { "elfiq-repl",      { NULL }, 1148,  "tcp"  },
+  { "elfiq-repl",      { NULL }, 1148,  "udp"  },
+  { "bvtsonar",        { NULL }, 1149,  "tcp"  },
+  { "bvtsonar",        { NULL }, 1149,  "udp"  },
+  { "blaze",           { NULL }, 1150,  "tcp"  },
+  { "blaze",           { NULL }, 1150,  "udp"  },
+  { "unizensus",       { NULL }, 1151,  "tcp"  },
+  { "unizensus",       { NULL }, 1151,  "udp"  },
+  { "winpoplanmess",   { NULL }, 1152,  "tcp"  },
+  { "winpoplanmess",   { NULL }, 1152,  "udp"  },
+  { "c1222-acse",      { NULL }, 1153,  "tcp"  },
+  { "c1222-acse",      { NULL }, 1153,  "udp"  },
+  { "resacommunity",   { NULL }, 1154,  "tcp"  },
+  { "resacommunity",   { NULL }, 1154,  "udp"  },
+  { "nfa",             { NULL }, 1155,  "tcp"  },
+  { "nfa",             { NULL }, 1155,  "udp"  },
+  { "iascontrol-oms",  { NULL }, 1156,  "tcp"  },
+  { "iascontrol-oms",  { NULL }, 1156,  "udp"  },
+  { "iascontrol",      { NULL }, 1157,  "tcp"  },
+  { "iascontrol",      { NULL }, 1157,  "udp"  },
+  { "dbcontrol-oms",   { NULL }, 1158,  "tcp"  },
+  { "dbcontrol-oms",   { NULL }, 1158,  "udp"  },
+  { "oracle-oms",      { NULL }, 1159,  "tcp"  },
+  { "oracle-oms",      { NULL }, 1159,  "udp"  },
+  { "olsv",            { NULL }, 1160,  "tcp"  },
+  { "olsv",            { NULL }, 1160,  "udp"  },
+  { "health-polling",  { NULL }, 1161,  "tcp"  },
+  { "health-polling",  { NULL }, 1161,  "udp"  },
+  { "health-trap",     { NULL }, 1162,  "tcp"  },
+  { "health-trap",     { NULL }, 1162,  "udp"  },
+  { "sddp",            { NULL }, 1163,  "tcp"  },
+  { "sddp",            { NULL }, 1163,  "udp"  },
+  { "qsm-proxy",       { NULL }, 1164,  "tcp"  },
+  { "qsm-proxy",       { NULL }, 1164,  "udp"  },
+  { "qsm-gui",         { NULL }, 1165,  "tcp"  },
+  { "qsm-gui",         { NULL }, 1165,  "udp"  },
+  { "qsm-remote",      { NULL }, 1166,  "tcp"  },
+  { "qsm-remote",      { NULL }, 1166,  "udp"  },
+  { "cisco-ipsla",     { NULL }, 1167,  "tcp"  },
+  { "cisco-ipsla",     { NULL }, 1167,  "udp"  },
+  { "cisco-ipsla",     { NULL }, 1167,  "sctp" },
+  { "vchat",           { NULL }, 1168,  "tcp"  },
+  { "vchat",           { NULL }, 1168,  "udp"  },
+  { "tripwire",        { NULL }, 1169,  "tcp"  },
+  { "tripwire",        { NULL }, 1169,  "udp"  },
+  { "atc-lm",          { NULL }, 1170,  "tcp"  },
+  { "atc-lm",          { NULL }, 1170,  "udp"  },
+  { "atc-appserver",   { NULL }, 1171,  "tcp"  },
+  { "atc-appserver",   { NULL }, 1171,  "udp"  },
+  { "dnap",            { NULL }, 1172,  "tcp"  },
+  { "dnap",            { NULL }, 1172,  "udp"  },
+  { "d-cinema-rrp",    { NULL }, 1173,  "tcp"  },
+  { "d-cinema-rrp",    { NULL }, 1173,  "udp"  },
+  { "fnet-remote-ui",  { NULL }, 1174,  "tcp"  },
+  { "fnet-remote-ui",  { NULL }, 1174,  "udp"  },
+  { "dossier",         { NULL }, 1175,  "tcp"  },
+  { "dossier",         { NULL }, 1175,  "udp"  },
+  { "indigo-server",   { NULL }, 1176,  "tcp"  },
+  { "indigo-server",   { NULL }, 1176,  "udp"  },
+  { "dkmessenger",     { NULL }, 1177,  "tcp"  },
+  { "dkmessenger",     { NULL }, 1177,  "udp"  },
+  { "sgi-storman",     { NULL }, 1178,  "tcp"  },
+  { "sgi-storman",     { NULL }, 1178,  "udp"  },
+  { "b2n",             { NULL }, 1179,  "tcp"  },
+  { "b2n",             { NULL }, 1179,  "udp"  },
+  { "mc-client",       { NULL }, 1180,  "tcp"  },
+  { "mc-client",       { NULL }, 1180,  "udp"  },
+  { "3comnetman",      { NULL }, 1181,  "tcp"  },
+  { "3comnetman",      { NULL }, 1181,  "udp"  },
+  { "accelenet",       { NULL }, 1182,  "tcp"  },
+  { "accelenet-data",  { NULL }, 1182,  "udp"  },
+  { "llsurfup-http",   { NULL }, 1183,  "tcp"  },
+  { "llsurfup-http",   { NULL }, 1183,  "udp"  },
+  { "llsurfup-https",  { NULL }, 1184,  "tcp"  },
+  { "llsurfup-https",  { NULL }, 1184,  "udp"  },
+  { "catchpole",       { NULL }, 1185,  "tcp"  },
+  { "catchpole",       { NULL }, 1185,  "udp"  },
+  { "mysql-cluster",   { NULL }, 1186,  "tcp"  },
+  { "mysql-cluster",   { NULL }, 1186,  "udp"  },
+  { "alias",           { NULL }, 1187,  "tcp"  },
+  { "alias",           { NULL }, 1187,  "udp"  },
+  { "hp-webadmin",     { NULL }, 1188,  "tcp"  },
+  { "hp-webadmin",     { NULL }, 1188,  "udp"  },
+  { "unet",            { NULL }, 1189,  "tcp"  },
+  { "unet",            { NULL }, 1189,  "udp"  },
+  { "commlinx-avl",    { NULL }, 1190,  "tcp"  },
+  { "commlinx-avl",    { NULL }, 1190,  "udp"  },
+  { "gpfs",            { NULL }, 1191,  "tcp"  },
+  { "gpfs",            { NULL }, 1191,  "udp"  },
+  { "caids-sensor",    { NULL }, 1192,  "tcp"  },
+  { "caids-sensor",    { NULL }, 1192,  "udp"  },
+  { "fiveacross",      { NULL }, 1193,  "tcp"  },
+  { "fiveacross",      { NULL }, 1193,  "udp"  },
+  { "openvpn",         { NULL }, 1194,  "tcp"  },
+  { "openvpn",         { NULL }, 1194,  "udp"  },
+  { "rsf-1",           { NULL }, 1195,  "tcp"  },
+  { "rsf-1",           { NULL }, 1195,  "udp"  },
+  { "netmagic",        { NULL }, 1196,  "tcp"  },
+  { "netmagic",        { NULL }, 1196,  "udp"  },
+  { "carrius-rshell",  { NULL }, 1197,  "tcp"  },
+  { "carrius-rshell",  { NULL }, 1197,  "udp"  },
+  { "cajo-discovery",  { NULL }, 1198,  "tcp"  },
+  { "cajo-discovery",  { NULL }, 1198,  "udp"  },
+  { "dmidi",           { NULL }, 1199,  "tcp"  },
+  { "dmidi",           { NULL }, 1199,  "udp"  },
+  { "scol",            { NULL }, 1200,  "tcp"  },
+  { "scol",            { NULL }, 1200,  "udp"  },
+  { "nucleus-sand",    { NULL }, 1201,  "tcp"  },
+  { "nucleus-sand",    { NULL }, 1201,  "udp"  },
+  { "caiccipc",        { NULL }, 1202,  "tcp"  },
+  { "caiccipc",        { NULL }, 1202,  "udp"  },
+  { "ssslic-mgr",      { NULL }, 1203,  "tcp"  },
+  { "ssslic-mgr",      { NULL }, 1203,  "udp"  },
+  { "ssslog-mgr",      { NULL }, 1204,  "tcp"  },
+  { "ssslog-mgr",      { NULL }, 1204,  "udp"  },
+  { "accord-mgc",      { NULL }, 1205,  "tcp"  },
+  { "accord-mgc",      { NULL }, 1205,  "udp"  },
+  { "anthony-data",    { NULL }, 1206,  "tcp"  },
+  { "anthony-data",    { NULL }, 1206,  "udp"  },
+  { "metasage",        { NULL }, 1207,  "tcp"  },
+  { "metasage",        { NULL }, 1207,  "udp"  },
+  { "seagull-ais",     { NULL }, 1208,  "tcp"  },
+  { "seagull-ais",     { NULL }, 1208,  "udp"  },
+  { "ipcd3",           { NULL }, 1209,  "tcp"  },
+  { "ipcd3",           { NULL }, 1209,  "udp"  },
+  { "eoss",            { NULL }, 1210,  "tcp"  },
+  { "eoss",            { NULL }, 1210,  "udp"  },
+  { "groove-dpp",      { NULL }, 1211,  "tcp"  },
+  { "groove-dpp",      { NULL }, 1211,  "udp"  },
+  { "lupa",            { NULL }, 1212,  "tcp"  },
+  { "lupa",            { NULL }, 1212,  "udp"  },
+  { "mpc-lifenet",     { NULL }, 1213,  "tcp"  },
+  { "mpc-lifenet",     { NULL }, 1213,  "udp"  },
+  { "kazaa",           { NULL }, 1214,  "tcp"  },
+  { "kazaa",           { NULL }, 1214,  "udp"  },
+  { "scanstat-1",      { NULL }, 1215,  "tcp"  },
+  { "scanstat-1",      { NULL }, 1215,  "udp"  },
+  { "etebac5",         { NULL }, 1216,  "tcp"  },
+  { "etebac5",         { NULL }, 1216,  "udp"  },
+  { "hpss-ndapi",      { NULL }, 1217,  "tcp"  },
+  { "hpss-ndapi",      { NULL }, 1217,  "udp"  },
+  { "aeroflight-ads",  { NULL }, 1218,  "tcp"  },
+  { "aeroflight-ads",  { NULL }, 1218,  "udp"  },
+  { "aeroflight-ret",  { NULL }, 1219,  "tcp"  },
+  { "aeroflight-ret",  { NULL }, 1219,  "udp"  },
+  { "qt-serveradmin",  { NULL }, 1220,  "tcp"  },
+  { "qt-serveradmin",  { NULL }, 1220,  "udp"  },
+  { "sweetware-apps",  { NULL }, 1221,  "tcp"  },
+  { "sweetware-apps",  { NULL }, 1221,  "udp"  },
+  { "nerv",            { NULL }, 1222,  "tcp"  },
+  { "nerv",            { NULL }, 1222,  "udp"  },
+  { "tgp",             { NULL }, 1223,  "tcp"  },
+  { "tgp",             { NULL }, 1223,  "udp"  },
+  { "vpnz",            { NULL }, 1224,  "tcp"  },
+  { "vpnz",            { NULL }, 1224,  "udp"  },
+  { "slinkysearch",    { NULL }, 1225,  "tcp"  },
+  { "slinkysearch",    { NULL }, 1225,  "udp"  },
+  { "stgxfws",         { NULL }, 1226,  "tcp"  },
+  { "stgxfws",         { NULL }, 1226,  "udp"  },
+  { "dns2go",          { NULL }, 1227,  "tcp"  },
+  { "dns2go",          { NULL }, 1227,  "udp"  },
+  { "florence",        { NULL }, 1228,  "tcp"  },
+  { "florence",        { NULL }, 1228,  "udp"  },
+  { "zented",          { NULL }, 1229,  "tcp"  },
+  { "zented",          { NULL }, 1229,  "udp"  },
+  { "periscope",       { NULL }, 1230,  "tcp"  },
+  { "periscope",       { NULL }, 1230,  "udp"  },
+  { "menandmice-lpm",  { NULL }, 1231,  "tcp"  },
+  { "menandmice-lpm",  { NULL }, 1231,  "udp"  },
+  { "univ-appserver",  { NULL }, 1233,  "tcp"  },
+  { "univ-appserver",  { NULL }, 1233,  "udp"  },
+  { "search-agent",    { NULL }, 1234,  "tcp"  },
+  { "search-agent",    { NULL }, 1234,  "udp"  },
+  { "mosaicsyssvc1",   { NULL }, 1235,  "tcp"  },
+  { "mosaicsyssvc1",   { NULL }, 1235,  "udp"  },
+  { "bvcontrol",       { NULL }, 1236,  "tcp"  },
+  { "bvcontrol",       { NULL }, 1236,  "udp"  },
+  { "tsdos390",        { NULL }, 1237,  "tcp"  },
+  { "tsdos390",        { NULL }, 1237,  "udp"  },
+  { "hacl-qs",         { NULL }, 1238,  "tcp"  },
+  { "hacl-qs",         { NULL }, 1238,  "udp"  },
+  { "nmsd",            { NULL }, 1239,  "tcp"  },
+  { "nmsd",            { NULL }, 1239,  "udp"  },
+  { "instantia",       { NULL }, 1240,  "tcp"  },
+  { "instantia",       { NULL }, 1240,  "udp"  },
+  { "nessus",          { NULL }, 1241,  "tcp"  },
+  { "nessus",          { NULL }, 1241,  "udp"  },
+  { "nmasoverip",      { NULL }, 1242,  "tcp"  },
+  { "nmasoverip",      { NULL }, 1242,  "udp"  },
+  { "serialgateway",   { NULL }, 1243,  "tcp"  },
+  { "serialgateway",   { NULL }, 1243,  "udp"  },
+  { "isbconference1",  { NULL }, 1244,  "tcp"  },
+  { "isbconference1",  { NULL }, 1244,  "udp"  },
+  { "isbconference2",  { NULL }, 1245,  "tcp"  },
+  { "isbconference2",  { NULL }, 1245,  "udp"  },
+  { "payrouter",       { NULL }, 1246,  "tcp"  },
+  { "payrouter",       { NULL }, 1246,  "udp"  },
+  { "visionpyramid",   { NULL }, 1247,  "tcp"  },
+  { "visionpyramid",   { NULL }, 1247,  "udp"  },
+  { "hermes",          { NULL }, 1248,  "tcp"  },
+  { "hermes",          { NULL }, 1248,  "udp"  },
+  { "mesavistaco",     { NULL }, 1249,  "tcp"  },
+  { "mesavistaco",     { NULL }, 1249,  "udp"  },
+  { "swldy-sias",      { NULL }, 1250,  "tcp"  },
+  { "swldy-sias",      { NULL }, 1250,  "udp"  },
+  { "servergraph",     { NULL }, 1251,  "tcp"  },
+  { "servergraph",     { NULL }, 1251,  "udp"  },
+  { "bspne-pcc",       { NULL }, 1252,  "tcp"  },
+  { "bspne-pcc",       { NULL }, 1252,  "udp"  },
+  { "q55-pcc",         { NULL }, 1253,  "tcp"  },
+  { "q55-pcc",         { NULL }, 1253,  "udp"  },
+  { "de-noc",          { NULL }, 1254,  "tcp"  },
+  { "de-noc",          { NULL }, 1254,  "udp"  },
+  { "de-cache-query",  { NULL }, 1255,  "tcp"  },
+  { "de-cache-query",  { NULL }, 1255,  "udp"  },
+  { "de-server",       { NULL }, 1256,  "tcp"  },
+  { "de-server",       { NULL }, 1256,  "udp"  },
+  { "shockwave2",      { NULL }, 1257,  "tcp"  },
+  { "shockwave2",      { NULL }, 1257,  "udp"  },
+  { "opennl",          { NULL }, 1258,  "tcp"  },
+  { "opennl",          { NULL }, 1258,  "udp"  },
+  { "opennl-voice",    { NULL }, 1259,  "tcp"  },
+  { "opennl-voice",    { NULL }, 1259,  "udp"  },
+  { "ibm-ssd",         { NULL }, 1260,  "tcp"  },
+  { "ibm-ssd",         { NULL }, 1260,  "udp"  },
+  { "mpshrsv",         { NULL }, 1261,  "tcp"  },
+  { "mpshrsv",         { NULL }, 1261,  "udp"  },
+  { "qnts-orb",        { NULL }, 1262,  "tcp"  },
+  { "qnts-orb",        { NULL }, 1262,  "udp"  },
+  { "dka",             { NULL }, 1263,  "tcp"  },
+  { "dka",             { NULL }, 1263,  "udp"  },
+  { "prat",            { NULL }, 1264,  "tcp"  },
+  { "prat",            { NULL }, 1264,  "udp"  },
+  { "dssiapi",         { NULL }, 1265,  "tcp"  },
+  { "dssiapi",         { NULL }, 1265,  "udp"  },
+  { "dellpwrappks",    { NULL }, 1266,  "tcp"  },
+  { "dellpwrappks",    { NULL }, 1266,  "udp"  },
+  { "epc",             { NULL }, 1267,  "tcp"  },
+  { "epc",             { NULL }, 1267,  "udp"  },
+  { "propel-msgsys",   { NULL }, 1268,  "tcp"  },
+  { "propel-msgsys",   { NULL }, 1268,  "udp"  },
+  { "watilapp",        { NULL }, 1269,  "tcp"  },
+  { "watilapp",        { NULL }, 1269,  "udp"  },
+  { "opsmgr",          { NULL }, 1270,  "tcp"  },
+  { "opsmgr",          { NULL }, 1270,  "udp"  },
+  { "excw",            { NULL }, 1271,  "tcp"  },
+  { "excw",            { NULL }, 1271,  "udp"  },
+  { "cspmlockmgr",     { NULL }, 1272,  "tcp"  },
+  { "cspmlockmgr",     { NULL }, 1272,  "udp"  },
+  { "emc-gateway",     { NULL }, 1273,  "tcp"  },
+  { "emc-gateway",     { NULL }, 1273,  "udp"  },
+  { "t1distproc",      { NULL }, 1274,  "tcp"  },
+  { "t1distproc",      { NULL }, 1274,  "udp"  },
+  { "ivcollector",     { NULL }, 1275,  "tcp"  },
+  { "ivcollector",     { NULL }, 1275,  "udp"  },
+  { "ivmanager",       { NULL }, 1276,  "tcp"  },
+  { "ivmanager",       { NULL }, 1276,  "udp"  },
+  { "miva-mqs",        { NULL }, 1277,  "tcp"  },
+  { "miva-mqs",        { NULL }, 1277,  "udp"  },
+  { "dellwebadmin-1",  { NULL }, 1278,  "tcp"  },
+  { "dellwebadmin-1",  { NULL }, 1278,  "udp"  },
+  { "dellwebadmin-2",  { NULL }, 1279,  "tcp"  },
+  { "dellwebadmin-2",  { NULL }, 1279,  "udp"  },
+  { "pictrography",    { NULL }, 1280,  "tcp"  },
+  { "pictrography",    { NULL }, 1280,  "udp"  },
+  { "healthd",         { NULL }, 1281,  "tcp"  },
+  { "healthd",         { NULL }, 1281,  "udp"  },
+  { "emperion",        { NULL }, 1282,  "tcp"  },
+  { "emperion",        { NULL }, 1282,  "udp"  },
+  { "productinfo",     { NULL }, 1283,  "tcp"  },
+  { "productinfo",     { NULL }, 1283,  "udp"  },
+  { "iee-qfx",         { NULL }, 1284,  "tcp"  },
+  { "iee-qfx",         { NULL }, 1284,  "udp"  },
+  { "neoiface",        { NULL }, 1285,  "tcp"  },
+  { "neoiface",        { NULL }, 1285,  "udp"  },
+  { "netuitive",       { NULL }, 1286,  "tcp"  },
+  { "netuitive",       { NULL }, 1286,  "udp"  },
+  { "routematch",      { NULL }, 1287,  "tcp"  },
+  { "routematch",      { NULL }, 1287,  "udp"  },
+  { "navbuddy",        { NULL }, 1288,  "tcp"  },
+  { "navbuddy",        { NULL }, 1288,  "udp"  },
+  { "jwalkserver",     { NULL }, 1289,  "tcp"  },
+  { "jwalkserver",     { NULL }, 1289,  "udp"  },
+  { "winjaserver",     { NULL }, 1290,  "tcp"  },
+  { "winjaserver",     { NULL }, 1290,  "udp"  },
+  { "seagulllms",      { NULL }, 1291,  "tcp"  },
+  { "seagulllms",      { NULL }, 1291,  "udp"  },
+  { "dsdn",            { NULL }, 1292,  "tcp"  },
+  { "dsdn",            { NULL }, 1292,  "udp"  },
+  { "pkt-krb-ipsec",   { NULL }, 1293,  "tcp"  },
+  { "pkt-krb-ipsec",   { NULL }, 1293,  "udp"  },
+  { "cmmdriver",       { NULL }, 1294,  "tcp"  },
+  { "cmmdriver",       { NULL }, 1294,  "udp"  },
+  { "ehtp",            { NULL }, 1295,  "tcp"  },
+  { "ehtp",            { NULL }, 1295,  "udp"  },
+  { "dproxy",          { NULL }, 1296,  "tcp"  },
+  { "dproxy",          { NULL }, 1296,  "udp"  },
+  { "sdproxy",         { NULL }, 1297,  "tcp"  },
+  { "sdproxy",         { NULL }, 1297,  "udp"  },
+  { "lpcp",            { NULL }, 1298,  "tcp"  },
+  { "lpcp",            { NULL }, 1298,  "udp"  },
+  { "hp-sci",          { NULL }, 1299,  "tcp"  },
+  { "hp-sci",          { NULL }, 1299,  "udp"  },
+  { "h323hostcallsc",  { NULL }, 1300,  "tcp"  },
+  { "h323hostcallsc",  { NULL }, 1300,  "udp"  },
+  { "ci3-software-1",  { NULL }, 1301,  "tcp"  },
+  { "ci3-software-1",  { NULL }, 1301,  "udp"  },
+  { "ci3-software-2",  { NULL }, 1302,  "tcp"  },
+  { "ci3-software-2",  { NULL }, 1302,  "udp"  },
+  { "sftsrv",          { NULL }, 1303,  "tcp"  },
+  { "sftsrv",          { NULL }, 1303,  "udp"  },
+  { "boomerang",       { NULL }, 1304,  "tcp"  },
+  { "boomerang",       { NULL }, 1304,  "udp"  },
+  { "pe-mike",         { NULL }, 1305,  "tcp"  },
+  { "pe-mike",         { NULL }, 1305,  "udp"  },
+  { "re-conn-proto",   { NULL }, 1306,  "tcp"  },
+  { "re-conn-proto",   { NULL }, 1306,  "udp"  },
+  { "pacmand",         { NULL }, 1307,  "tcp"  },
+  { "pacmand",         { NULL }, 1307,  "udp"  },
+  { "odsi",            { NULL }, 1308,  "tcp"  },
+  { "odsi",            { NULL }, 1308,  "udp"  },
+  { "jtag-server",     { NULL }, 1309,  "tcp"  },
+  { "jtag-server",     { NULL }, 1309,  "udp"  },
+  { "husky",           { NULL }, 1310,  "tcp"  },
+  { "husky",           { NULL }, 1310,  "udp"  },
+  { "rxmon",           { NULL }, 1311,  "tcp"  },
+  { "rxmon",           { NULL }, 1311,  "udp"  },
+  { "sti-envision",    { NULL }, 1312,  "tcp"  },
+  { "sti-envision",    { NULL }, 1312,  "udp"  },
+  { "bmc_patroldb",    { NULL }, 1313,  "tcp"  },
+  { "bmc_patroldb",    { NULL }, 1313,  "udp"  },
+  { "pdps",            { NULL }, 1314,  "tcp"  },
+  { "pdps",            { NULL }, 1314,  "udp"  },
+  { "els",             { NULL }, 1315,  "tcp"  },
+  { "els",             { NULL }, 1315,  "udp"  },
+  { "exbit-escp",      { NULL }, 1316,  "tcp"  },
+  { "exbit-escp",      { NULL }, 1316,  "udp"  },
+  { "vrts-ipcserver",  { NULL }, 1317,  "tcp"  },
+  { "vrts-ipcserver",  { NULL }, 1317,  "udp"  },
+  { "krb5gatekeeper",  { NULL }, 1318,  "tcp"  },
+  { "krb5gatekeeper",  { NULL }, 1318,  "udp"  },
+  { "amx-icsp",        { NULL }, 1319,  "tcp"  },
+  { "amx-icsp",        { NULL }, 1319,  "udp"  },
+  { "amx-axbnet",      { NULL }, 1320,  "tcp"  },
+  { "amx-axbnet",      { NULL }, 1320,  "udp"  },
+  { "pip",             { NULL }, 1321,  "tcp"  },
+  { "pip",             { NULL }, 1321,  "udp"  },
+  { "novation",        { NULL }, 1322,  "tcp"  },
+  { "novation",        { NULL }, 1322,  "udp"  },
+  { "brcd",            { NULL }, 1323,  "tcp"  },
+  { "brcd",            { NULL }, 1323,  "udp"  },
+  { "delta-mcp",       { NULL }, 1324,  "tcp"  },
+  { "delta-mcp",       { NULL }, 1324,  "udp"  },
+  { "dx-instrument",   { NULL }, 1325,  "tcp"  },
+  { "dx-instrument",   { NULL }, 1325,  "udp"  },
+  { "wimsic",          { NULL }, 1326,  "tcp"  },
+  { "wimsic",          { NULL }, 1326,  "udp"  },
+  { "ultrex",          { NULL }, 1327,  "tcp"  },
+  { "ultrex",          { NULL }, 1327,  "udp"  },
+  { "ewall",           { NULL }, 1328,  "tcp"  },
+  { "ewall",           { NULL }, 1328,  "udp"  },
+  { "netdb-export",    { NULL }, 1329,  "tcp"  },
+  { "netdb-export",    { NULL }, 1329,  "udp"  },
+  { "streetperfect",   { NULL }, 1330,  "tcp"  },
+  { "streetperfect",   { NULL }, 1330,  "udp"  },
+  { "intersan",        { NULL }, 1331,  "tcp"  },
+  { "intersan",        { NULL }, 1331,  "udp"  },
+  { "pcia-rxp-b",      { NULL }, 1332,  "tcp"  },
+  { "pcia-rxp-b",      { NULL }, 1332,  "udp"  },
+  { "passwrd-policy",  { NULL }, 1333,  "tcp"  },
+  { "passwrd-policy",  { NULL }, 1333,  "udp"  },
+  { "writesrv",        { NULL }, 1334,  "tcp"  },
+  { "writesrv",        { NULL }, 1334,  "udp"  },
+  { "digital-notary",  { NULL }, 1335,  "tcp"  },
+  { "digital-notary",  { NULL }, 1335,  "udp"  },
+  { "ischat",          { NULL }, 1336,  "tcp"  },
+  { "ischat",          { NULL }, 1336,  "udp"  },
+  { "menandmice-dns",  { NULL }, 1337,  "tcp"  },
+  { "menandmice-dns",  { NULL }, 1337,  "udp"  },
+  { "wmc-log-svc",     { NULL }, 1338,  "tcp"  },
+  { "wmc-log-svc",     { NULL }, 1338,  "udp"  },
+  { "kjtsiteserver",   { NULL }, 1339,  "tcp"  },
+  { "kjtsiteserver",   { NULL }, 1339,  "udp"  },
+  { "naap",            { NULL }, 1340,  "tcp"  },
+  { "naap",            { NULL }, 1340,  "udp"  },
+  { "qubes",           { NULL }, 1341,  "tcp"  },
+  { "qubes",           { NULL }, 1341,  "udp"  },
+  { "esbroker",        { NULL }, 1342,  "tcp"  },
+  { "esbroker",        { NULL }, 1342,  "udp"  },
+  { "re101",           { NULL }, 1343,  "tcp"  },
+  { "re101",           { NULL }, 1343,  "udp"  },
+  { "icap",            { NULL }, 1344,  "tcp"  },
+  { "icap",            { NULL }, 1344,  "udp"  },
+  { "vpjp",            { NULL }, 1345,  "tcp"  },
+  { "vpjp",            { NULL }, 1345,  "udp"  },
+  { "alta-ana-lm",     { NULL }, 1346,  "tcp"  },
+  { "alta-ana-lm",     { NULL }, 1346,  "udp"  },
+  { "bbn-mmc",         { NULL }, 1347,  "tcp"  },
+  { "bbn-mmc",         { NULL }, 1347,  "udp"  },
+  { "bbn-mmx",         { NULL }, 1348,  "tcp"  },
+  { "bbn-mmx",         { NULL }, 1348,  "udp"  },
+  { "sbook",           { NULL }, 1349,  "tcp"  },
+  { "sbook",           { NULL }, 1349,  "udp"  },
+  { "editbench",       { NULL }, 1350,  "tcp"  },
+  { "editbench",       { NULL }, 1350,  "udp"  },
+  { "equationbuilder", { NULL }, 1351,  "tcp"  },
+  { "equationbuilder", { NULL }, 1351,  "udp"  },
+  { "lotusnote",       { NULL }, 1352,  "tcp"  },
+  { "lotusnote",       { NULL }, 1352,  "udp"  },
+  { "relief",          { NULL }, 1353,  "tcp"  },
+  { "relief",          { NULL }, 1353,  "udp"  },
+  { "XSIP-network",    { NULL }, 1354,  "tcp"  },
+  { "XSIP-network",    { NULL }, 1354,  "udp"  },
+  { "intuitive-edge",  { NULL }, 1355,  "tcp"  },
+  { "intuitive-edge",  { NULL }, 1355,  "udp"  },
+  { "cuillamartin",    { NULL }, 1356,  "tcp"  },
+  { "cuillamartin",    { NULL }, 1356,  "udp"  },
+  { "pegboard",        { NULL }, 1357,  "tcp"  },
+  { "pegboard",        { NULL }, 1357,  "udp"  },
+  { "connlcli",        { NULL }, 1358,  "tcp"  },
+  { "connlcli",        { NULL }, 1358,  "udp"  },
+  { "ftsrv",           { NULL }, 1359,  "tcp"  },
+  { "ftsrv",           { NULL }, 1359,  "udp"  },
+  { "mimer",           { NULL }, 1360,  "tcp"  },
+  { "mimer",           { NULL }, 1360,  "udp"  },
+  { "linx",            { NULL }, 1361,  "tcp"  },
+  { "linx",            { NULL }, 1361,  "udp"  },
+  { "timeflies",       { NULL }, 1362,  "tcp"  },
+  { "timeflies",       { NULL }, 1362,  "udp"  },
+  { "ndm-requester",   { NULL }, 1363,  "tcp"  },
+  { "ndm-requester",   { NULL }, 1363,  "udp"  },
+  { "ndm-server",      { NULL }, 1364,  "tcp"  },
+  { "ndm-server",      { NULL }, 1364,  "udp"  },
+  { "adapt-sna",       { NULL }, 1365,  "tcp"  },
+  { "adapt-sna",       { NULL }, 1365,  "udp"  },
+  { "netware-csp",     { NULL }, 1366,  "tcp"  },
+  { "netware-csp",     { NULL }, 1366,  "udp"  },
+  { "dcs",             { NULL }, 1367,  "tcp"  },
+  { "dcs",             { NULL }, 1367,  "udp"  },
+  { "screencast",      { NULL }, 1368,  "tcp"  },
+  { "screencast",      { NULL }, 1368,  "udp"  },
+  { "gv-us",           { NULL }, 1369,  "tcp"  },
+  { "gv-us",           { NULL }, 1369,  "udp"  },
+  { "us-gv",           { NULL }, 1370,  "tcp"  },
+  { "us-gv",           { NULL }, 1370,  "udp"  },
+  { "fc-cli",          { NULL }, 1371,  "tcp"  },
+  { "fc-cli",          { NULL }, 1371,  "udp"  },
+  { "fc-ser",          { NULL }, 1372,  "tcp"  },
+  { "fc-ser",          { NULL }, 1372,  "udp"  },
+  { "chromagrafx",     { NULL }, 1373,  "tcp"  },
+  { "chromagrafx",     { NULL }, 1373,  "udp"  },
+  { "molly",           { NULL }, 1374,  "tcp"  },
+  { "molly",           { NULL }, 1374,  "udp"  },
+  { "bytex",           { NULL }, 1375,  "tcp"  },
+  { "bytex",           { NULL }, 1375,  "udp"  },
+  { "ibm-pps",         { NULL }, 1376,  "tcp"  },
+  { "ibm-pps",         { NULL }, 1376,  "udp"  },
+  { "cichlid",         { NULL }, 1377,  "tcp"  },
+  { "cichlid",         { NULL }, 1377,  "udp"  },
+  { "elan",            { NULL }, 1378,  "tcp"  },
+  { "elan",            { NULL }, 1378,  "udp"  },
+  { "dbreporter",      { NULL }, 1379,  "tcp"  },
+  { "dbreporter",      { NULL }, 1379,  "udp"  },
+  { "telesis-licman",  { NULL }, 1380,  "tcp"  },
+  { "telesis-licman",  { NULL }, 1380,  "udp"  },
+  { "apple-licman",    { NULL }, 1381,  "tcp"  },
+  { "apple-licman",    { NULL }, 1381,  "udp"  },
+  { "udt_os",          { NULL }, 1382,  "tcp"  },
+  { "udt_os",          { NULL }, 1382,  "udp"  },
+  { "gwha",            { NULL }, 1383,  "tcp"  },
+  { "gwha",            { NULL }, 1383,  "udp"  },
+  { "os-licman",       { NULL }, 1384,  "tcp"  },
+  { "os-licman",       { NULL }, 1384,  "udp"  },
+  { "atex_elmd",       { NULL }, 1385,  "tcp"  },
+  { "atex_elmd",       { NULL }, 1385,  "udp"  },
+  { "checksum",        { NULL }, 1386,  "tcp"  },
+  { "checksum",        { NULL }, 1386,  "udp"  },
+  { "cadsi-lm",        { NULL }, 1387,  "tcp"  },
+  { "cadsi-lm",        { NULL }, 1387,  "udp"  },
+  { "objective-dbc",   { NULL }, 1388,  "tcp"  },
+  { "objective-dbc",   { NULL }, 1388,  "udp"  },
+  { "iclpv-dm",        { NULL }, 1389,  "tcp"  },
+  { "iclpv-dm",        { NULL }, 1389,  "udp"  },
+  { "iclpv-sc",        { NULL }, 1390,  "tcp"  },
+  { "iclpv-sc",        { NULL }, 1390,  "udp"  },
+  { "iclpv-sas",       { NULL }, 1391,  "tcp"  },
+  { "iclpv-sas",       { NULL }, 1391,  "udp"  },
+  { "iclpv-pm",        { NULL }, 1392,  "tcp"  },
+  { "iclpv-pm",        { NULL }, 1392,  "udp"  },
+  { "iclpv-nls",       { NULL }, 1393,  "tcp"  },
+  { "iclpv-nls",       { NULL }, 1393,  "udp"  },
+  { "iclpv-nlc",       { NULL }, 1394,  "tcp"  },
+  { "iclpv-nlc",       { NULL }, 1394,  "udp"  },
+  { "iclpv-wsm",       { NULL }, 1395,  "tcp"  },
+  { "iclpv-wsm",       { NULL }, 1395,  "udp"  },
+  { "dvl-activemail",  { NULL }, 1396,  "tcp"  },
+  { "dvl-activemail",  { NULL }, 1396,  "udp"  },
+  { "audio-activmail", { NULL }, 1397,  "tcp"  },
+  { "audio-activmail", { NULL }, 1397,  "udp"  },
+  { "video-activmail", { NULL }, 1398,  "tcp"  },
+  { "video-activmail", { NULL }, 1398,  "udp"  },
+  { "cadkey-licman",   { NULL }, 1399,  "tcp"  },
+  { "cadkey-licman",   { NULL }, 1399,  "udp"  },
+  { "cadkey-tablet",   { NULL }, 1400,  "tcp"  },
+  { "cadkey-tablet",   { NULL }, 1400,  "udp"  },
+  { "goldleaf-licman", { NULL }, 1401,  "tcp"  },
+  { "goldleaf-licman", { NULL }, 1401,  "udp"  },
+  { "prm-sm-np",       { NULL }, 1402,  "tcp"  },
+  { "prm-sm-np",       { NULL }, 1402,  "udp"  },
+  { "prm-nm-np",       { NULL }, 1403,  "tcp"  },
+  { "prm-nm-np",       { NULL }, 1403,  "udp"  },
+  { "igi-lm",          { NULL }, 1404,  "tcp"  },
+  { "igi-lm",          { NULL }, 1404,  "udp"  },
+  { "ibm-res",         { NULL }, 1405,  "tcp"  },
+  { "ibm-res",         { NULL }, 1405,  "udp"  },
+  { "netlabs-lm",      { NULL }, 1406,  "tcp"  },
+  { "netlabs-lm",      { NULL }, 1406,  "udp"  },
+  { "dbsa-lm",         { NULL }, 1407,  "tcp"  },
+  { "dbsa-lm",         { NULL }, 1407,  "udp"  },
+  { "sophia-lm",       { NULL }, 1408,  "tcp"  },
+  { "sophia-lm",       { NULL }, 1408,  "udp"  },
+  { "here-lm",         { NULL }, 1409,  "tcp"  },
+  { "here-lm",         { NULL }, 1409,  "udp"  },
+  { "hiq",             { NULL }, 1410,  "tcp"  },
+  { "hiq",             { NULL }, 1410,  "udp"  },
+  { "af",              { NULL }, 1411,  "tcp"  },
+  { "af",              { NULL }, 1411,  "udp"  },
+  { "innosys",         { NULL }, 1412,  "tcp"  },
+  { "innosys",         { NULL }, 1412,  "udp"  },
+  { "innosys-acl",     { NULL }, 1413,  "tcp"  },
+  { "innosys-acl",     { NULL }, 1413,  "udp"  },
+  { "ibm-mqseries",    { NULL }, 1414,  "tcp"  },
+  { "ibm-mqseries",    { NULL }, 1414,  "udp"  },
+  { "dbstar",          { NULL }, 1415,  "tcp"  },
+  { "dbstar",          { NULL }, 1415,  "udp"  },
+  { "novell-lu6.2",    { NULL }, 1416,  "tcp"  },
+  { "novell-lu6.2",    { NULL }, 1416,  "udp"  },
+  { "timbuktu-srv1",   { NULL }, 1417,  "tcp"  },
+  { "timbuktu-srv1",   { NULL }, 1417,  "udp"  },
+  { "timbuktu-srv2",   { NULL }, 1418,  "tcp"  },
+  { "timbuktu-srv2",   { NULL }, 1418,  "udp"  },
+  { "timbuktu-srv3",   { NULL }, 1419,  "tcp"  },
+  { "timbuktu-srv3",   { NULL }, 1419,  "udp"  },
+  { "timbuktu-srv4",   { NULL }, 1420,  "tcp"  },
+  { "timbuktu-srv4",   { NULL }, 1420,  "udp"  },
+  { "gandalf-lm",      { NULL }, 1421,  "tcp"  },
+  { "gandalf-lm",      { NULL }, 1421,  "udp"  },
+  { "autodesk-lm",     { NULL }, 1422,  "tcp"  },
+  { "autodesk-lm",     { NULL }, 1422,  "udp"  },
+  { "essbase",         { NULL }, 1423,  "tcp"  },
+  { "essbase",         { NULL }, 1423,  "udp"  },
+  { "hybrid",          { NULL }, 1424,  "tcp"  },
+  { "hybrid",          { NULL }, 1424,  "udp"  },
+  { "zion-lm",         { NULL }, 1425,  "tcp"  },
+  { "zion-lm",         { NULL }, 1425,  "udp"  },
+  { "sais",            { NULL }, 1426,  "tcp"  },
+  { "sais",            { NULL }, 1426,  "udp"  },
+  { "mloadd",          { NULL }, 1427,  "tcp"  },
+  { "mloadd",          { NULL }, 1427,  "udp"  },
+  { "informatik-lm",   { NULL }, 1428,  "tcp"  },
+  { "informatik-lm",   { NULL }, 1428,  "udp"  },
+  { "nms",             { NULL }, 1429,  "tcp"  },
+  { "nms",             { NULL }, 1429,  "udp"  },
+  { "tpdu",            { NULL }, 1430,  "tcp"  },
+  { "tpdu",            { NULL }, 1430,  "udp"  },
+  { "rgtp",            { NULL }, 1431,  "tcp"  },
+  { "rgtp",            { NULL }, 1431,  "udp"  },
+  { "blueberry-lm",    { NULL }, 1432,  "tcp"  },
+  { "blueberry-lm",    { NULL }, 1432,  "udp"  },
+  { "ms-sql-s",        { NULL }, 1433,  "tcp"  },
+  { "ms-sql-s",        { NULL }, 1433,  "udp"  },
+  { "ms-sql-m",        { NULL }, 1434,  "tcp"  },
+  { "ms-sql-m",        { NULL }, 1434,  "udp"  },
+  { "ibm-cics",        { NULL }, 1435,  "tcp"  },
+  { "ibm-cics",        { NULL }, 1435,  "udp"  },
+  { "saism",           { NULL }, 1436,  "tcp"  },
+  { "saism",           { NULL }, 1436,  "udp"  },
+  { "tabula",          { NULL }, 1437,  "tcp"  },
+  { "tabula",          { NULL }, 1437,  "udp"  },
+  { "eicon-server",    { NULL }, 1438,  "tcp"  },
+  { "eicon-server",    { NULL }, 1438,  "udp"  },
+  { "eicon-x25",       { NULL }, 1439,  "tcp"  },
+  { "eicon-x25",       { NULL }, 1439,  "udp"  },
+  { "eicon-slp",       { NULL }, 1440,  "tcp"  },
+  { "eicon-slp",       { NULL }, 1440,  "udp"  },
+  { "cadis-1",         { NULL }, 1441,  "tcp"  },
+  { "cadis-1",         { NULL }, 1441,  "udp"  },
+  { "cadis-2",         { NULL }, 1442,  "tcp"  },
+  { "cadis-2",         { NULL }, 1442,  "udp"  },
+  { "ies-lm",          { NULL }, 1443,  "tcp"  },
+  { "ies-lm",          { NULL }, 1443,  "udp"  },
+  { "marcam-lm",       { NULL }, 1444,  "tcp"  },
+  { "marcam-lm",       { NULL }, 1444,  "udp"  },
+  { "proxima-lm",      { NULL }, 1445,  "tcp"  },
+  { "proxima-lm",      { NULL }, 1445,  "udp"  },
+  { "ora-lm",          { NULL }, 1446,  "tcp"  },
+  { "ora-lm",          { NULL }, 1446,  "udp"  },
+  { "apri-lm",         { NULL }, 1447,  "tcp"  },
+  { "apri-lm",         { NULL }, 1447,  "udp"  },
+  { "oc-lm",           { NULL }, 1448,  "tcp"  },
+  { "oc-lm",           { NULL }, 1448,  "udp"  },
+  { "peport",          { NULL }, 1449,  "tcp"  },
+  { "peport",          { NULL }, 1449,  "udp"  },
+  { "dwf",             { NULL }, 1450,  "tcp"  },
+  { "dwf",             { NULL }, 1450,  "udp"  },
+  { "infoman",         { NULL }, 1451,  "tcp"  },
+  { "infoman",         { NULL }, 1451,  "udp"  },
+  { "gtegsc-lm",       { NULL }, 1452,  "tcp"  },
+  { "gtegsc-lm",       { NULL }, 1452,  "udp"  },
+  { "genie-lm",        { NULL }, 1453,  "tcp"  },
+  { "genie-lm",        { NULL }, 1453,  "udp"  },
+  { "interhdl_elmd",   { NULL }, 1454,  "tcp"  },
+  { "interhdl_elmd",   { NULL }, 1454,  "udp"  },
+  { "esl-lm",          { NULL }, 1455,  "tcp"  },
+  { "esl-lm",          { NULL }, 1455,  "udp"  },
+  { "dca",             { NULL }, 1456,  "tcp"  },
+  { "dca",             { NULL }, 1456,  "udp"  },
+  { "valisys-lm",      { NULL }, 1457,  "tcp"  },
+  { "valisys-lm",      { NULL }, 1457,  "udp"  },
+  { "nrcabq-lm",       { NULL }, 1458,  "tcp"  },
+  { "nrcabq-lm",       { NULL }, 1458,  "udp"  },
+  { "proshare1",       { NULL }, 1459,  "tcp"  },
+  { "proshare1",       { NULL }, 1459,  "udp"  },
+  { "proshare2",       { NULL }, 1460,  "tcp"  },
+  { "proshare2",       { NULL }, 1460,  "udp"  },
+  { "ibm_wrless_lan",  { NULL }, 1461,  "tcp"  },
+  { "ibm_wrless_lan",  { NULL }, 1461,  "udp"  },
+  { "world-lm",        { NULL }, 1462,  "tcp"  },
+  { "world-lm",        { NULL }, 1462,  "udp"  },
+  { "nucleus",         { NULL }, 1463,  "tcp"  },
+  { "nucleus",         { NULL }, 1463,  "udp"  },
+  { "msl_lmd",         { NULL }, 1464,  "tcp"  },
+  { "msl_lmd",         { NULL }, 1464,  "udp"  },
+  { "pipes",           { NULL }, 1465,  "tcp"  },
+  { "pipes",           { NULL }, 1465,  "udp"  },
+  { "oceansoft-lm",    { NULL }, 1466,  "tcp"  },
+  { "oceansoft-lm",    { NULL }, 1466,  "udp"  },
+  { "csdmbase",        { NULL }, 1467,  "tcp"  },
+  { "csdmbase",        { NULL }, 1467,  "udp"  },
+  { "csdm",            { NULL }, 1468,  "tcp"  },
+  { "csdm",            { NULL }, 1468,  "udp"  },
+  { "aal-lm",          { NULL }, 1469,  "tcp"  },
+  { "aal-lm",          { NULL }, 1469,  "udp"  },
+  { "uaiact",          { NULL }, 1470,  "tcp"  },
+  { "uaiact",          { NULL }, 1470,  "udp"  },
+  { "csdmbase",        { NULL }, 1471,  "tcp"  },
+  { "csdmbase",        { NULL }, 1471,  "udp"  },
+  { "csdm",            { NULL }, 1472,  "tcp"  },
+  { "csdm",            { NULL }, 1472,  "udp"  },
+  { "openmath",        { NULL }, 1473,  "tcp"  },
+  { "openmath",        { NULL }, 1473,  "udp"  },
+  { "telefinder",      { NULL }, 1474,  "tcp"  },
+  { "telefinder",      { NULL }, 1474,  "udp"  },
+  { "taligent-lm",     { NULL }, 1475,  "tcp"  },
+  { "taligent-lm",     { NULL }, 1475,  "udp"  },
+  { "clvm-cfg",        { NULL }, 1476,  "tcp"  },
+  { "clvm-cfg",        { NULL }, 1476,  "udp"  },
+  { "ms-sna-server",   { NULL }, 1477,  "tcp"  },
+  { "ms-sna-server",   { NULL }, 1477,  "udp"  },
+  { "ms-sna-base",     { NULL }, 1478,  "tcp"  },
+  { "ms-sna-base",     { NULL }, 1478,  "udp"  },
+  { "dberegister",     { NULL }, 1479,  "tcp"  },
+  { "dberegister",     { NULL }, 1479,  "udp"  },
+  { "pacerforum",      { NULL }, 1480,  "tcp"  },
+  { "pacerforum",      { NULL }, 1480,  "udp"  },
+  { "airs",            { NULL }, 1481,  "tcp"  },
+  { "airs",            { NULL }, 1481,  "udp"  },
+  { "miteksys-lm",     { NULL }, 1482,  "tcp"  },
+  { "miteksys-lm",     { NULL }, 1482,  "udp"  },
+  { "afs",             { NULL }, 1483,  "tcp"  },
+  { "afs",             { NULL }, 1483,  "udp"  },
+  { "confluent",       { NULL }, 1484,  "tcp"  },
+  { "confluent",       { NULL }, 1484,  "udp"  },
+  { "lansource",       { NULL }, 1485,  "tcp"  },
+  { "lansource",       { NULL }, 1485,  "udp"  },
+  { "nms_topo_serv",   { NULL }, 1486,  "tcp"  },
+  { "nms_topo_serv",   { NULL }, 1486,  "udp"  },
+  { "localinfosrvr",   { NULL }, 1487,  "tcp"  },
+  { "localinfosrvr",   { NULL }, 1487,  "udp"  },
+  { "docstor",         { NULL }, 1488,  "tcp"  },
+  { "docstor",         { NULL }, 1488,  "udp"  },
+  { "dmdocbroker",     { NULL }, 1489,  "tcp"  },
+  { "dmdocbroker",     { NULL }, 1489,  "udp"  },
+  { "insitu-conf",     { NULL }, 1490,  "tcp"  },
+  { "insitu-conf",     { NULL }, 1490,  "udp"  },
+  { "stone-design-1",  { NULL }, 1492,  "tcp"  },
+  { "stone-design-1",  { NULL }, 1492,  "udp"  },
+  { "netmap_lm",       { NULL }, 1493,  "tcp"  },
+  { "netmap_lm",       { NULL }, 1493,  "udp"  },
+  { "ica",             { NULL }, 1494,  "tcp"  },
+  { "ica",             { NULL }, 1494,  "udp"  },
+  { "cvc",             { NULL }, 1495,  "tcp"  },
+  { "cvc",             { NULL }, 1495,  "udp"  },
+  { "liberty-lm",      { NULL }, 1496,  "tcp"  },
+  { "liberty-lm",      { NULL }, 1496,  "udp"  },
+  { "rfx-lm",          { NULL }, 1497,  "tcp"  },
+  { "rfx-lm",          { NULL }, 1497,  "udp"  },
+  { "sybase-sqlany",   { NULL }, 1498,  "tcp"  },
+  { "sybase-sqlany",   { NULL }, 1498,  "udp"  },
+  { "fhc",             { NULL }, 1499,  "tcp"  },
+  { "fhc",             { NULL }, 1499,  "udp"  },
+  { "vlsi-lm",         { NULL }, 1500,  "tcp"  },
+  { "vlsi-lm",         { NULL }, 1500,  "udp"  },
+  { "saiscm",          { NULL }, 1501,  "tcp"  },
+  { "saiscm",          { NULL }, 1501,  "udp"  },
+  { "shivadiscovery",  { NULL }, 1502,  "tcp"  },
+  { "shivadiscovery",  { NULL }, 1502,  "udp"  },
+  { "imtc-mcs",        { NULL }, 1503,  "tcp"  },
+  { "imtc-mcs",        { NULL }, 1503,  "udp"  },
+  { "evb-elm",         { NULL }, 1504,  "tcp"  },
+  { "evb-elm",         { NULL }, 1504,  "udp"  },
+  { "funkproxy",       { NULL }, 1505,  "tcp"  },
+  { "funkproxy",       { NULL }, 1505,  "udp"  },
+  { "utcd",            { NULL }, 1506,  "tcp"  },
+  { "utcd",            { NULL }, 1506,  "udp"  },
+  { "symplex",         { NULL }, 1507,  "tcp"  },
+  { "symplex",         { NULL }, 1507,  "udp"  },
+  { "diagmond",        { NULL }, 1508,  "tcp"  },
+  { "diagmond",        { NULL }, 1508,  "udp"  },
+  { "robcad-lm",       { NULL }, 1509,  "tcp"  },
+  { "robcad-lm",       { NULL }, 1509,  "udp"  },
+  { "mvx-lm",          { NULL }, 1510,  "tcp"  },
+  { "mvx-lm",          { NULL }, 1510,  "udp"  },
+  { "3l-l1",           { NULL }, 1511,  "tcp"  },
+  { "3l-l1",           { NULL }, 1511,  "udp"  },
+  { "wins",            { NULL }, 1512,  "tcp"  },
+  { "wins",            { NULL }, 1512,  "udp"  },
+  { "fujitsu-dtc",     { NULL }, 1513,  "tcp"  },
+  { "fujitsu-dtc",     { NULL }, 1513,  "udp"  },
+  { "fujitsu-dtcns",   { NULL }, 1514,  "tcp"  },
+  { "fujitsu-dtcns",   { NULL }, 1514,  "udp"  },
+  { "ifor-protocol",   { NULL }, 1515,  "tcp"  },
+  { "ifor-protocol",   { NULL }, 1515,  "udp"  },
+  { "vpad",            { NULL }, 1516,  "tcp"  },
+  { "vpad",            { NULL }, 1516,  "udp"  },
+  { "vpac",            { NULL }, 1517,  "tcp"  },
+  { "vpac",            { NULL }, 1517,  "udp"  },
+  { "vpvd",            { NULL }, 1518,  "tcp"  },
+  { "vpvd",            { NULL }, 1518,  "udp"  },
+  { "vpvc",            { NULL }, 1519,  "tcp"  },
+  { "vpvc",            { NULL }, 1519,  "udp"  },
+  { "atm-zip-office",  { NULL }, 1520,  "tcp"  },
+  { "atm-zip-office",  { NULL }, 1520,  "udp"  },
+  { "ncube-lm",        { NULL }, 1521,  "tcp"  },
+  { "ncube-lm",        { NULL }, 1521,  "udp"  },
+  { "ricardo-lm",      { NULL }, 1522,  "tcp"  },
+  { "ricardo-lm",      { NULL }, 1522,  "udp"  },
+  { "cichild-lm",      { NULL }, 1523,  "tcp"  },
+  { "cichild-lm",      { NULL }, 1523,  "udp"  },
+  { "ingreslock",      { NULL }, 1524,  "tcp"  },
+  { "ingreslock",      { NULL }, 1524,  "udp"  },
+  { "orasrv",          { NULL }, 1525,  "tcp"  },
+  { "orasrv",          { NULL }, 1525,  "udp"  },
+  { "prospero-np",     { NULL }, 1525,  "tcp"  },
+  { "prospero-np",     { NULL }, 1525,  "udp"  },
+  { "pdap-np",         { NULL }, 1526,  "tcp"  },
+  { "pdap-np",         { NULL }, 1526,  "udp"  },
+  { "tlisrv",          { NULL }, 1527,  "tcp"  },
+  { "tlisrv",          { NULL }, 1527,  "udp"  },
+  { "coauthor",        { NULL }, 1529,  "tcp"  },
+  { "coauthor",        { NULL }, 1529,  "udp"  },
+  { "rap-service",     { NULL }, 1530,  "tcp"  },
+  { "rap-service",     { NULL }, 1530,  "udp"  },
+  { "rap-listen",      { NULL }, 1531,  "tcp"  },
+  { "rap-listen",      { NULL }, 1531,  "udp"  },
+  { "miroconnect",     { NULL }, 1532,  "tcp"  },
+  { "miroconnect",     { NULL }, 1532,  "udp"  },
+  { "virtual-places",  { NULL }, 1533,  "tcp"  },
+  { "virtual-places",  { NULL }, 1533,  "udp"  },
+  { "micromuse-lm",    { NULL }, 1534,  "tcp"  },
+  { "micromuse-lm",    { NULL }, 1534,  "udp"  },
+  { "ampr-info",       { NULL }, 1535,  "tcp"  },
+  { "ampr-info",       { NULL }, 1535,  "udp"  },
+  { "ampr-inter",      { NULL }, 1536,  "tcp"  },
+  { "ampr-inter",      { NULL }, 1536,  "udp"  },
+  { "sdsc-lm",         { NULL }, 1537,  "tcp"  },
+  { "sdsc-lm",         { NULL }, 1537,  "udp"  },
+  { "3ds-lm",          { NULL }, 1538,  "tcp"  },
+  { "3ds-lm",          { NULL }, 1538,  "udp"  },
+  { "intellistor-lm",  { NULL }, 1539,  "tcp"  },
+  { "intellistor-lm",  { NULL }, 1539,  "udp"  },
+  { "rds",             { NULL }, 1540,  "tcp"  },
+  { "rds",             { NULL }, 1540,  "udp"  },
+  { "rds2",            { NULL }, 1541,  "tcp"  },
+  { "rds2",            { NULL }, 1541,  "udp"  },
+  { "gridgen-elmd",    { NULL }, 1542,  "tcp"  },
+  { "gridgen-elmd",    { NULL }, 1542,  "udp"  },
+  { "simba-cs",        { NULL }, 1543,  "tcp"  },
+  { "simba-cs",        { NULL }, 1543,  "udp"  },
+  { "aspeclmd",        { NULL }, 1544,  "tcp"  },
+  { "aspeclmd",        { NULL }, 1544,  "udp"  },
+  { "vistium-share",   { NULL }, 1545,  "tcp"  },
+  { "vistium-share",   { NULL }, 1545,  "udp"  },
+  { "abbaccuray",      { NULL }, 1546,  "tcp"  },
+  { "abbaccuray",      { NULL }, 1546,  "udp"  },
+  { "laplink",         { NULL }, 1547,  "tcp"  },
+  { "laplink",         { NULL }, 1547,  "udp"  },
+  { "axon-lm",         { NULL }, 1548,  "tcp"  },
+  { "axon-lm",         { NULL }, 1548,  "udp"  },
+  { "shivahose",       { NULL }, 1549,  "tcp"  },
+  { "shivasound",      { NULL }, 1549,  "udp"  },
+  { "3m-image-lm",     { NULL }, 1550,  "tcp"  },
+  { "3m-image-lm",     { NULL }, 1550,  "udp"  },
+  { "hecmtl-db",       { NULL }, 1551,  "tcp"  },
+  { "hecmtl-db",       { NULL }, 1551,  "udp"  },
+  { "pciarray",        { NULL }, 1552,  "tcp"  },
+  { "pciarray",        { NULL }, 1552,  "udp"  },
+  { "sna-cs",          { NULL }, 1553,  "tcp"  },
+  { "sna-cs",          { NULL }, 1553,  "udp"  },
+  { "caci-lm",         { NULL }, 1554,  "tcp"  },
+  { "caci-lm",         { NULL }, 1554,  "udp"  },
+  { "livelan",         { NULL }, 1555,  "tcp"  },
+  { "livelan",         { NULL }, 1555,  "udp"  },
+  { "veritas_pbx",     { NULL }, 1556,  "tcp"  },
+  { "veritas_pbx",     { NULL }, 1556,  "udp"  },
+  { "arbortext-lm",    { NULL }, 1557,  "tcp"  },
+  { "arbortext-lm",    { NULL }, 1557,  "udp"  },
+  { "xingmpeg",        { NULL }, 1558,  "tcp"  },
+  { "xingmpeg",        { NULL }, 1558,  "udp"  },
+  { "web2host",        { NULL }, 1559,  "tcp"  },
+  { "web2host",        { NULL }, 1559,  "udp"  },
+  { "asci-val",        { NULL }, 1560,  "tcp"  },
+  { "asci-val",        { NULL }, 1560,  "udp"  },
+  { "facilityview",    { NULL }, 1561,  "tcp"  },
+  { "facilityview",    { NULL }, 1561,  "udp"  },
+  { "pconnectmgr",     { NULL }, 1562,  "tcp"  },
+  { "pconnectmgr",     { NULL }, 1562,  "udp"  },
+  { "cadabra-lm",      { NULL }, 1563,  "tcp"  },
+  { "cadabra-lm",      { NULL }, 1563,  "udp"  },
+  { "pay-per-view",    { NULL }, 1564,  "tcp"  },
+  { "pay-per-view",    { NULL }, 1564,  "udp"  },
+  { "winddlb",         { NULL }, 1565,  "tcp"  },
+  { "winddlb",         { NULL }, 1565,  "udp"  },
+  { "corelvideo",      { NULL }, 1566,  "tcp"  },
+  { "corelvideo",      { NULL }, 1566,  "udp"  },
+  { "jlicelmd",        { NULL }, 1567,  "tcp"  },
+  { "jlicelmd",        { NULL }, 1567,  "udp"  },
+  { "tsspmap",         { NULL }, 1568,  "tcp"  },
+  { "tsspmap",         { NULL }, 1568,  "udp"  },
+  { "ets",             { NULL }, 1569,  "tcp"  },
+  { "ets",             { NULL }, 1569,  "udp"  },
+  { "orbixd",          { NULL }, 1570,  "tcp"  },
+  { "orbixd",          { NULL }, 1570,  "udp"  },
+  { "rdb-dbs-disp",    { NULL }, 1571,  "tcp"  },
+  { "rdb-dbs-disp",    { NULL }, 1571,  "udp"  },
+  { "chip-lm",         { NULL }, 1572,  "tcp"  },
+  { "chip-lm",         { NULL }, 1572,  "udp"  },
+  { "itscomm-ns",      { NULL }, 1573,  "tcp"  },
+  { "itscomm-ns",      { NULL }, 1573,  "udp"  },
+  { "mvel-lm",         { NULL }, 1574,  "tcp"  },
+  { "mvel-lm",         { NULL }, 1574,  "udp"  },
+  { "oraclenames",     { NULL }, 1575,  "tcp"  },
+  { "oraclenames",     { NULL }, 1575,  "udp"  },
+  { "moldflow-lm",     { NULL }, 1576,  "tcp"  },
+  { "moldflow-lm",     { NULL }, 1576,  "udp"  },
+  { "hypercube-lm",    { NULL }, 1577,  "tcp"  },
+  { "hypercube-lm",    { NULL }, 1577,  "udp"  },
+  { "jacobus-lm",      { NULL }, 1578,  "tcp"  },
+  { "jacobus-lm",      { NULL }, 1578,  "udp"  },
+  { "ioc-sea-lm",      { NULL }, 1579,  "tcp"  },
+  { "ioc-sea-lm",      { NULL }, 1579,  "udp"  },
+  { "tn-tl-r1",        { NULL }, 1580,  "tcp"  },
+  { "tn-tl-r2",        { NULL }, 1580,  "udp"  },
+  { "mil-2045-47001",  { NULL }, 1581,  "tcp"  },
+  { "mil-2045-47001",  { NULL }, 1581,  "udp"  },
+  { "msims",           { NULL }, 1582,  "tcp"  },
+  { "msims",           { NULL }, 1582,  "udp"  },
+  { "simbaexpress",    { NULL }, 1583,  "tcp"  },
+  { "simbaexpress",    { NULL }, 1583,  "udp"  },
+  { "tn-tl-fd2",       { NULL }, 1584,  "tcp"  },
+  { "tn-tl-fd2",       { NULL }, 1584,  "udp"  },
+  { "intv",            { NULL }, 1585,  "tcp"  },
+  { "intv",            { NULL }, 1585,  "udp"  },
+  { "ibm-abtact",      { NULL }, 1586,  "tcp"  },
+  { "ibm-abtact",      { NULL }, 1586,  "udp"  },
+  { "pra_elmd",        { NULL }, 1587,  "tcp"  },
+  { "pra_elmd",        { NULL }, 1587,  "udp"  },
+  { "triquest-lm",     { NULL }, 1588,  "tcp"  },
+  { "triquest-lm",     { NULL }, 1588,  "udp"  },
+  { "vqp",             { NULL }, 1589,  "tcp"  },
+  { "vqp",             { NULL }, 1589,  "udp"  },
+  { "gemini-lm",       { NULL }, 1590,  "tcp"  },
+  { "gemini-lm",       { NULL }, 1590,  "udp"  },
+  { "ncpm-pm",         { NULL }, 1591,  "tcp"  },
+  { "ncpm-pm",         { NULL }, 1591,  "udp"  },
+  { "commonspace",     { NULL }, 1592,  "tcp"  },
+  { "commonspace",     { NULL }, 1592,  "udp"  },
+  { "mainsoft-lm",     { NULL }, 1593,  "tcp"  },
+  { "mainsoft-lm",     { NULL }, 1593,  "udp"  },
+  { "sixtrak",         { NULL }, 1594,  "tcp"  },
+  { "sixtrak",         { NULL }, 1594,  "udp"  },
+  { "radio",           { NULL }, 1595,  "tcp"  },
+  { "radio",           { NULL }, 1595,  "udp"  },
+  { "radio-sm",        { NULL }, 1596,  "tcp"  },
+  { "radio-bc",        { NULL }, 1596,  "udp"  },
+  { "orbplus-iiop",    { NULL }, 1597,  "tcp"  },
+  { "orbplus-iiop",    { NULL }, 1597,  "udp"  },
+  { "picknfs",         { NULL }, 1598,  "tcp"  },
+  { "picknfs",         { NULL }, 1598,  "udp"  },
+  { "simbaservices",   { NULL }, 1599,  "tcp"  },
+  { "simbaservices",   { NULL }, 1599,  "udp"  },
+  { "issd",            { NULL }, 1600,  "tcp"  },
+  { "issd",            { NULL }, 1600,  "udp"  },
+  { "aas",             { NULL }, 1601,  "tcp"  },
+  { "aas",             { NULL }, 1601,  "udp"  },
+  { "inspect",         { NULL }, 1602,  "tcp"  },
+  { "inspect",         { NULL }, 1602,  "udp"  },
+  { "picodbc",         { NULL }, 1603,  "tcp"  },
+  { "picodbc",         { NULL }, 1603,  "udp"  },
+  { "icabrowser",      { NULL }, 1604,  "tcp"  },
+  { "icabrowser",      { NULL }, 1604,  "udp"  },
+  { "slp",             { NULL }, 1605,  "tcp"  },
+  { "slp",             { NULL }, 1605,  "udp"  },
+  { "slm-api",         { NULL }, 1606,  "tcp"  },
+  { "slm-api",         { NULL }, 1606,  "udp"  },
+  { "stt",             { NULL }, 1607,  "tcp"  },
+  { "stt",             { NULL }, 1607,  "udp"  },
+  { "smart-lm",        { NULL }, 1608,  "tcp"  },
+  { "smart-lm",        { NULL }, 1608,  "udp"  },
+  { "isysg-lm",        { NULL }, 1609,  "tcp"  },
+  { "isysg-lm",        { NULL }, 1609,  "udp"  },
+  { "taurus-wh",       { NULL }, 1610,  "tcp"  },
+  { "taurus-wh",       { NULL }, 1610,  "udp"  },
+  { "ill",             { NULL }, 1611,  "tcp"  },
+  { "ill",             { NULL }, 1611,  "udp"  },
+  { "netbill-trans",   { NULL }, 1612,  "tcp"  },
+  { "netbill-trans",   { NULL }, 1612,  "udp"  },
+  { "netbill-keyrep",  { NULL }, 1613,  "tcp"  },
+  { "netbill-keyrep",  { NULL }, 1613,  "udp"  },
+  { "netbill-cred",    { NULL }, 1614,  "tcp"  },
+  { "netbill-cred",    { NULL }, 1614,  "udp"  },
+  { "netbill-auth",    { NULL }, 1615,  "tcp"  },
+  { "netbill-auth",    { NULL }, 1615,  "udp"  },
+  { "netbill-prod",    { NULL }, 1616,  "tcp"  },
+  { "netbill-prod",    { NULL }, 1616,  "udp"  },
+  { "nimrod-agent",    { NULL }, 1617,  "tcp"  },
+  { "nimrod-agent",    { NULL }, 1617,  "udp"  },
+  { "skytelnet",       { NULL }, 1618,  "tcp"  },
+  { "skytelnet",       { NULL }, 1618,  "udp"  },
+  { "xs-openstorage",  { NULL }, 1619,  "tcp"  },
+  { "xs-openstorage",  { NULL }, 1619,  "udp"  },
+  { "faxportwinport",  { NULL }, 1620,  "tcp"  },
+  { "faxportwinport",  { NULL }, 1620,  "udp"  },
+  { "softdataphone",   { NULL }, 1621,  "tcp"  },
+  { "softdataphone",   { NULL }, 1621,  "udp"  },
+  { "ontime",          { NULL }, 1622,  "tcp"  },
+  { "ontime",          { NULL }, 1622,  "udp"  },
+  { "jaleosnd",        { NULL }, 1623,  "tcp"  },
+  { "jaleosnd",        { NULL }, 1623,  "udp"  },
+  { "udp-sr-port",     { NULL }, 1624,  "tcp"  },
+  { "udp-sr-port",     { NULL }, 1624,  "udp"  },
+  { "svs-omagent",     { NULL }, 1625,  "tcp"  },
+  { "svs-omagent",     { NULL }, 1625,  "udp"  },
+  { "shockwave",       { NULL }, 1626,  "tcp"  },
+  { "shockwave",       { NULL }, 1626,  "udp"  },
+  { "t128-gateway",    { NULL }, 1627,  "tcp"  },
+  { "t128-gateway",    { NULL }, 1627,  "udp"  },
+  { "lontalk-norm",    { NULL }, 1628,  "tcp"  },
+  { "lontalk-norm",    { NULL }, 1628,  "udp"  },
+  { "lontalk-urgnt",   { NULL }, 1629,  "tcp"  },
+  { "lontalk-urgnt",   { NULL }, 1629,  "udp"  },
+  { "oraclenet8cman",  { NULL }, 1630,  "tcp"  },
+  { "oraclenet8cman",  { NULL }, 1630,  "udp"  },
+  { "visitview",       { NULL }, 1631,  "tcp"  },
+  { "visitview",       { NULL }, 1631,  "udp"  },
+  { "pammratc",        { NULL }, 1632,  "tcp"  },
+  { "pammratc",        { NULL }, 1632,  "udp"  },
+  { "pammrpc",         { NULL }, 1633,  "tcp"  },
+  { "pammrpc",         { NULL }, 1633,  "udp"  },
+  { "loaprobe",        { NULL }, 1634,  "tcp"  },
+  { "loaprobe",        { NULL }, 1634,  "udp"  },
+  { "edb-server1",     { NULL }, 1635,  "tcp"  },
+  { "edb-server1",     { NULL }, 1635,  "udp"  },
+  { "isdc",            { NULL }, 1636,  "tcp"  },
+  { "isdc",            { NULL }, 1636,  "udp"  },
+  { "islc",            { NULL }, 1637,  "tcp"  },
+  { "islc",            { NULL }, 1637,  "udp"  },
+  { "ismc",            { NULL }, 1638,  "tcp"  },
+  { "ismc",            { NULL }, 1638,  "udp"  },
+  { "cert-initiator",  { NULL }, 1639,  "tcp"  },
+  { "cert-initiator",  { NULL }, 1639,  "udp"  },
+  { "cert-responder",  { NULL }, 1640,  "tcp"  },
+  { "cert-responder",  { NULL }, 1640,  "udp"  },
+  { "invision",        { NULL }, 1641,  "tcp"  },
+  { "invision",        { NULL }, 1641,  "udp"  },
+  { "isis-am",         { NULL }, 1642,  "tcp"  },
+  { "isis-am",         { NULL }, 1642,  "udp"  },
+  { "isis-ambc",       { NULL }, 1643,  "tcp"  },
+  { "isis-ambc",       { NULL }, 1643,  "udp"  },
+  { "saiseh",          { NULL }, 1644,  "tcp"  },
+  { "sightline",       { NULL }, 1645,  "tcp"  },
+  { "sightline",       { NULL }, 1645,  "udp"  },
+  { "sa-msg-port",     { NULL }, 1646,  "tcp"  },
+  { "sa-msg-port",     { NULL }, 1646,  "udp"  },
+  { "rsap",            { NULL }, 1647,  "tcp"  },
+  { "rsap",            { NULL }, 1647,  "udp"  },
+  { "concurrent-lm",   { NULL }, 1648,  "tcp"  },
+  { "concurrent-lm",   { NULL }, 1648,  "udp"  },
+  { "kermit",          { NULL }, 1649,  "tcp"  },
+  { "kermit",          { NULL }, 1649,  "udp"  },
+  { "nkd",             { NULL }, 1650,  "tcp"  },
+  { "nkd",             { NULL }, 1650,  "udp"  },
+  { "shiva_confsrvr",  { NULL }, 1651,  "tcp"  },
+  { "shiva_confsrvr",  { NULL }, 1651,  "udp"  },
+  { "xnmp",            { NULL }, 1652,  "tcp"  },
+  { "xnmp",            { NULL }, 1652,  "udp"  },
+  { "alphatech-lm",    { NULL }, 1653,  "tcp"  },
+  { "alphatech-lm",    { NULL }, 1653,  "udp"  },
+  { "stargatealerts",  { NULL }, 1654,  "tcp"  },
+  { "stargatealerts",  { NULL }, 1654,  "udp"  },
+  { "dec-mbadmin",     { NULL }, 1655,  "tcp"  },
+  { "dec-mbadmin",     { NULL }, 1655,  "udp"  },
+  { "dec-mbadmin-h",   { NULL }, 1656,  "tcp"  },
+  { "dec-mbadmin-h",   { NULL }, 1656,  "udp"  },
+  { "fujitsu-mmpdc",   { NULL }, 1657,  "tcp"  },
+  { "fujitsu-mmpdc",   { NULL }, 1657,  "udp"  },
+  { "sixnetudr",       { NULL }, 1658,  "tcp"  },
+  { "sixnetudr",       { NULL }, 1658,  "udp"  },
+  { "sg-lm",           { NULL }, 1659,  "tcp"  },
+  { "sg-lm",           { NULL }, 1659,  "udp"  },
+  { "skip-mc-gikreq",  { NULL }, 1660,  "tcp"  },
+  { "skip-mc-gikreq",  { NULL }, 1660,  "udp"  },
+  { "netview-aix-1",   { NULL }, 1661,  "tcp"  },
+  { "netview-aix-1",   { NULL }, 1661,  "udp"  },
+  { "netview-aix-2",   { NULL }, 1662,  "tcp"  },
+  { "netview-aix-2",   { NULL }, 1662,  "udp"  },
+  { "netview-aix-3",   { NULL }, 1663,  "tcp"  },
+  { "netview-aix-3",   { NULL }, 1663,  "udp"  },
+  { "netview-aix-4",   { NULL }, 1664,  "tcp"  },
+  { "netview-aix-4",   { NULL }, 1664,  "udp"  },
+  { "netview-aix-5",   { NULL }, 1665,  "tcp"  },
+  { "netview-aix-5",   { NULL }, 1665,  "udp"  },
+  { "netview-aix-6",   { NULL }, 1666,  "tcp"  },
+  { "netview-aix-6",   { NULL }, 1666,  "udp"  },
+  { "netview-aix-7",   { NULL }, 1667,  "tcp"  },
+  { "netview-aix-7",   { NULL }, 1667,  "udp"  },
+  { "netview-aix-8",   { NULL }, 1668,  "tcp"  },
+  { "netview-aix-8",   { NULL }, 1668,  "udp"  },
+  { "netview-aix-9",   { NULL }, 1669,  "tcp"  },
+  { "netview-aix-9",   { NULL }, 1669,  "udp"  },
+  { "netview-aix-10",  { NULL }, 1670,  "tcp"  },
+  { "netview-aix-10",  { NULL }, 1670,  "udp"  },
+  { "netview-aix-11",  { NULL }, 1671,  "tcp"  },
+  { "netview-aix-11",  { NULL }, 1671,  "udp"  },
+  { "netview-aix-12",  { NULL }, 1672,  "tcp"  },
+  { "netview-aix-12",  { NULL }, 1672,  "udp"  },
+  { "proshare-mc-1",   { NULL }, 1673,  "tcp"  },
+  { "proshare-mc-1",   { NULL }, 1673,  "udp"  },
+  { "proshare-mc-2",   { NULL }, 1674,  "tcp"  },
+  { "proshare-mc-2",   { NULL }, 1674,  "udp"  },
+  { "pdp",             { NULL }, 1675,  "tcp"  },
+  { "pdp",             { NULL }, 1675,  "udp"  },
+  { "netcomm1",        { NULL }, 1676,  "tcp"  },
+  { "netcomm2",        { NULL }, 1676,  "udp"  },
+  { "groupwise",       { NULL }, 1677,  "tcp"  },
+  { "groupwise",       { NULL }, 1677,  "udp"  },
+  { "prolink",         { NULL }, 1678,  "tcp"  },
+  { "prolink",         { NULL }, 1678,  "udp"  },
+  { "darcorp-lm",      { NULL }, 1679,  "tcp"  },
+  { "darcorp-lm",      { NULL }, 1679,  "udp"  },
+  { "microcom-sbp",    { NULL }, 1680,  "tcp"  },
+  { "microcom-sbp",    { NULL }, 1680,  "udp"  },
+  { "sd-elmd",         { NULL }, 1681,  "tcp"  },
+  { "sd-elmd",         { NULL }, 1681,  "udp"  },
+  { "lanyon-lantern",  { NULL }, 1682,  "tcp"  },
+  { "lanyon-lantern",  { NULL }, 1682,  "udp"  },
+  { "ncpm-hip",        { NULL }, 1683,  "tcp"  },
+  { "ncpm-hip",        { NULL }, 1683,  "udp"  },
+  { "snaresecure",     { NULL }, 1684,  "tcp"  },
+  { "snaresecure",     { NULL }, 1684,  "udp"  },
+  { "n2nremote",       { NULL }, 1685,  "tcp"  },
+  { "n2nremote",       { NULL }, 1685,  "udp"  },
+  { "cvmon",           { NULL }, 1686,  "tcp"  },
+  { "cvmon",           { NULL }, 1686,  "udp"  },
+  { "nsjtp-ctrl",      { NULL }, 1687,  "tcp"  },
+  { "nsjtp-ctrl",      { NULL }, 1687,  "udp"  },
+  { "nsjtp-data",      { NULL }, 1688,  "tcp"  },
+  { "nsjtp-data",      { NULL }, 1688,  "udp"  },
+  { "firefox",         { NULL }, 1689,  "tcp"  },
+  { "firefox",         { NULL }, 1689,  "udp"  },
+  { "ng-umds",         { NULL }, 1690,  "tcp"  },
+  { "ng-umds",         { NULL }, 1690,  "udp"  },
+  { "empire-empuma",   { NULL }, 1691,  "tcp"  },
+  { "empire-empuma",   { NULL }, 1691,  "udp"  },
+  { "sstsys-lm",       { NULL }, 1692,  "tcp"  },
+  { "sstsys-lm",       { NULL }, 1692,  "udp"  },
+  { "rrirtr",          { NULL }, 1693,  "tcp"  },
+  { "rrirtr",          { NULL }, 1693,  "udp"  },
+  { "rrimwm",          { NULL }, 1694,  "tcp"  },
+  { "rrimwm",          { NULL }, 1694,  "udp"  },
+  { "rrilwm",          { NULL }, 1695,  "tcp"  },
+  { "rrilwm",          { NULL }, 1695,  "udp"  },
+  { "rrifmm",          { NULL }, 1696,  "tcp"  },
+  { "rrifmm",          { NULL }, 1696,  "udp"  },
+  { "rrisat",          { NULL }, 1697,  "tcp"  },
+  { "rrisat",          { NULL }, 1697,  "udp"  },
+  { "rsvp-encap-1",    { NULL }, 1698,  "tcp"  },
+  { "rsvp-encap-1",    { NULL }, 1698,  "udp"  },
+  { "rsvp-encap-2",    { NULL }, 1699,  "tcp"  },
+  { "rsvp-encap-2",    { NULL }, 1699,  "udp"  },
+  { "mps-raft",        { NULL }, 1700,  "tcp"  },
+  { "mps-raft",        { NULL }, 1700,  "udp"  },
+  { "l2f",             { NULL }, 1701,  "tcp"  },
+  { "l2f",             { NULL }, 1701,  "udp"  },
+  { "l2tp",            { NULL }, 1701,  "tcp"  },
+  { "l2tp",            { NULL }, 1701,  "udp"  },
+  { "deskshare",       { NULL }, 1702,  "tcp"  },
+  { "deskshare",       { NULL }, 1702,  "udp"  },
+  { "hb-engine",       { NULL }, 1703,  "tcp"  },
+  { "hb-engine",       { NULL }, 1703,  "udp"  },
+  { "bcs-broker",      { NULL }, 1704,  "tcp"  },
+  { "bcs-broker",      { NULL }, 1704,  "udp"  },
+  { "slingshot",       { NULL }, 1705,  "tcp"  },
+  { "slingshot",       { NULL }, 1705,  "udp"  },
+  { "jetform",         { NULL }, 1706,  "tcp"  },
+  { "jetform",         { NULL }, 1706,  "udp"  },
+  { "vdmplay",         { NULL }, 1707,  "tcp"  },
+  { "vdmplay",         { NULL }, 1707,  "udp"  },
+  { "gat-lmd",         { NULL }, 1708,  "tcp"  },
+  { "gat-lmd",         { NULL }, 1708,  "udp"  },
+  { "centra",          { NULL }, 1709,  "tcp"  },
+  { "centra",          { NULL }, 1709,  "udp"  },
+  { "impera",          { NULL }, 1710,  "tcp"  },
+  { "impera",          { NULL }, 1710,  "udp"  },
+  { "pptconference",   { NULL }, 1711,  "tcp"  },
+  { "pptconference",   { NULL }, 1711,  "udp"  },
+  { "registrar",       { NULL }, 1712,  "tcp"  },
+  { "registrar",       { NULL }, 1712,  "udp"  },
+  { "conferencetalk",  { NULL }, 1713,  "tcp"  },
+  { "conferencetalk",  { NULL }, 1713,  "udp"  },
+  { "sesi-lm",         { NULL }, 1714,  "tcp"  },
+  { "sesi-lm",         { NULL }, 1714,  "udp"  },
+  { "houdini-lm",      { NULL }, 1715,  "tcp"  },
+  { "houdini-lm",      { NULL }, 1715,  "udp"  },
+  { "xmsg",            { NULL }, 1716,  "tcp"  },
+  { "xmsg",            { NULL }, 1716,  "udp"  },
+  { "fj-hdnet",        { NULL }, 1717,  "tcp"  },
+  { "fj-hdnet",        { NULL }, 1717,  "udp"  },
+  { "h323gatedisc",    { NULL }, 1718,  "tcp"  },
+  { "h323gatedisc",    { NULL }, 1718,  "udp"  },
+  { "h323gatestat",    { NULL }, 1719,  "tcp"  },
+  { "h323gatestat",    { NULL }, 1719,  "udp"  },
+  { "h323hostcall",    { NULL }, 1720,  "tcp"  },
+  { "h323hostcall",    { NULL }, 1720,  "udp"  },
+  { "caicci",          { NULL }, 1721,  "tcp"  },
+  { "caicci",          { NULL }, 1721,  "udp"  },
+  { "hks-lm",          { NULL }, 1722,  "tcp"  },
+  { "hks-lm",          { NULL }, 1722,  "udp"  },
+  { "pptp",            { NULL }, 1723,  "tcp"  },
+  { "pptp",            { NULL }, 1723,  "udp"  },
+  { "csbphonemaster",  { NULL }, 1724,  "tcp"  },
+  { "csbphonemaster",  { NULL }, 1724,  "udp"  },
+  { "iden-ralp",       { NULL }, 1725,  "tcp"  },
+  { "iden-ralp",       { NULL }, 1725,  "udp"  },
+  { "iberiagames",     { NULL }, 1726,  "tcp"  },
+  { "iberiagames",     { NULL }, 1726,  "udp"  },
+  { "winddx",          { NULL }, 1727,  "tcp"  },
+  { "winddx",          { NULL }, 1727,  "udp"  },
+  { "telindus",        { NULL }, 1728,  "tcp"  },
+  { "telindus",        { NULL }, 1728,  "udp"  },
+  { "citynl",          { NULL }, 1729,  "tcp"  },
+  { "citynl",          { NULL }, 1729,  "udp"  },
+  { "roketz",          { NULL }, 1730,  "tcp"  },
+  { "roketz",          { NULL }, 1730,  "udp"  },
+  { "msiccp",          { NULL }, 1731,  "tcp"  },
+  { "msiccp",          { NULL }, 1731,  "udp"  },
+  { "proxim",          { NULL }, 1732,  "tcp"  },
+  { "proxim",          { NULL }, 1732,  "udp"  },
+  { "siipat",          { NULL }, 1733,  "tcp"  },
+  { "siipat",          { NULL }, 1733,  "udp"  },
+  { "cambertx-lm",     { NULL }, 1734,  "tcp"  },
+  { "cambertx-lm",     { NULL }, 1734,  "udp"  },
+  { "privatechat",     { NULL }, 1735,  "tcp"  },
+  { "privatechat",     { NULL }, 1735,  "udp"  },
+  { "street-stream",   { NULL }, 1736,  "tcp"  },
+  { "street-stream",   { NULL }, 1736,  "udp"  },
+  { "ultimad",         { NULL }, 1737,  "tcp"  },
+  { "ultimad",         { NULL }, 1737,  "udp"  },
+  { "gamegen1",        { NULL }, 1738,  "tcp"  },
+  { "gamegen1",        { NULL }, 1738,  "udp"  },
+  { "webaccess",       { NULL }, 1739,  "tcp"  },
+  { "webaccess",       { NULL }, 1739,  "udp"  },
+  { "encore",          { NULL }, 1740,  "tcp"  },
+  { "encore",          { NULL }, 1740,  "udp"  },
+  { "cisco-net-mgmt",  { NULL }, 1741,  "tcp"  },
+  { "cisco-net-mgmt",  { NULL }, 1741,  "udp"  },
+  { "3Com-nsd",        { NULL }, 1742,  "tcp"  },
+  { "3Com-nsd",        { NULL }, 1742,  "udp"  },
+  { "cinegrfx-lm",     { NULL }, 1743,  "tcp"  },
+  { "cinegrfx-lm",     { NULL }, 1743,  "udp"  },
+  { "ncpm-ft",         { NULL }, 1744,  "tcp"  },
+  { "ncpm-ft",         { NULL }, 1744,  "udp"  },
+  { "remote-winsock",  { NULL }, 1745,  "tcp"  },
+  { "remote-winsock",  { NULL }, 1745,  "udp"  },
+  { "ftrapid-1",       { NULL }, 1746,  "tcp"  },
+  { "ftrapid-1",       { NULL }, 1746,  "udp"  },
+  { "ftrapid-2",       { NULL }, 1747,  "tcp"  },
+  { "ftrapid-2",       { NULL }, 1747,  "udp"  },
+  { "oracle-em1",      { NULL }, 1748,  "tcp"  },
+  { "oracle-em1",      { NULL }, 1748,  "udp"  },
+  { "aspen-services",  { NULL }, 1749,  "tcp"  },
+  { "aspen-services",  { NULL }, 1749,  "udp"  },
+  { "sslp",            { NULL }, 1750,  "tcp"  },
+  { "sslp",            { NULL }, 1750,  "udp"  },
+  { "swiftnet",        { NULL }, 1751,  "tcp"  },
+  { "swiftnet",        { NULL }, 1751,  "udp"  },
+  { "lofr-lm",         { NULL }, 1752,  "tcp"  },
+  { "lofr-lm",         { NULL }, 1752,  "udp"  },
+  { "oracle-em2",      { NULL }, 1754,  "tcp"  },
+  { "oracle-em2",      { NULL }, 1754,  "udp"  },
+  { "ms-streaming",    { NULL }, 1755,  "tcp"  },
+  { "ms-streaming",    { NULL }, 1755,  "udp"  },
+  { "capfast-lmd",     { NULL }, 1756,  "tcp"  },
+  { "capfast-lmd",     { NULL }, 1756,  "udp"  },
+  { "cnhrp",           { NULL }, 1757,  "tcp"  },
+  { "cnhrp",           { NULL }, 1757,  "udp"  },
+  { "tftp-mcast",      { NULL }, 1758,  "tcp"  },
+  { "tftp-mcast",      { NULL }, 1758,  "udp"  },
+  { "spss-lm",         { NULL }, 1759,  "tcp"  },
+  { "spss-lm",         { NULL }, 1759,  "udp"  },
+  { "www-ldap-gw",     { NULL }, 1760,  "tcp"  },
+  { "www-ldap-gw",     { NULL }, 1760,  "udp"  },
+  { "cft-0",           { NULL }, 1761,  "tcp"  },
+  { "cft-0",           { NULL }, 1761,  "udp"  },
+  { "cft-1",           { NULL }, 1762,  "tcp"  },
+  { "cft-1",           { NULL }, 1762,  "udp"  },
+  { "cft-2",           { NULL }, 1763,  "tcp"  },
+  { "cft-2",           { NULL }, 1763,  "udp"  },
+  { "cft-3",           { NULL }, 1764,  "tcp"  },
+  { "cft-3",           { NULL }, 1764,  "udp"  },
+  { "cft-4",           { NULL }, 1765,  "tcp"  },
+  { "cft-4",           { NULL }, 1765,  "udp"  },
+  { "cft-5",           { NULL }, 1766,  "tcp"  },
+  { "cft-5",           { NULL }, 1766,  "udp"  },
+  { "cft-6",           { NULL }, 1767,  "tcp"  },
+  { "cft-6",           { NULL }, 1767,  "udp"  },
+  { "cft-7",           { NULL }, 1768,  "tcp"  },
+  { "cft-7",           { NULL }, 1768,  "udp"  },
+  { "bmc-net-adm",     { NULL }, 1769,  "tcp"  },
+  { "bmc-net-adm",     { NULL }, 1769,  "udp"  },
+  { "bmc-net-svc",     { NULL }, 1770,  "tcp"  },
+  { "bmc-net-svc",     { NULL }, 1770,  "udp"  },
+  { "vaultbase",       { NULL }, 1771,  "tcp"  },
+  { "vaultbase",       { NULL }, 1771,  "udp"  },
+  { "essweb-gw",       { NULL }, 1772,  "tcp"  },
+  { "essweb-gw",       { NULL }, 1772,  "udp"  },
+  { "kmscontrol",      { NULL }, 1773,  "tcp"  },
+  { "kmscontrol",      { NULL }, 1773,  "udp"  },
+  { "global-dtserv",   { NULL }, 1774,  "tcp"  },
+  { "global-dtserv",   { NULL }, 1774,  "udp"  },
+  { "femis",           { NULL }, 1776,  "tcp"  },
+  { "femis",           { NULL }, 1776,  "udp"  },
+  { "powerguardian",   { NULL }, 1777,  "tcp"  },
+  { "powerguardian",   { NULL }, 1777,  "udp"  },
+  { "prodigy-intrnet", { NULL }, 1778,  "tcp"  },
+  { "prodigy-intrnet", { NULL }, 1778,  "udp"  },
+  { "pharmasoft",      { NULL }, 1779,  "tcp"  },
+  { "pharmasoft",      { NULL }, 1779,  "udp"  },
+  { "dpkeyserv",       { NULL }, 1780,  "tcp"  },
+  { "dpkeyserv",       { NULL }, 1780,  "udp"  },
+  { "answersoft-lm",   { NULL }, 1781,  "tcp"  },
+  { "answersoft-lm",   { NULL }, 1781,  "udp"  },
+  { "hp-hcip",         { NULL }, 1782,  "tcp"  },
+  { "hp-hcip",         { NULL }, 1782,  "udp"  },
+  { "finle-lm",        { NULL }, 1784,  "tcp"  },
+  { "finle-lm",        { NULL }, 1784,  "udp"  },
+  { "windlm",          { NULL }, 1785,  "tcp"  },
+  { "windlm",          { NULL }, 1785,  "udp"  },
+  { "funk-logger",     { NULL }, 1786,  "tcp"  },
+  { "funk-logger",     { NULL }, 1786,  "udp"  },
+  { "funk-license",    { NULL }, 1787,  "tcp"  },
+  { "funk-license",    { NULL }, 1787,  "udp"  },
+  { "psmond",          { NULL }, 1788,  "tcp"  },
+  { "psmond",          { NULL }, 1788,  "udp"  },
+  { "hello",           { NULL }, 1789,  "tcp"  },
+  { "hello",           { NULL }, 1789,  "udp"  },
+  { "nmsp",            { NULL }, 1790,  "tcp"  },
+  { "nmsp",            { NULL }, 1790,  "udp"  },
+  { "ea1",             { NULL }, 1791,  "tcp"  },
+  { "ea1",             { NULL }, 1791,  "udp"  },
+  { "ibm-dt-2",        { NULL }, 1792,  "tcp"  },
+  { "ibm-dt-2",        { NULL }, 1792,  "udp"  },
+  { "rsc-robot",       { NULL }, 1793,  "tcp"  },
+  { "rsc-robot",       { NULL }, 1793,  "udp"  },
+  { "cera-bcm",        { NULL }, 1794,  "tcp"  },
+  { "cera-bcm",        { NULL }, 1794,  "udp"  },
+  { "dpi-proxy",       { NULL }, 1795,  "tcp"  },
+  { "dpi-proxy",       { NULL }, 1795,  "udp"  },
+  { "vocaltec-admin",  { NULL }, 1796,  "tcp"  },
+  { "vocaltec-admin",  { NULL }, 1796,  "udp"  },
+  { "uma",             { NULL }, 1797,  "tcp"  },
+  { "uma",             { NULL }, 1797,  "udp"  },
+  { "etp",             { NULL }, 1798,  "tcp"  },
+  { "etp",             { NULL }, 1798,  "udp"  },
+  { "netrisk",         { NULL }, 1799,  "tcp"  },
+  { "netrisk",         { NULL }, 1799,  "udp"  },
+  { "ansys-lm",        { NULL }, 1800,  "tcp"  },
+  { "ansys-lm",        { NULL }, 1800,  "udp"  },
+  { "msmq",            { NULL }, 1801,  "tcp"  },
+  { "msmq",            { NULL }, 1801,  "udp"  },
+  { "concomp1",        { NULL }, 1802,  "tcp"  },
+  { "concomp1",        { NULL }, 1802,  "udp"  },
+  { "hp-hcip-gwy",     { NULL }, 1803,  "tcp"  },
+  { "hp-hcip-gwy",     { NULL }, 1803,  "udp"  },
+  { "enl",             { NULL }, 1804,  "tcp"  },
+  { "enl",             { NULL }, 1804,  "udp"  },
+  { "enl-name",        { NULL }, 1805,  "tcp"  },
+  { "enl-name",        { NULL }, 1805,  "udp"  },
+  { "musiconline",     { NULL }, 1806,  "tcp"  },
+  { "musiconline",     { NULL }, 1806,  "udp"  },
+  { "fhsp",            { NULL }, 1807,  "tcp"  },
+  { "fhsp",            { NULL }, 1807,  "udp"  },
+  { "oracle-vp2",      { NULL }, 1808,  "tcp"  },
+  { "oracle-vp2",      { NULL }, 1808,  "udp"  },
+  { "oracle-vp1",      { NULL }, 1809,  "tcp"  },
+  { "oracle-vp1",      { NULL }, 1809,  "udp"  },
+  { "jerand-lm",       { NULL }, 1810,  "tcp"  },
+  { "jerand-lm",       { NULL }, 1810,  "udp"  },
+  { "scientia-sdb",    { NULL }, 1811,  "tcp"  },
+  { "scientia-sdb",    { NULL }, 1811,  "udp"  },
+  { "radius",          { NULL }, 1812,  "tcp"  },
+  { "radius",          { NULL }, 1812,  "udp"  },
+  { "radius-acct",     { NULL }, 1813,  "tcp"  },
+  { "radius-acct",     { NULL }, 1813,  "udp"  },
+  { "tdp-suite",       { NULL }, 1814,  "tcp"  },
+  { "tdp-suite",       { NULL }, 1814,  "udp"  },
+  { "mmpft",           { NULL }, 1815,  "tcp"  },
+  { "mmpft",           { NULL }, 1815,  "udp"  },
+  { "harp",            { NULL }, 1816,  "tcp"  },
+  { "harp",            { NULL }, 1816,  "udp"  },
+  { "rkb-oscs",        { NULL }, 1817,  "tcp"  },
+  { "rkb-oscs",        { NULL }, 1817,  "udp"  },
+  { "etftp",           { NULL }, 1818,  "tcp"  },
+  { "etftp",           { NULL }, 1818,  "udp"  },
+  { "plato-lm",        { NULL }, 1819,  "tcp"  },
+  { "plato-lm",        { NULL }, 1819,  "udp"  },
+  { "mcagent",         { NULL }, 1820,  "tcp"  },
+  { "mcagent",         { NULL }, 1820,  "udp"  },
+  { "donnyworld",      { NULL }, 1821,  "tcp"  },
+  { "donnyworld",      { NULL }, 1821,  "udp"  },
+  { "es-elmd",         { NULL }, 1822,  "tcp"  },
+  { "es-elmd",         { NULL }, 1822,  "udp"  },
+  { "unisys-lm",       { NULL }, 1823,  "tcp"  },
+  { "unisys-lm",       { NULL }, 1823,  "udp"  },
+  { "metrics-pas",     { NULL }, 1824,  "tcp"  },
+  { "metrics-pas",     { NULL }, 1824,  "udp"  },
+  { "direcpc-video",   { NULL }, 1825,  "tcp"  },
+  { "direcpc-video",   { NULL }, 1825,  "udp"  },
+  { "ardt",            { NULL }, 1826,  "tcp"  },
+  { "ardt",            { NULL }, 1826,  "udp"  },
+  { "asi",             { NULL }, 1827,  "tcp"  },
+  { "asi",             { NULL }, 1827,  "udp"  },
+  { "itm-mcell-u",     { NULL }, 1828,  "tcp"  },
+  { "itm-mcell-u",     { NULL }, 1828,  "udp"  },
+  { "optika-emedia",   { NULL }, 1829,  "tcp"  },
+  { "optika-emedia",   { NULL }, 1829,  "udp"  },
+  { "net8-cman",       { NULL }, 1830,  "tcp"  },
+  { "net8-cman",       { NULL }, 1830,  "udp"  },
+  { "myrtle",          { NULL }, 1831,  "tcp"  },
+  { "myrtle",          { NULL }, 1831,  "udp"  },
+  { "tht-treasure",    { NULL }, 1832,  "tcp"  },
+  { "tht-treasure",    { NULL }, 1832,  "udp"  },
+  { "udpradio",        { NULL }, 1833,  "tcp"  },
+  { "udpradio",        { NULL }, 1833,  "udp"  },
+  { "ardusuni",        { NULL }, 1834,  "tcp"  },
+  { "ardusuni",        { NULL }, 1834,  "udp"  },
+  { "ardusmul",        { NULL }, 1835,  "tcp"  },
+  { "ardusmul",        { NULL }, 1835,  "udp"  },
+  { "ste-smsc",        { NULL }, 1836,  "tcp"  },
+  { "ste-smsc",        { NULL }, 1836,  "udp"  },
+  { "csoft1",          { NULL }, 1837,  "tcp"  },
+  { "csoft1",          { NULL }, 1837,  "udp"  },
+  { "talnet",          { NULL }, 1838,  "tcp"  },
+  { "talnet",          { NULL }, 1838,  "udp"  },
+  { "netopia-vo1",     { NULL }, 1839,  "tcp"  },
+  { "netopia-vo1",     { NULL }, 1839,  "udp"  },
+  { "netopia-vo2",     { NULL }, 1840,  "tcp"  },
+  { "netopia-vo2",     { NULL }, 1840,  "udp"  },
+  { "netopia-vo3",     { NULL }, 1841,  "tcp"  },
+  { "netopia-vo3",     { NULL }, 1841,  "udp"  },
+  { "netopia-vo4",     { NULL }, 1842,  "tcp"  },
+  { "netopia-vo4",     { NULL }, 1842,  "udp"  },
+  { "netopia-vo5",     { NULL }, 1843,  "tcp"  },
+  { "netopia-vo5",     { NULL }, 1843,  "udp"  },
+  { "direcpc-dll",     { NULL }, 1844,  "tcp"  },
+  { "direcpc-dll",     { NULL }, 1844,  "udp"  },
+  { "altalink",        { NULL }, 1845,  "tcp"  },
+  { "altalink",        { NULL }, 1845,  "udp"  },
+  { "tunstall-pnc",    { NULL }, 1846,  "tcp"  },
+  { "tunstall-pnc",    { NULL }, 1846,  "udp"  },
+  { "slp-notify",      { NULL }, 1847,  "tcp"  },
+  { "slp-notify",      { NULL }, 1847,  "udp"  },
+  { "fjdocdist",       { NULL }, 1848,  "tcp"  },
+  { "fjdocdist",       { NULL }, 1848,  "udp"  },
+  { "alpha-sms",       { NULL }, 1849,  "tcp"  },
+  { "alpha-sms",       { NULL }, 1849,  "udp"  },
+  { "gsi",             { NULL }, 1850,  "tcp"  },
+  { "gsi",             { NULL }, 1850,  "udp"  },
+  { "ctcd",            { NULL }, 1851,  "tcp"  },
+  { "ctcd",            { NULL }, 1851,  "udp"  },
+  { "virtual-time",    { NULL }, 1852,  "tcp"  },
+  { "virtual-time",    { NULL }, 1852,  "udp"  },
+  { "vids-avtp",       { NULL }, 1853,  "tcp"  },
+  { "vids-avtp",       { NULL }, 1853,  "udp"  },
+  { "buddy-draw",      { NULL }, 1854,  "tcp"  },
+  { "buddy-draw",      { NULL }, 1854,  "udp"  },
+  { "fiorano-rtrsvc",  { NULL }, 1855,  "tcp"  },
+  { "fiorano-rtrsvc",  { NULL }, 1855,  "udp"  },
+  { "fiorano-msgsvc",  { NULL }, 1856,  "tcp"  },
+  { "fiorano-msgsvc",  { NULL }, 1856,  "udp"  },
+  { "datacaptor",      { NULL }, 1857,  "tcp"  },
+  { "datacaptor",      { NULL }, 1857,  "udp"  },
+  { "privateark",      { NULL }, 1858,  "tcp"  },
+  { "privateark",      { NULL }, 1858,  "udp"  },
+  { "gammafetchsvr",   { NULL }, 1859,  "tcp"  },
+  { "gammafetchsvr",   { NULL }, 1859,  "udp"  },
+  { "sunscalar-svc",   { NULL }, 1860,  "tcp"  },
+  { "sunscalar-svc",   { NULL }, 1860,  "udp"  },
+  { "lecroy-vicp",     { NULL }, 1861,  "tcp"  },
+  { "lecroy-vicp",     { NULL }, 1861,  "udp"  },
+  { "mysql-cm-agent",  { NULL }, 1862,  "tcp"  },
+  { "mysql-cm-agent",  { NULL }, 1862,  "udp"  },
+  { "msnp",            { NULL }, 1863,  "tcp"  },
+  { "msnp",            { NULL }, 1863,  "udp"  },
+  { "paradym-31port",  { NULL }, 1864,  "tcp"  },
+  { "paradym-31port",  { NULL }, 1864,  "udp"  },
+  { "entp",            { NULL }, 1865,  "tcp"  },
+  { "entp",            { NULL }, 1865,  "udp"  },
+  { "swrmi",           { NULL }, 1866,  "tcp"  },
+  { "swrmi",           { NULL }, 1866,  "udp"  },
+  { "udrive",          { NULL }, 1867,  "tcp"  },
+  { "udrive",          { NULL }, 1867,  "udp"  },
+  { "viziblebrowser",  { NULL }, 1868,  "tcp"  },
+  { "viziblebrowser",  { NULL }, 1868,  "udp"  },
+  { "transact",        { NULL }, 1869,  "tcp"  },
+  { "transact",        { NULL }, 1869,  "udp"  },
+  { "sunscalar-dns",   { NULL }, 1870,  "tcp"  },
+  { "sunscalar-dns",   { NULL }, 1870,  "udp"  },
+  { "canocentral0",    { NULL }, 1871,  "tcp"  },
+  { "canocentral0",    { NULL }, 1871,  "udp"  },
+  { "canocentral1",    { NULL }, 1872,  "tcp"  },
+  { "canocentral1",    { NULL }, 1872,  "udp"  },
+  { "fjmpjps",         { NULL }, 1873,  "tcp"  },
+  { "fjmpjps",         { NULL }, 1873,  "udp"  },
+  { "fjswapsnp",       { NULL }, 1874,  "tcp"  },
+  { "fjswapsnp",       { NULL }, 1874,  "udp"  },
+  { "westell-stats",   { NULL }, 1875,  "tcp"  },
+  { "westell-stats",   { NULL }, 1875,  "udp"  },
+  { "ewcappsrv",       { NULL }, 1876,  "tcp"  },
+  { "ewcappsrv",       { NULL }, 1876,  "udp"  },
+  { "hp-webqosdb",     { NULL }, 1877,  "tcp"  },
+  { "hp-webqosdb",     { NULL }, 1877,  "udp"  },
+  { "drmsmc",          { NULL }, 1878,  "tcp"  },
+  { "drmsmc",          { NULL }, 1878,  "udp"  },
+  { "nettgain-nms",    { NULL }, 1879,  "tcp"  },
+  { "nettgain-nms",    { NULL }, 1879,  "udp"  },
+  { "vsat-control",    { NULL }, 1880,  "tcp"  },
+  { "vsat-control",    { NULL }, 1880,  "udp"  },
+  { "ibm-mqseries2",   { NULL }, 1881,  "tcp"  },
+  { "ibm-mqseries2",   { NULL }, 1881,  "udp"  },
+  { "ecsqdmn",         { NULL }, 1882,  "tcp"  },
+  { "ecsqdmn",         { NULL }, 1882,  "udp"  },
+  { "ibm-mqisdp",      { NULL }, 1883,  "tcp"  },
+  { "ibm-mqisdp",      { NULL }, 1883,  "udp"  },
+  { "idmaps",          { NULL }, 1884,  "tcp"  },
+  { "idmaps",          { NULL }, 1884,  "udp"  },
+  { "vrtstrapserver",  { NULL }, 1885,  "tcp"  },
+  { "vrtstrapserver",  { NULL }, 1885,  "udp"  },
+  { "leoip",           { NULL }, 1886,  "tcp"  },
+  { "leoip",           { NULL }, 1886,  "udp"  },
+  { "filex-lport",     { NULL }, 1887,  "tcp"  },
+  { "filex-lport",     { NULL }, 1887,  "udp"  },
+  { "ncconfig",        { NULL }, 1888,  "tcp"  },
+  { "ncconfig",        { NULL }, 1888,  "udp"  },
+  { "unify-adapter",   { NULL }, 1889,  "tcp"  },
+  { "unify-adapter",   { NULL }, 1889,  "udp"  },
+  { "wilkenlistener",  { NULL }, 1890,  "tcp"  },
+  { "wilkenlistener",  { NULL }, 1890,  "udp"  },
+  { "childkey-notif",  { NULL }, 1891,  "tcp"  },
+  { "childkey-notif",  { NULL }, 1891,  "udp"  },
+  { "childkey-ctrl",   { NULL }, 1892,  "tcp"  },
+  { "childkey-ctrl",   { NULL }, 1892,  "udp"  },
+  { "elad",            { NULL }, 1893,  "tcp"  },
+  { "elad",            { NULL }, 1893,  "udp"  },
+  { "o2server-port",   { NULL }, 1894,  "tcp"  },
+  { "o2server-port",   { NULL }, 1894,  "udp"  },
+  { "b-novative-ls",   { NULL }, 1896,  "tcp"  },
+  { "b-novative-ls",   { NULL }, 1896,  "udp"  },
+  { "metaagent",       { NULL }, 1897,  "tcp"  },
+  { "metaagent",       { NULL }, 1897,  "udp"  },
+  { "cymtec-port",     { NULL }, 1898,  "tcp"  },
+  { "cymtec-port",     { NULL }, 1898,  "udp"  },
+  { "mc2studios",      { NULL }, 1899,  "tcp"  },
+  { "mc2studios",      { NULL }, 1899,  "udp"  },
+  { "ssdp",            { NULL }, 1900,  "tcp"  },
+  { "ssdp",            { NULL }, 1900,  "udp"  },
+  { "fjicl-tep-a",     { NULL }, 1901,  "tcp"  },
+  { "fjicl-tep-a",     { NULL }, 1901,  "udp"  },
+  { "fjicl-tep-b",     { NULL }, 1902,  "tcp"  },
+  { "fjicl-tep-b",     { NULL }, 1902,  "udp"  },
+  { "linkname",        { NULL }, 1903,  "tcp"  },
+  { "linkname",        { NULL }, 1903,  "udp"  },
+  { "fjicl-tep-c",     { NULL }, 1904,  "tcp"  },
+  { "fjicl-tep-c",     { NULL }, 1904,  "udp"  },
+  { "sugp",            { NULL }, 1905,  "tcp"  },
+  { "sugp",            { NULL }, 1905,  "udp"  },
+  { "tpmd",            { NULL }, 1906,  "tcp"  },
+  { "tpmd",            { NULL }, 1906,  "udp"  },
+  { "intrastar",       { NULL }, 1907,  "tcp"  },
+  { "intrastar",       { NULL }, 1907,  "udp"  },
+  { "dawn",            { NULL }, 1908,  "tcp"  },
+  { "dawn",            { NULL }, 1908,  "udp"  },
+  { "global-wlink",    { NULL }, 1909,  "tcp"  },
+  { "global-wlink",    { NULL }, 1909,  "udp"  },
+  { "ultrabac",        { NULL }, 1910,  "tcp"  },
+  { "ultrabac",        { NULL }, 1910,  "udp"  },
+  { "mtp",             { NULL }, 1911,  "tcp"  },
+  { "mtp",             { NULL }, 1911,  "udp"  },
+  { "rhp-iibp",        { NULL }, 1912,  "tcp"  },
+  { "rhp-iibp",        { NULL }, 1912,  "udp"  },
+  { "armadp",          { NULL }, 1913,  "tcp"  },
+  { "armadp",          { NULL }, 1913,  "udp"  },
+  { "elm-momentum",    { NULL }, 1914,  "tcp"  },
+  { "elm-momentum",    { NULL }, 1914,  "udp"  },
+  { "facelink",        { NULL }, 1915,  "tcp"  },
+  { "facelink",        { NULL }, 1915,  "udp"  },
+  { "persona",         { NULL }, 1916,  "tcp"  },
+  { "persona",         { NULL }, 1916,  "udp"  },
+  { "noagent",         { NULL }, 1917,  "tcp"  },
+  { "noagent",         { NULL }, 1917,  "udp"  },
+  { "can-nds",         { NULL }, 1918,  "tcp"  },
+  { "can-nds",         { NULL }, 1918,  "udp"  },
+  { "can-dch",         { NULL }, 1919,  "tcp"  },
+  { "can-dch",         { NULL }, 1919,  "udp"  },
+  { "can-ferret",      { NULL }, 1920,  "tcp"  },
+  { "can-ferret",      { NULL }, 1920,  "udp"  },
+  { "noadmin",         { NULL }, 1921,  "tcp"  },
+  { "noadmin",         { NULL }, 1921,  "udp"  },
+  { "tapestry",        { NULL }, 1922,  "tcp"  },
+  { "tapestry",        { NULL }, 1922,  "udp"  },
+  { "spice",           { NULL }, 1923,  "tcp"  },
+  { "spice",           { NULL }, 1923,  "udp"  },
+  { "xiip",            { NULL }, 1924,  "tcp"  },
+  { "xiip",            { NULL }, 1924,  "udp"  },
+  { "discovery-port",  { NULL }, 1925,  "tcp"  },
+  { "discovery-port",  { NULL }, 1925,  "udp"  },
+  { "egs",             { NULL }, 1926,  "tcp"  },
+  { "egs",             { NULL }, 1926,  "udp"  },
+  { "videte-cipc",     { NULL }, 1927,  "tcp"  },
+  { "videte-cipc",     { NULL }, 1927,  "udp"  },
+  { "emsd-port",       { NULL }, 1928,  "tcp"  },
+  { "emsd-port",       { NULL }, 1928,  "udp"  },
+  { "bandwiz-system",  { NULL }, 1929,  "tcp"  },
+  { "bandwiz-system",  { NULL }, 1929,  "udp"  },
+  { "driveappserver",  { NULL }, 1930,  "tcp"  },
+  { "driveappserver",  { NULL }, 1930,  "udp"  },
+  { "amdsched",        { NULL }, 1931,  "tcp"  },
+  { "amdsched",        { NULL }, 1931,  "udp"  },
+  { "ctt-broker",      { NULL }, 1932,  "tcp"  },
+  { "ctt-broker",      { NULL }, 1932,  "udp"  },
+  { "xmapi",           { NULL }, 1933,  "tcp"  },
+  { "xmapi",           { NULL }, 1933,  "udp"  },
+  { "xaapi",           { NULL }, 1934,  "tcp"  },
+  { "xaapi",           { NULL }, 1934,  "udp"  },
+  { "macromedia-fcs",  { NULL }, 1935,  "tcp"  },
+  { "macromedia-fcs",  { NULL }, 1935,  "udp"  },
+  { "jetcmeserver",    { NULL }, 1936,  "tcp"  },
+  { "jetcmeserver",    { NULL }, 1936,  "udp"  },
+  { "jwserver",        { NULL }, 1937,  "tcp"  },
+  { "jwserver",        { NULL }, 1937,  "udp"  },
+  { "jwclient",        { NULL }, 1938,  "tcp"  },
+  { "jwclient",        { NULL }, 1938,  "udp"  },
+  { "jvserver",        { NULL }, 1939,  "tcp"  },
+  { "jvserver",        { NULL }, 1939,  "udp"  },
+  { "jvclient",        { NULL }, 1940,  "tcp"  },
+  { "jvclient",        { NULL }, 1940,  "udp"  },
+  { "dic-aida",        { NULL }, 1941,  "tcp"  },
+  { "dic-aida",        { NULL }, 1941,  "udp"  },
+  { "res",             { NULL }, 1942,  "tcp"  },
+  { "res",             { NULL }, 1942,  "udp"  },
+  { "beeyond-media",   { NULL }, 1943,  "tcp"  },
+  { "beeyond-media",   { NULL }, 1943,  "udp"  },
+  { "close-combat",    { NULL }, 1944,  "tcp"  },
+  { "close-combat",    { NULL }, 1944,  "udp"  },
+  { "dialogic-elmd",   { NULL }, 1945,  "tcp"  },
+  { "dialogic-elmd",   { NULL }, 1945,  "udp"  },
+  { "tekpls",          { NULL }, 1946,  "tcp"  },
+  { "tekpls",          { NULL }, 1946,  "udp"  },
+  { "sentinelsrm",     { NULL }, 1947,  "tcp"  },
+  { "sentinelsrm",     { NULL }, 1947,  "udp"  },
+  { "eye2eye",         { NULL }, 1948,  "tcp"  },
+  { "eye2eye",         { NULL }, 1948,  "udp"  },
+  { "ismaeasdaqlive",  { NULL }, 1949,  "tcp"  },
+  { "ismaeasdaqlive",  { NULL }, 1949,  "udp"  },
+  { "ismaeasdaqtest",  { NULL }, 1950,  "tcp"  },
+  { "ismaeasdaqtest",  { NULL }, 1950,  "udp"  },
+  { "bcs-lmserver",    { NULL }, 1951,  "tcp"  },
+  { "bcs-lmserver",    { NULL }, 1951,  "udp"  },
+  { "mpnjsc",          { NULL }, 1952,  "tcp"  },
+  { "mpnjsc",          { NULL }, 1952,  "udp"  },
+  { "rapidbase",       { NULL }, 1953,  "tcp"  },
+  { "rapidbase",       { NULL }, 1953,  "udp"  },
+  { "abr-api",         { NULL }, 1954,  "tcp"  },
+  { "abr-api",         { NULL }, 1954,  "udp"  },
+  { "abr-secure",      { NULL }, 1955,  "tcp"  },
+  { "abr-secure",      { NULL }, 1955,  "udp"  },
+  { "vrtl-vmf-ds",     { NULL }, 1956,  "tcp"  },
+  { "vrtl-vmf-ds",     { NULL }, 1956,  "udp"  },
+  { "unix-status",     { NULL }, 1957,  "tcp"  },
+  { "unix-status",     { NULL }, 1957,  "udp"  },
+  { "dxadmind",        { NULL }, 1958,  "tcp"  },
+  { "dxadmind",        { NULL }, 1958,  "udp"  },
+  { "simp-all",        { NULL }, 1959,  "tcp"  },
+  { "simp-all",        { NULL }, 1959,  "udp"  },
+  { "nasmanager",      { NULL }, 1960,  "tcp"  },
+  { "nasmanager",      { NULL }, 1960,  "udp"  },
+  { "bts-appserver",   { NULL }, 1961,  "tcp"  },
+  { "bts-appserver",   { NULL }, 1961,  "udp"  },
+  { "biap-mp",         { NULL }, 1962,  "tcp"  },
+  { "biap-mp",         { NULL }, 1962,  "udp"  },
+  { "webmachine",      { NULL }, 1963,  "tcp"  },
+  { "webmachine",      { NULL }, 1963,  "udp"  },
+  { "solid-e-engine",  { NULL }, 1964,  "tcp"  },
+  { "solid-e-engine",  { NULL }, 1964,  "udp"  },
+  { "tivoli-npm",      { NULL }, 1965,  "tcp"  },
+  { "tivoli-npm",      { NULL }, 1965,  "udp"  },
+  { "slush",           { NULL }, 1966,  "tcp"  },
+  { "slush",           { NULL }, 1966,  "udp"  },
+  { "sns-quote",       { NULL }, 1967,  "tcp"  },
+  { "sns-quote",       { NULL }, 1967,  "udp"  },
+  { "lipsinc",         { NULL }, 1968,  "tcp"  },
+  { "lipsinc",         { NULL }, 1968,  "udp"  },
+  { "lipsinc1",        { NULL }, 1969,  "tcp"  },
+  { "lipsinc1",        { NULL }, 1969,  "udp"  },
+  { "netop-rc",        { NULL }, 1970,  "tcp"  },
+  { "netop-rc",        { NULL }, 1970,  "udp"  },
+  { "netop-school",    { NULL }, 1971,  "tcp"  },
+  { "netop-school",    { NULL }, 1971,  "udp"  },
+  { "intersys-cache",  { NULL }, 1972,  "tcp"  },
+  { "intersys-cache",  { NULL }, 1972,  "udp"  },
+  { "dlsrap",          { NULL }, 1973,  "tcp"  },
+  { "dlsrap",          { NULL }, 1973,  "udp"  },
+  { "drp",             { NULL }, 1974,  "tcp"  },
+  { "drp",             { NULL }, 1974,  "udp"  },
+  { "tcoflashagent",   { NULL }, 1975,  "tcp"  },
+  { "tcoflashagent",   { NULL }, 1975,  "udp"  },
+  { "tcoregagent",     { NULL }, 1976,  "tcp"  },
+  { "tcoregagent",     { NULL }, 1976,  "udp"  },
+  { "tcoaddressbook",  { NULL }, 1977,  "tcp"  },
+  { "tcoaddressbook",  { NULL }, 1977,  "udp"  },
+  { "unisql",          { NULL }, 1978,  "tcp"  },
+  { "unisql",          { NULL }, 1978,  "udp"  },
+  { "unisql-java",     { NULL }, 1979,  "tcp"  },
+  { "unisql-java",     { NULL }, 1979,  "udp"  },
+  { "pearldoc-xact",   { NULL }, 1980,  "tcp"  },
+  { "pearldoc-xact",   { NULL }, 1980,  "udp"  },
+  { "p2pq",            { NULL }, 1981,  "tcp"  },
+  { "p2pq",            { NULL }, 1981,  "udp"  },
+  { "estamp",          { NULL }, 1982,  "tcp"  },
+  { "estamp",          { NULL }, 1982,  "udp"  },
+  { "lhtp",            { NULL }, 1983,  "tcp"  },
+  { "lhtp",            { NULL }, 1983,  "udp"  },
+  { "bb",              { NULL }, 1984,  "tcp"  },
+  { "bb",              { NULL }, 1984,  "udp"  },
+  { "hsrp",            { NULL }, 1985,  "tcp"  },
+  { "hsrp",            { NULL }, 1985,  "udp"  },
+  { "licensedaemon",   { NULL }, 1986,  "tcp"  },
+  { "licensedaemon",   { NULL }, 1986,  "udp"  },
+  { "tr-rsrb-p1",      { NULL }, 1987,  "tcp"  },
+  { "tr-rsrb-p1",      { NULL }, 1987,  "udp"  },
+  { "tr-rsrb-p2",      { NULL }, 1988,  "tcp"  },
+  { "tr-rsrb-p2",      { NULL }, 1988,  "udp"  },
+  { "tr-rsrb-p3",      { NULL }, 1989,  "tcp"  },
+  { "tr-rsrb-p3",      { NULL }, 1989,  "udp"  },
+  { "mshnet",          { NULL }, 1989,  "tcp"  },
+  { "mshnet",          { NULL }, 1989,  "udp"  },
+  { "stun-p1",         { NULL }, 1990,  "tcp"  },
+  { "stun-p1",         { NULL }, 1990,  "udp"  },
+  { "stun-p2",         { NULL }, 1991,  "tcp"  },
+  { "stun-p2",         { NULL }, 1991,  "udp"  },
+  { "stun-p3",         { NULL }, 1992,  "tcp"  },
+  { "stun-p3",         { NULL }, 1992,  "udp"  },
+  { "ipsendmsg",       { NULL }, 1992,  "tcp"  },
+  { "ipsendmsg",       { NULL }, 1992,  "udp"  },
+  { "snmp-tcp-port",   { NULL }, 1993,  "tcp"  },
+  { "snmp-tcp-port",   { NULL }, 1993,  "udp"  },
+  { "stun-port",       { NULL }, 1994,  "tcp"  },
+  { "stun-port",       { NULL }, 1994,  "udp"  },
+  { "perf-port",       { NULL }, 1995,  "tcp"  },
+  { "perf-port",       { NULL }, 1995,  "udp"  },
+  { "tr-rsrb-port",    { NULL }, 1996,  "tcp"  },
+  { "tr-rsrb-port",    { NULL }, 1996,  "udp"  },
+  { "gdp-port",        { NULL }, 1997,  "tcp"  },
+  { "gdp-port",        { NULL }, 1997,  "udp"  },
+  { "x25-svc-port",    { NULL }, 1998,  "tcp"  },
+  { "x25-svc-port",    { NULL }, 1998,  "udp"  },
+  { "tcp-id-port",     { NULL }, 1999,  "tcp"  },
+  { "tcp-id-port",     { NULL }, 1999,  "udp"  },
+  { "cisco-sccp",      { NULL }, 2000,  "tcp"  },
+  { "cisco-sccp",      { NULL }, 2000,  "udp"  },
+  { "dc",              { NULL }, 2001,  "tcp"  },
+  { "wizard",          { NULL }, 2001,  "udp"  },
+  { "globe",           { NULL }, 2002,  "tcp"  },
+  { "globe",           { NULL }, 2002,  "udp"  },
+  { "brutus",          { NULL }, 2003,  "tcp"  },
+  { "brutus",          { NULL }, 2003,  "udp"  },
+  { "mailbox",         { NULL }, 2004,  "tcp"  },
+  { "emce",            { NULL }, 2004,  "udp"  },
+  { "berknet",         { NULL }, 2005,  "tcp"  },
+  { "oracle",          { NULL }, 2005,  "udp"  },
+  { "invokator",       { NULL }, 2006,  "tcp"  },
+  { "raid-cd",         { NULL }, 2006,  "udp"  },
+  { "dectalk",         { NULL }, 2007,  "tcp"  },
+  { "raid-am",         { NULL }, 2007,  "udp"  },
+  { "conf",            { NULL }, 2008,  "tcp"  },
+  { "terminaldb",      { NULL }, 2008,  "udp"  },
+  { "news",            { NULL }, 2009,  "tcp"  },
+  { "whosockami",      { NULL }, 2009,  "udp"  },
+  { "search",          { NULL }, 2010,  "tcp"  },
+  { "pipe_server",     { NULL }, 2010,  "udp"  },
+  { "raid-cc",         { NULL }, 2011,  "tcp"  },
+  { "servserv",        { NULL }, 2011,  "udp"  },
+  { "ttyinfo",         { NULL }, 2012,  "tcp"  },
+  { "raid-ac",         { NULL }, 2012,  "udp"  },
+  { "raid-am",         { NULL }, 2013,  "tcp"  },
+  { "raid-cd",         { NULL }, 2013,  "udp"  },
+  { "troff",           { NULL }, 2014,  "tcp"  },
+  { "raid-sf",         { NULL }, 2014,  "udp"  },
+  { "cypress",         { NULL }, 2015,  "tcp"  },
+  { "raid-cs",         { NULL }, 2015,  "udp"  },
+  { "bootserver",      { NULL }, 2016,  "tcp"  },
+  { "bootserver",      { NULL }, 2016,  "udp"  },
+  { "cypress-stat",    { NULL }, 2017,  "tcp"  },
+  { "bootclient",      { NULL }, 2017,  "udp"  },
+  { "terminaldb",      { NULL }, 2018,  "tcp"  },
+  { "rellpack",        { NULL }, 2018,  "udp"  },
+  { "whosockami",      { NULL }, 2019,  "tcp"  },
+  { "about",           { NULL }, 2019,  "udp"  },
+  { "xinupageserver",  { NULL }, 2020,  "tcp"  },
+  { "xinupageserver",  { NULL }, 2020,  "udp"  },
+  { "servexec",        { NULL }, 2021,  "tcp"  },
+  { "xinuexpansion1",  { NULL }, 2021,  "udp"  },
+  { "down",            { NULL }, 2022,  "tcp"  },
+  { "xinuexpansion2",  { NULL }, 2022,  "udp"  },
+  { "xinuexpansion3",  { NULL }, 2023,  "tcp"  },
+  { "xinuexpansion3",  { NULL }, 2023,  "udp"  },
+  { "xinuexpansion4",  { NULL }, 2024,  "tcp"  },
+  { "xinuexpansion4",  { NULL }, 2024,  "udp"  },
+  { "ellpack",         { NULL }, 2025,  "tcp"  },
+  { "xribs",           { NULL }, 2025,  "udp"  },
+  { "scrabble",        { NULL }, 2026,  "tcp"  },
+  { "scrabble",        { NULL }, 2026,  "udp"  },
+  { "shadowserver",    { NULL }, 2027,  "tcp"  },
+  { "shadowserver",    { NULL }, 2027,  "udp"  },
+  { "submitserver",    { NULL }, 2028,  "tcp"  },
+  { "submitserver",    { NULL }, 2028,  "udp"  },
+  { "hsrpv6",          { NULL }, 2029,  "tcp"  },
+  { "hsrpv6",          { NULL }, 2029,  "udp"  },
+  { "device2",         { NULL }, 2030,  "tcp"  },
+  { "device2",         { NULL }, 2030,  "udp"  },
+  { "mobrien-chat",    { NULL }, 2031,  "tcp"  },
+  { "mobrien-chat",    { NULL }, 2031,  "udp"  },
+  { "blackboard",      { NULL }, 2032,  "tcp"  },
+  { "blackboard",      { NULL }, 2032,  "udp"  },
+  { "glogger",         { NULL }, 2033,  "tcp"  },
+  { "glogger",         { NULL }, 2033,  "udp"  },
+  { "scoremgr",        { NULL }, 2034,  "tcp"  },
+  { "scoremgr",        { NULL }, 2034,  "udp"  },
+  { "imsldoc",         { NULL }, 2035,  "tcp"  },
+  { "imsldoc",         { NULL }, 2035,  "udp"  },
+  { "e-dpnet",         { NULL }, 2036,  "tcp"  },
+  { "e-dpnet",         { NULL }, 2036,  "udp"  },
+  { "applus",          { NULL }, 2037,  "tcp"  },
+  { "applus",          { NULL }, 2037,  "udp"  },
+  { "objectmanager",   { NULL }, 2038,  "tcp"  },
+  { "objectmanager",   { NULL }, 2038,  "udp"  },
+  { "prizma",          { NULL }, 2039,  "tcp"  },
+  { "prizma",          { NULL }, 2039,  "udp"  },
+  { "lam",             { NULL }, 2040,  "tcp"  },
+  { "lam",             { NULL }, 2040,  "udp"  },
+  { "interbase",       { NULL }, 2041,  "tcp"  },
+  { "interbase",       { NULL }, 2041,  "udp"  },
+  { "isis",            { NULL }, 2042,  "tcp"  },
+  { "isis",            { NULL }, 2042,  "udp"  },
+  { "isis-bcast",      { NULL }, 2043,  "tcp"  },
+  { "isis-bcast",      { NULL }, 2043,  "udp"  },
+  { "rimsl",           { NULL }, 2044,  "tcp"  },
+  { "rimsl",           { NULL }, 2044,  "udp"  },
+  { "cdfunc",          { NULL }, 2045,  "tcp"  },
+  { "cdfunc",          { NULL }, 2045,  "udp"  },
+  { "sdfunc",          { NULL }, 2046,  "tcp"  },
+  { "sdfunc",          { NULL }, 2046,  "udp"  },
+  { "dls",             { NULL }, 2047,  "tcp"  },
+  { "dls",             { NULL }, 2047,  "udp"  },
+  { "dls-monitor",     { NULL }, 2048,  "tcp"  },
+  { "dls-monitor",     { NULL }, 2048,  "udp"  },
+  { "shilp",           { NULL }, 2049,  "tcp"  },
+  { "shilp",           { NULL }, 2049,  "udp"  },
+  { "nfs",             { NULL }, 2049,  "tcp"  },
+  { "nfs",             { NULL }, 2049,  "udp"  },
+  { "nfs",             { NULL }, 2049,  "sctp" },
+  { "av-emb-config",   { NULL }, 2050,  "tcp"  },
+  { "av-emb-config",   { NULL }, 2050,  "udp"  },
+  { "epnsdp",          { NULL }, 2051,  "tcp"  },
+  { "epnsdp",          { NULL }, 2051,  "udp"  },
+  { "clearvisn",       { NULL }, 2052,  "tcp"  },
+  { "clearvisn",       { NULL }, 2052,  "udp"  },
+  { "lot105-ds-upd",   { NULL }, 2053,  "tcp"  },
+  { "lot105-ds-upd",   { NULL }, 2053,  "udp"  },
+  { "weblogin",        { NULL }, 2054,  "tcp"  },
+  { "weblogin",        { NULL }, 2054,  "udp"  },
+  { "iop",             { NULL }, 2055,  "tcp"  },
+  { "iop",             { NULL }, 2055,  "udp"  },
+  { "omnisky",         { NULL }, 2056,  "tcp"  },
+  { "omnisky",         { NULL }, 2056,  "udp"  },
+  { "rich-cp",         { NULL }, 2057,  "tcp"  },
+  { "rich-cp",         { NULL }, 2057,  "udp"  },
+  { "newwavesearch",   { NULL }, 2058,  "tcp"  },
+  { "newwavesearch",   { NULL }, 2058,  "udp"  },
+  { "bmc-messaging",   { NULL }, 2059,  "tcp"  },
+  { "bmc-messaging",   { NULL }, 2059,  "udp"  },
+  { "teleniumdaemon",  { NULL }, 2060,  "tcp"  },
+  { "teleniumdaemon",  { NULL }, 2060,  "udp"  },
+  { "netmount",        { NULL }, 2061,  "tcp"  },
+  { "netmount",        { NULL }, 2061,  "udp"  },
+  { "icg-swp",         { NULL }, 2062,  "tcp"  },
+  { "icg-swp",         { NULL }, 2062,  "udp"  },
+  { "icg-bridge",      { NULL }, 2063,  "tcp"  },
+  { "icg-bridge",      { NULL }, 2063,  "udp"  },
+  { "icg-iprelay",     { NULL }, 2064,  "tcp"  },
+  { "icg-iprelay",     { NULL }, 2064,  "udp"  },
+  { "dlsrpn",          { NULL }, 2065,  "tcp"  },
+  { "dlsrpn",          { NULL }, 2065,  "udp"  },
+  { "aura",            { NULL }, 2066,  "tcp"  },
+  { "aura",            { NULL }, 2066,  "udp"  },
+  { "dlswpn",          { NULL }, 2067,  "tcp"  },
+  { "dlswpn",          { NULL }, 2067,  "udp"  },
+  { "avauthsrvprtcl",  { NULL }, 2068,  "tcp"  },
+  { "avauthsrvprtcl",  { NULL }, 2068,  "udp"  },
+  { "event-port",      { NULL }, 2069,  "tcp"  },
+  { "event-port",      { NULL }, 2069,  "udp"  },
+  { "ah-esp-encap",    { NULL }, 2070,  "tcp"  },
+  { "ah-esp-encap",    { NULL }, 2070,  "udp"  },
+  { "acp-port",        { NULL }, 2071,  "tcp"  },
+  { "acp-port",        { NULL }, 2071,  "udp"  },
+  { "msync",           { NULL }, 2072,  "tcp"  },
+  { "msync",           { NULL }, 2072,  "udp"  },
+  { "gxs-data-port",   { NULL }, 2073,  "tcp"  },
+  { "gxs-data-port",   { NULL }, 2073,  "udp"  },
+  { "vrtl-vmf-sa",     { NULL }, 2074,  "tcp"  },
+  { "vrtl-vmf-sa",     { NULL }, 2074,  "udp"  },
+  { "newlixengine",    { NULL }, 2075,  "tcp"  },
+  { "newlixengine",    { NULL }, 2075,  "udp"  },
+  { "newlixconfig",    { NULL }, 2076,  "tcp"  },
+  { "newlixconfig",    { NULL }, 2076,  "udp"  },
+  { "tsrmagt",         { NULL }, 2077,  "tcp"  },
+  { "tsrmagt",         { NULL }, 2077,  "udp"  },
+  { "tpcsrvr",         { NULL }, 2078,  "tcp"  },
+  { "tpcsrvr",         { NULL }, 2078,  "udp"  },
+  { "idware-router",   { NULL }, 2079,  "tcp"  },
+  { "idware-router",   { NULL }, 2079,  "udp"  },
+  { "autodesk-nlm",    { NULL }, 2080,  "tcp"  },
+  { "autodesk-nlm",    { NULL }, 2080,  "udp"  },
+  { "kme-trap-port",   { NULL }, 2081,  "tcp"  },
+  { "kme-trap-port",   { NULL }, 2081,  "udp"  },
+  { "infowave",        { NULL }, 2082,  "tcp"  },
+  { "infowave",        { NULL }, 2082,  "udp"  },
+  { "radsec",          { NULL }, 2083,  "tcp"  },
+  { "radsec",          { NULL }, 2083,  "udp"  },
+  { "sunclustergeo",   { NULL }, 2084,  "tcp"  },
+  { "sunclustergeo",   { NULL }, 2084,  "udp"  },
+  { "ada-cip",         { NULL }, 2085,  "tcp"  },
+  { "ada-cip",         { NULL }, 2085,  "udp"  },
+  { "gnunet",          { NULL }, 2086,  "tcp"  },
+  { "gnunet",          { NULL }, 2086,  "udp"  },
+  { "eli",             { NULL }, 2087,  "tcp"  },
+  { "eli",             { NULL }, 2087,  "udp"  },
+  { "ip-blf",          { NULL }, 2088,  "tcp"  },
+  { "ip-blf",          { NULL }, 2088,  "udp"  },
+  { "sep",             { NULL }, 2089,  "tcp"  },
+  { "sep",             { NULL }, 2089,  "udp"  },
+  { "lrp",             { NULL }, 2090,  "tcp"  },
+  { "lrp",             { NULL }, 2090,  "udp"  },
+  { "prp",             { NULL }, 2091,  "tcp"  },
+  { "prp",             { NULL }, 2091,  "udp"  },
+  { "descent3",        { NULL }, 2092,  "tcp"  },
+  { "descent3",        { NULL }, 2092,  "udp"  },
+  { "nbx-cc",          { NULL }, 2093,  "tcp"  },
+  { "nbx-cc",          { NULL }, 2093,  "udp"  },
+  { "nbx-au",          { NULL }, 2094,  "tcp"  },
+  { "nbx-au",          { NULL }, 2094,  "udp"  },
+  { "nbx-ser",         { NULL }, 2095,  "tcp"  },
+  { "nbx-ser",         { NULL }, 2095,  "udp"  },
+  { "nbx-dir",         { NULL }, 2096,  "tcp"  },
+  { "nbx-dir",         { NULL }, 2096,  "udp"  },
+  { "jetformpreview",  { NULL }, 2097,  "tcp"  },
+  { "jetformpreview",  { NULL }, 2097,  "udp"  },
+  { "dialog-port",     { NULL }, 2098,  "tcp"  },
+  { "dialog-port",     { NULL }, 2098,  "udp"  },
+  { "h2250-annex-g",   { NULL }, 2099,  "tcp"  },
+  { "h2250-annex-g",   { NULL }, 2099,  "udp"  },
+  { "amiganetfs",      { NULL }, 2100,  "tcp"  },
+  { "amiganetfs",      { NULL }, 2100,  "udp"  },
+  { "rtcm-sc104",      { NULL }, 2101,  "tcp"  },
+  { "rtcm-sc104",      { NULL }, 2101,  "udp"  },
+  { "zephyr-srv",      { NULL }, 2102,  "tcp"  },
+  { "zephyr-srv",      { NULL }, 2102,  "udp"  },
+  { "zephyr-clt",      { NULL }, 2103,  "tcp"  },
+  { "zephyr-clt",      { NULL }, 2103,  "udp"  },
+  { "zephyr-hm",       { NULL }, 2104,  "tcp"  },
+  { "zephyr-hm",       { NULL }, 2104,  "udp"  },
+  { "minipay",         { NULL }, 2105,  "tcp"  },
+  { "minipay",         { NULL }, 2105,  "udp"  },
+  { "mzap",            { NULL }, 2106,  "tcp"  },
+  { "mzap",            { NULL }, 2106,  "udp"  },
+  { "bintec-admin",    { NULL }, 2107,  "tcp"  },
+  { "bintec-admin",    { NULL }, 2107,  "udp"  },
+  { "comcam",          { NULL }, 2108,  "tcp"  },
+  { "comcam",          { NULL }, 2108,  "udp"  },
+  { "ergolight",       { NULL }, 2109,  "tcp"  },
+  { "ergolight",       { NULL }, 2109,  "udp"  },
+  { "umsp",            { NULL }, 2110,  "tcp"  },
+  { "umsp",            { NULL }, 2110,  "udp"  },
+  { "dsatp",           { NULL }, 2111,  "tcp"  },
+  { "dsatp",           { NULL }, 2111,  "udp"  },
+  { "idonix-metanet",  { NULL }, 2112,  "tcp"  },
+  { "idonix-metanet",  { NULL }, 2112,  "udp"  },
+  { "hsl-storm",       { NULL }, 2113,  "tcp"  },
+  { "hsl-storm",       { NULL }, 2113,  "udp"  },
+  { "newheights",      { NULL }, 2114,  "tcp"  },
+  { "newheights",      { NULL }, 2114,  "udp"  },
+  { "kdm",             { NULL }, 2115,  "tcp"  },
+  { "kdm",             { NULL }, 2115,  "udp"  },
+  { "ccowcmr",         { NULL }, 2116,  "tcp"  },
+  { "ccowcmr",         { NULL }, 2116,  "udp"  },
+  { "mentaclient",     { NULL }, 2117,  "tcp"  },
+  { "mentaclient",     { NULL }, 2117,  "udp"  },
+  { "mentaserver",     { NULL }, 2118,  "tcp"  },
+  { "mentaserver",     { NULL }, 2118,  "udp"  },
+  { "gsigatekeeper",   { NULL }, 2119,  "tcp"  },
+  { "gsigatekeeper",   { NULL }, 2119,  "udp"  },
+  { "qencp",           { NULL }, 2120,  "tcp"  },
+  { "qencp",           { NULL }, 2120,  "udp"  },
+  { "scientia-ssdb",   { NULL }, 2121,  "tcp"  },
+  { "scientia-ssdb",   { NULL }, 2121,  "udp"  },
+  { "caupc-remote",    { NULL }, 2122,  "tcp"  },
+  { "caupc-remote",    { NULL }, 2122,  "udp"  },
+  { "gtp-control",     { NULL }, 2123,  "tcp"  },
+  { "gtp-control",     { NULL }, 2123,  "udp"  },
+  { "elatelink",       { NULL }, 2124,  "tcp"  },
+  { "elatelink",       { NULL }, 2124,  "udp"  },
+  { "lockstep",        { NULL }, 2125,  "tcp"  },
+  { "lockstep",        { NULL }, 2125,  "udp"  },
+  { "pktcable-cops",   { NULL }, 2126,  "tcp"  },
+  { "pktcable-cops",   { NULL }, 2126,  "udp"  },
+  { "index-pc-wb",     { NULL }, 2127,  "tcp"  },
+  { "index-pc-wb",     { NULL }, 2127,  "udp"  },
+  { "net-steward",     { NULL }, 2128,  "tcp"  },
+  { "net-steward",     { NULL }, 2128,  "udp"  },
+  { "cs-live",         { NULL }, 2129,  "tcp"  },
+  { "cs-live",         { NULL }, 2129,  "udp"  },
+  { "xds",             { NULL }, 2130,  "tcp"  },
+  { "xds",             { NULL }, 2130,  "udp"  },
+  { "avantageb2b",     { NULL }, 2131,  "tcp"  },
+  { "avantageb2b",     { NULL }, 2131,  "udp"  },
+  { "solera-epmap",    { NULL }, 2132,  "tcp"  },
+  { "solera-epmap",    { NULL }, 2132,  "udp"  },
+  { "zymed-zpp",       { NULL }, 2133,  "tcp"  },
+  { "zymed-zpp",       { NULL }, 2133,  "udp"  },
+  { "avenue",          { NULL }, 2134,  "tcp"  },
+  { "avenue",          { NULL }, 2134,  "udp"  },
+  { "gris",            { NULL }, 2135,  "tcp"  },
+  { "gris",            { NULL }, 2135,  "udp"  },
+  { "appworxsrv",      { NULL }, 2136,  "tcp"  },
+  { "appworxsrv",      { NULL }, 2136,  "udp"  },
+  { "connect",         { NULL }, 2137,  "tcp"  },
+  { "connect",         { NULL }, 2137,  "udp"  },
+  { "unbind-cluster",  { NULL }, 2138,  "tcp"  },
+  { "unbind-cluster",  { NULL }, 2138,  "udp"  },
+  { "ias-auth",        { NULL }, 2139,  "tcp"  },
+  { "ias-auth",        { NULL }, 2139,  "udp"  },
+  { "ias-reg",         { NULL }, 2140,  "tcp"  },
+  { "ias-reg",         { NULL }, 2140,  "udp"  },
+  { "ias-admind",      { NULL }, 2141,  "tcp"  },
+  { "ias-admind",      { NULL }, 2141,  "udp"  },
+  { "tdmoip",          { NULL }, 2142,  "tcp"  },
+  { "tdmoip",          { NULL }, 2142,  "udp"  },
+  { "lv-jc",           { NULL }, 2143,  "tcp"  },
+  { "lv-jc",           { NULL }, 2143,  "udp"  },
+  { "lv-ffx",          { NULL }, 2144,  "tcp"  },
+  { "lv-ffx",          { NULL }, 2144,  "udp"  },
+  { "lv-pici",         { NULL }, 2145,  "tcp"  },
+  { "lv-pici",         { NULL }, 2145,  "udp"  },
+  { "lv-not",          { NULL }, 2146,  "tcp"  },
+  { "lv-not",          { NULL }, 2146,  "udp"  },
+  { "lv-auth",         { NULL }, 2147,  "tcp"  },
+  { "lv-auth",         { NULL }, 2147,  "udp"  },
+  { "veritas-ucl",     { NULL }, 2148,  "tcp"  },
+  { "veritas-ucl",     { NULL }, 2148,  "udp"  },
+  { "acptsys",         { NULL }, 2149,  "tcp"  },
+  { "acptsys",         { NULL }, 2149,  "udp"  },
+  { "dynamic3d",       { NULL }, 2150,  "tcp"  },
+  { "dynamic3d",       { NULL }, 2150,  "udp"  },
+  { "docent",          { NULL }, 2151,  "tcp"  },
+  { "docent",          { NULL }, 2151,  "udp"  },
+  { "gtp-user",        { NULL }, 2152,  "tcp"  },
+  { "gtp-user",        { NULL }, 2152,  "udp"  },
+  { "ctlptc",          { NULL }, 2153,  "tcp"  },
+  { "ctlptc",          { NULL }, 2153,  "udp"  },
+  { "stdptc",          { NULL }, 2154,  "tcp"  },
+  { "stdptc",          { NULL }, 2154,  "udp"  },
+  { "brdptc",          { NULL }, 2155,  "tcp"  },
+  { "brdptc",          { NULL }, 2155,  "udp"  },
+  { "trp",             { NULL }, 2156,  "tcp"  },
+  { "trp",             { NULL }, 2156,  "udp"  },
+  { "xnds",            { NULL }, 2157,  "tcp"  },
+  { "xnds",            { NULL }, 2157,  "udp"  },
+  { "touchnetplus",    { NULL }, 2158,  "tcp"  },
+  { "touchnetplus",    { NULL }, 2158,  "udp"  },
+  { "gdbremote",       { NULL }, 2159,  "tcp"  },
+  { "gdbremote",       { NULL }, 2159,  "udp"  },
+  { "apc-2160",        { NULL }, 2160,  "tcp"  },
+  { "apc-2160",        { NULL }, 2160,  "udp"  },
+  { "apc-2161",        { NULL }, 2161,  "tcp"  },
+  { "apc-2161",        { NULL }, 2161,  "udp"  },
+  { "navisphere",      { NULL }, 2162,  "tcp"  },
+  { "navisphere",      { NULL }, 2162,  "udp"  },
+  { "navisphere-sec",  { NULL }, 2163,  "tcp"  },
+  { "navisphere-sec",  { NULL }, 2163,  "udp"  },
+  { "ddns-v3",         { NULL }, 2164,  "tcp"  },
+  { "ddns-v3",         { NULL }, 2164,  "udp"  },
+  { "x-bone-api",      { NULL }, 2165,  "tcp"  },
+  { "x-bone-api",      { NULL }, 2165,  "udp"  },
+  { "iwserver",        { NULL }, 2166,  "tcp"  },
+  { "iwserver",        { NULL }, 2166,  "udp"  },
+  { "raw-serial",      { NULL }, 2167,  "tcp"  },
+  { "raw-serial",      { NULL }, 2167,  "udp"  },
+  { "easy-soft-mux",   { NULL }, 2168,  "tcp"  },
+  { "easy-soft-mux",   { NULL }, 2168,  "udp"  },
+  { "brain",           { NULL }, 2169,  "tcp"  },
+  { "brain",           { NULL }, 2169,  "udp"  },
+  { "eyetv",           { NULL }, 2170,  "tcp"  },
+  { "eyetv",           { NULL }, 2170,  "udp"  },
+  { "msfw-storage",    { NULL }, 2171,  "tcp"  },
+  { "msfw-storage",    { NULL }, 2171,  "udp"  },
+  { "msfw-s-storage",  { NULL }, 2172,  "tcp"  },
+  { "msfw-s-storage",  { NULL }, 2172,  "udp"  },
+  { "msfw-replica",    { NULL }, 2173,  "tcp"  },
+  { "msfw-replica",    { NULL }, 2173,  "udp"  },
+  { "msfw-array",      { NULL }, 2174,  "tcp"  },
+  { "msfw-array",      { NULL }, 2174,  "udp"  },
+  { "airsync",         { NULL }, 2175,  "tcp"  },
+  { "airsync",         { NULL }, 2175,  "udp"  },
+  { "rapi",            { NULL }, 2176,  "tcp"  },
+  { "rapi",            { NULL }, 2176,  "udp"  },
+  { "qwave",           { NULL }, 2177,  "tcp"  },
+  { "qwave",           { NULL }, 2177,  "udp"  },
+  { "bitspeer",        { NULL }, 2178,  "tcp"  },
+  { "bitspeer",        { NULL }, 2178,  "udp"  },
+  { "vmrdp",           { NULL }, 2179,  "tcp"  },
+  { "vmrdp",           { NULL }, 2179,  "udp"  },
+  { "mc-gt-srv",       { NULL }, 2180,  "tcp"  },
+  { "mc-gt-srv",       { NULL }, 2180,  "udp"  },
+  { "eforward",        { NULL }, 2181,  "tcp"  },
+  { "eforward",        { NULL }, 2181,  "udp"  },
+  { "cgn-stat",        { NULL }, 2182,  "tcp"  },
+  { "cgn-stat",        { NULL }, 2182,  "udp"  },
+  { "cgn-config",      { NULL }, 2183,  "tcp"  },
+  { "cgn-config",      { NULL }, 2183,  "udp"  },
+  { "nvd",             { NULL }, 2184,  "tcp"  },
+  { "nvd",             { NULL }, 2184,  "udp"  },
+  { "onbase-dds",      { NULL }, 2185,  "tcp"  },
+  { "onbase-dds",      { NULL }, 2185,  "udp"  },
+  { "gtaua",           { NULL }, 2186,  "tcp"  },
+  { "gtaua",           { NULL }, 2186,  "udp"  },
+  { "ssmc",            { NULL }, 2187,  "tcp"  },
+  { "ssmd",            { NULL }, 2187,  "udp"  },
+  { "tivoconnect",     { NULL }, 2190,  "tcp"  },
+  { "tivoconnect",     { NULL }, 2190,  "udp"  },
+  { "tvbus",           { NULL }, 2191,  "tcp"  },
+  { "tvbus",           { NULL }, 2191,  "udp"  },
+  { "asdis",           { NULL }, 2192,  "tcp"  },
+  { "asdis",           { NULL }, 2192,  "udp"  },
+  { "drwcs",           { NULL }, 2193,  "tcp"  },
+  { "drwcs",           { NULL }, 2193,  "udp"  },
+  { "mnp-exchange",    { NULL }, 2197,  "tcp"  },
+  { "mnp-exchange",    { NULL }, 2197,  "udp"  },
+  { "onehome-remote",  { NULL }, 2198,  "tcp"  },
+  { "onehome-remote",  { NULL }, 2198,  "udp"  },
+  { "onehome-help",    { NULL }, 2199,  "tcp"  },
+  { "onehome-help",    { NULL }, 2199,  "udp"  },
+  { "ici",             { NULL }, 2200,  "tcp"  },
+  { "ici",             { NULL }, 2200,  "udp"  },
+  { "ats",             { NULL }, 2201,  "tcp"  },
+  { "ats",             { NULL }, 2201,  "udp"  },
+  { "imtc-map",        { NULL }, 2202,  "tcp"  },
+  { "imtc-map",        { NULL }, 2202,  "udp"  },
+  { "b2-runtime",      { NULL }, 2203,  "tcp"  },
+  { "b2-runtime",      { NULL }, 2203,  "udp"  },
+  { "b2-license",      { NULL }, 2204,  "tcp"  },
+  { "b2-license",      { NULL }, 2204,  "udp"  },
+  { "jps",             { NULL }, 2205,  "tcp"  },
+  { "jps",             { NULL }, 2205,  "udp"  },
+  { "hpocbus",         { NULL }, 2206,  "tcp"  },
+  { "hpocbus",         { NULL }, 2206,  "udp"  },
+  { "hpssd",           { NULL }, 2207,  "tcp"  },
+  { "hpssd",           { NULL }, 2207,  "udp"  },
+  { "hpiod",           { NULL }, 2208,  "tcp"  },
+  { "hpiod",           { NULL }, 2208,  "udp"  },
+  { "rimf-ps",         { NULL }, 2209,  "tcp"  },
+  { "rimf-ps",         { NULL }, 2209,  "udp"  },
+  { "noaaport",        { NULL }, 2210,  "tcp"  },
+  { "noaaport",        { NULL }, 2210,  "udp"  },
+  { "emwin",           { NULL }, 2211,  "tcp"  },
+  { "emwin",           { NULL }, 2211,  "udp"  },
+  { "leecoposserver",  { NULL }, 2212,  "tcp"  },
+  { "leecoposserver",  { NULL }, 2212,  "udp"  },
+  { "kali",            { NULL }, 2213,  "tcp"  },
+  { "kali",            { NULL }, 2213,  "udp"  },
+  { "rpi",             { NULL }, 2214,  "tcp"  },
+  { "rpi",             { NULL }, 2214,  "udp"  },
+  { "ipcore",          { NULL }, 2215,  "tcp"  },
+  { "ipcore",          { NULL }, 2215,  "udp"  },
+  { "vtu-comms",       { NULL }, 2216,  "tcp"  },
+  { "vtu-comms",       { NULL }, 2216,  "udp"  },
+  { "gotodevice",      { NULL }, 2217,  "tcp"  },
+  { "gotodevice",      { NULL }, 2217,  "udp"  },
+  { "bounzza",         { NULL }, 2218,  "tcp"  },
+  { "bounzza",         { NULL }, 2218,  "udp"  },
+  { "netiq-ncap",      { NULL }, 2219,  "tcp"  },
+  { "netiq-ncap",      { NULL }, 2219,  "udp"  },
+  { "netiq",           { NULL }, 2220,  "tcp"  },
+  { "netiq",           { NULL }, 2220,  "udp"  },
+  { "rockwell-csp1",   { NULL }, 2221,  "tcp"  },
+  { "rockwell-csp1",   { NULL }, 2221,  "udp"  },
+  { "EtherNet/IP-1",   { NULL }, 2222,  "tcp"  },
+  { "EtherNet/IP-1",   { NULL }, 2222,  "udp"  },
+  { "rockwell-csp2",   { NULL }, 2223,  "tcp"  },
+  { "rockwell-csp2",   { NULL }, 2223,  "udp"  },
+  { "efi-mg",          { NULL }, 2224,  "tcp"  },
+  { "efi-mg",          { NULL }, 2224,  "udp"  },
+  { "rcip-itu",        { NULL }, 2225,  "tcp"  },
+  { "rcip-itu",        { NULL }, 2225,  "sctp" },
+  { "di-drm",          { NULL }, 2226,  "tcp"  },
+  { "di-drm",          { NULL }, 2226,  "udp"  },
+  { "di-msg",          { NULL }, 2227,  "tcp"  },
+  { "di-msg",          { NULL }, 2227,  "udp"  },
+  { "ehome-ms",        { NULL }, 2228,  "tcp"  },
+  { "ehome-ms",        { NULL }, 2228,  "udp"  },
+  { "datalens",        { NULL }, 2229,  "tcp"  },
+  { "datalens",        { NULL }, 2229,  "udp"  },
+  { "queueadm",        { NULL }, 2230,  "tcp"  },
+  { "queueadm",        { NULL }, 2230,  "udp"  },
+  { "wimaxasncp",      { NULL }, 2231,  "tcp"  },
+  { "wimaxasncp",      { NULL }, 2231,  "udp"  },
+  { "ivs-video",       { NULL }, 2232,  "tcp"  },
+  { "ivs-video",       { NULL }, 2232,  "udp"  },
+  { "infocrypt",       { NULL }, 2233,  "tcp"  },
+  { "infocrypt",       { NULL }, 2233,  "udp"  },
+  { "directplay",      { NULL }, 2234,  "tcp"  },
+  { "directplay",      { NULL }, 2234,  "udp"  },
+  { "sercomm-wlink",   { NULL }, 2235,  "tcp"  },
+  { "sercomm-wlink",   { NULL }, 2235,  "udp"  },
+  { "nani",            { NULL }, 2236,  "tcp"  },
+  { "nani",            { NULL }, 2236,  "udp"  },
+  { "optech-port1-lm", { NULL }, 2237,  "tcp"  },
+  { "optech-port1-lm", { NULL }, 2237,  "udp"  },
+  { "aviva-sna",       { NULL }, 2238,  "tcp"  },
+  { "aviva-sna",       { NULL }, 2238,  "udp"  },
+  { "imagequery",      { NULL }, 2239,  "tcp"  },
+  { "imagequery",      { NULL }, 2239,  "udp"  },
+  { "recipe",          { NULL }, 2240,  "tcp"  },
+  { "recipe",          { NULL }, 2240,  "udp"  },
+  { "ivsd",            { NULL }, 2241,  "tcp"  },
+  { "ivsd",            { NULL }, 2241,  "udp"  },
+  { "foliocorp",       { NULL }, 2242,  "tcp"  },
+  { "foliocorp",       { NULL }, 2242,  "udp"  },
+  { "magicom",         { NULL }, 2243,  "tcp"  },
+  { "magicom",         { NULL }, 2243,  "udp"  },
+  { "nmsserver",       { NULL }, 2244,  "tcp"  },
+  { "nmsserver",       { NULL }, 2244,  "udp"  },
+  { "hao",             { NULL }, 2245,  "tcp"  },
+  { "hao",             { NULL }, 2245,  "udp"  },
+  { "pc-mta-addrmap",  { NULL }, 2246,  "tcp"  },
+  { "pc-mta-addrmap",  { NULL }, 2246,  "udp"  },
+  { "antidotemgrsvr",  { NULL }, 2247,  "tcp"  },
+  { "antidotemgrsvr",  { NULL }, 2247,  "udp"  },
+  { "ums",             { NULL }, 2248,  "tcp"  },
+  { "ums",             { NULL }, 2248,  "udp"  },
+  { "rfmp",            { NULL }, 2249,  "tcp"  },
+  { "rfmp",            { NULL }, 2249,  "udp"  },
+  { "remote-collab",   { NULL }, 2250,  "tcp"  },
+  { "remote-collab",   { NULL }, 2250,  "udp"  },
+  { "dif-port",        { NULL }, 2251,  "tcp"  },
+  { "dif-port",        { NULL }, 2251,  "udp"  },
+  { "njenet-ssl",      { NULL }, 2252,  "tcp"  },
+  { "njenet-ssl",      { NULL }, 2252,  "udp"  },
+  { "dtv-chan-req",    { NULL }, 2253,  "tcp"  },
+  { "dtv-chan-req",    { NULL }, 2253,  "udp"  },
+  { "seispoc",         { NULL }, 2254,  "tcp"  },
+  { "seispoc",         { NULL }, 2254,  "udp"  },
+  { "vrtp",            { NULL }, 2255,  "tcp"  },
+  { "vrtp",            { NULL }, 2255,  "udp"  },
+  { "pcc-mfp",         { NULL }, 2256,  "tcp"  },
+  { "pcc-mfp",         { NULL }, 2256,  "udp"  },
+  { "simple-tx-rx",    { NULL }, 2257,  "tcp"  },
+  { "simple-tx-rx",    { NULL }, 2257,  "udp"  },
+  { "rcts",            { NULL }, 2258,  "tcp"  },
+  { "rcts",            { NULL }, 2258,  "udp"  },
+  { "acd-pm",          { NULL }, 2259,  "tcp"  },
+  { "acd-pm",          { NULL }, 2259,  "udp"  },
+  { "apc-2260",        { NULL }, 2260,  "tcp"  },
+  { "apc-2260",        { NULL }, 2260,  "udp"  },
+  { "comotionmaster",  { NULL }, 2261,  "tcp"  },
+  { "comotionmaster",  { NULL }, 2261,  "udp"  },
+  { "comotionback",    { NULL }, 2262,  "tcp"  },
+  { "comotionback",    { NULL }, 2262,  "udp"  },
+  { "ecwcfg",          { NULL }, 2263,  "tcp"  },
+  { "ecwcfg",          { NULL }, 2263,  "udp"  },
+  { "apx500api-1",     { NULL }, 2264,  "tcp"  },
+  { "apx500api-1",     { NULL }, 2264,  "udp"  },
+  { "apx500api-2",     { NULL }, 2265,  "tcp"  },
+  { "apx500api-2",     { NULL }, 2265,  "udp"  },
+  { "mfserver",        { NULL }, 2266,  "tcp"  },
+  { "mfserver",        { NULL }, 2266,  "udp"  },
+  { "ontobroker",      { NULL }, 2267,  "tcp"  },
+  { "ontobroker",      { NULL }, 2267,  "udp"  },
+  { "amt",             { NULL }, 2268,  "tcp"  },
+  { "amt",             { NULL }, 2268,  "udp"  },
+  { "mikey",           { NULL }, 2269,  "tcp"  },
+  { "mikey",           { NULL }, 2269,  "udp"  },
+  { "starschool",      { NULL }, 2270,  "tcp"  },
+  { "starschool",      { NULL }, 2270,  "udp"  },
+  { "mmcals",          { NULL }, 2271,  "tcp"  },
+  { "mmcals",          { NULL }, 2271,  "udp"  },
+  { "mmcal",           { NULL }, 2272,  "tcp"  },
+  { "mmcal",           { NULL }, 2272,  "udp"  },
+  { "mysql-im",        { NULL }, 2273,  "tcp"  },
+  { "mysql-im",        { NULL }, 2273,  "udp"  },
+  { "pcttunnell",      { NULL }, 2274,  "tcp"  },
+  { "pcttunnell",      { NULL }, 2274,  "udp"  },
+  { "ibridge-data",    { NULL }, 2275,  "tcp"  },
+  { "ibridge-data",    { NULL }, 2275,  "udp"  },
+  { "ibridge-mgmt",    { NULL }, 2276,  "tcp"  },
+  { "ibridge-mgmt",    { NULL }, 2276,  "udp"  },
+  { "bluectrlproxy",   { NULL }, 2277,  "tcp"  },
+  { "bluectrlproxy",   { NULL }, 2277,  "udp"  },
+  { "s3db",            { NULL }, 2278,  "tcp"  },
+  { "s3db",            { NULL }, 2278,  "udp"  },
+  { "xmquery",         { NULL }, 2279,  "tcp"  },
+  { "xmquery",         { NULL }, 2279,  "udp"  },
+  { "lnvpoller",       { NULL }, 2280,  "tcp"  },
+  { "lnvpoller",       { NULL }, 2280,  "udp"  },
+  { "lnvconsole",      { NULL }, 2281,  "tcp"  },
+  { "lnvconsole",      { NULL }, 2281,  "udp"  },
+  { "lnvalarm",        { NULL }, 2282,  "tcp"  },
+  { "lnvalarm",        { NULL }, 2282,  "udp"  },
+  { "lnvstatus",       { NULL }, 2283,  "tcp"  },
+  { "lnvstatus",       { NULL }, 2283,  "udp"  },
+  { "lnvmaps",         { NULL }, 2284,  "tcp"  },
+  { "lnvmaps",         { NULL }, 2284,  "udp"  },
+  { "lnvmailmon",      { NULL }, 2285,  "tcp"  },
+  { "lnvmailmon",      { NULL }, 2285,  "udp"  },
+  { "nas-metering",    { NULL }, 2286,  "tcp"  },
+  { "nas-metering",    { NULL }, 2286,  "udp"  },
+  { "dna",             { NULL }, 2287,  "tcp"  },
+  { "dna",             { NULL }, 2287,  "udp"  },
+  { "netml",           { NULL }, 2288,  "tcp"  },
+  { "netml",           { NULL }, 2288,  "udp"  },
+  { "dict-lookup",     { NULL }, 2289,  "tcp"  },
+  { "dict-lookup",     { NULL }, 2289,  "udp"  },
+  { "sonus-logging",   { NULL }, 2290,  "tcp"  },
+  { "sonus-logging",   { NULL }, 2290,  "udp"  },
+  { "eapsp",           { NULL }, 2291,  "tcp"  },
+  { "eapsp",           { NULL }, 2291,  "udp"  },
+  { "mib-streaming",   { NULL }, 2292,  "tcp"  },
+  { "mib-streaming",   { NULL }, 2292,  "udp"  },
+  { "npdbgmngr",       { NULL }, 2293,  "tcp"  },
+  { "npdbgmngr",       { NULL }, 2293,  "udp"  },
+  { "konshus-lm",      { NULL }, 2294,  "tcp"  },
+  { "konshus-lm",      { NULL }, 2294,  "udp"  },
+  { "advant-lm",       { NULL }, 2295,  "tcp"  },
+  { "advant-lm",       { NULL }, 2295,  "udp"  },
+  { "theta-lm",        { NULL }, 2296,  "tcp"  },
+  { "theta-lm",        { NULL }, 2296,  "udp"  },
+  { "d2k-datamover1",  { NULL }, 2297,  "tcp"  },
+  { "d2k-datamover1",  { NULL }, 2297,  "udp"  },
+  { "d2k-datamover2",  { NULL }, 2298,  "tcp"  },
+  { "d2k-datamover2",  { NULL }, 2298,  "udp"  },
+  { "pc-telecommute",  { NULL }, 2299,  "tcp"  },
+  { "pc-telecommute",  { NULL }, 2299,  "udp"  },
+  { "cvmmon",          { NULL }, 2300,  "tcp"  },
+  { "cvmmon",          { NULL }, 2300,  "udp"  },
+  { "cpq-wbem",        { NULL }, 2301,  "tcp"  },
+  { "cpq-wbem",        { NULL }, 2301,  "udp"  },
+  { "binderysupport",  { NULL }, 2302,  "tcp"  },
+  { "binderysupport",  { NULL }, 2302,  "udp"  },
+  { "proxy-gateway",   { NULL }, 2303,  "tcp"  },
+  { "proxy-gateway",   { NULL }, 2303,  "udp"  },
+  { "attachmate-uts",  { NULL }, 2304,  "tcp"  },
+  { "attachmate-uts",  { NULL }, 2304,  "udp"  },
+  { "mt-scaleserver",  { NULL }, 2305,  "tcp"  },
+  { "mt-scaleserver",  { NULL }, 2305,  "udp"  },
+  { "tappi-boxnet",    { NULL }, 2306,  "tcp"  },
+  { "tappi-boxnet",    { NULL }, 2306,  "udp"  },
+  { "pehelp",          { NULL }, 2307,  "tcp"  },
+  { "pehelp",          { NULL }, 2307,  "udp"  },
+  { "sdhelp",          { NULL }, 2308,  "tcp"  },
+  { "sdhelp",          { NULL }, 2308,  "udp"  },
+  { "sdserver",        { NULL }, 2309,  "tcp"  },
+  { "sdserver",        { NULL }, 2309,  "udp"  },
+  { "sdclient",        { NULL }, 2310,  "tcp"  },
+  { "sdclient",        { NULL }, 2310,  "udp"  },
+  { "messageservice",  { NULL }, 2311,  "tcp"  },
+  { "messageservice",  { NULL }, 2311,  "udp"  },
+  { "wanscaler",       { NULL }, 2312,  "tcp"  },
+  { "wanscaler",       { NULL }, 2312,  "udp"  },
+  { "iapp",            { NULL }, 2313,  "tcp"  },
+  { "iapp",            { NULL }, 2313,  "udp"  },
+  { "cr-websystems",   { NULL }, 2314,  "tcp"  },
+  { "cr-websystems",   { NULL }, 2314,  "udp"  },
+  { "precise-sft",     { NULL }, 2315,  "tcp"  },
+  { "precise-sft",     { NULL }, 2315,  "udp"  },
+  { "sent-lm",         { NULL }, 2316,  "tcp"  },
+  { "sent-lm",         { NULL }, 2316,  "udp"  },
+  { "attachmate-g32",  { NULL }, 2317,  "tcp"  },
+  { "attachmate-g32",  { NULL }, 2317,  "udp"  },
+  { "cadencecontrol",  { NULL }, 2318,  "tcp"  },
+  { "cadencecontrol",  { NULL }, 2318,  "udp"  },
+  { "infolibria",      { NULL }, 2319,  "tcp"  },
+  { "infolibria",      { NULL }, 2319,  "udp"  },
+  { "siebel-ns",       { NULL }, 2320,  "tcp"  },
+  { "siebel-ns",       { NULL }, 2320,  "udp"  },
+  { "rdlap",           { NULL }, 2321,  "tcp"  },
+  { "rdlap",           { NULL }, 2321,  "udp"  },
+  { "ofsd",            { NULL }, 2322,  "tcp"  },
+  { "ofsd",            { NULL }, 2322,  "udp"  },
+  { "3d-nfsd",         { NULL }, 2323,  "tcp"  },
+  { "3d-nfsd",         { NULL }, 2323,  "udp"  },
+  { "cosmocall",       { NULL }, 2324,  "tcp"  },
+  { "cosmocall",       { NULL }, 2324,  "udp"  },
+  { "ansysli",         { NULL }, 2325,  "tcp"  },
+  { "ansysli",         { NULL }, 2325,  "udp"  },
+  { "idcp",            { NULL }, 2326,  "tcp"  },
+  { "idcp",            { NULL }, 2326,  "udp"  },
+  { "xingcsm",         { NULL }, 2327,  "tcp"  },
+  { "xingcsm",         { NULL }, 2327,  "udp"  },
+  { "netrix-sftm",     { NULL }, 2328,  "tcp"  },
+  { "netrix-sftm",     { NULL }, 2328,  "udp"  },
+  { "nvd",             { NULL }, 2329,  "tcp"  },
+  { "nvd",             { NULL }, 2329,  "udp"  },
+  { "tscchat",         { NULL }, 2330,  "tcp"  },
+  { "tscchat",         { NULL }, 2330,  "udp"  },
+  { "agentview",       { NULL }, 2331,  "tcp"  },
+  { "agentview",       { NULL }, 2331,  "udp"  },
+  { "rcc-host",        { NULL }, 2332,  "tcp"  },
+  { "rcc-host",        { NULL }, 2332,  "udp"  },
+  { "snapp",           { NULL }, 2333,  "tcp"  },
+  { "snapp",           { NULL }, 2333,  "udp"  },
+  { "ace-client",      { NULL }, 2334,  "tcp"  },
+  { "ace-client",      { NULL }, 2334,  "udp"  },
+  { "ace-proxy",       { NULL }, 2335,  "tcp"  },
+  { "ace-proxy",       { NULL }, 2335,  "udp"  },
+  { "appleugcontrol",  { NULL }, 2336,  "tcp"  },
+  { "appleugcontrol",  { NULL }, 2336,  "udp"  },
+  { "ideesrv",         { NULL }, 2337,  "tcp"  },
+  { "ideesrv",         { NULL }, 2337,  "udp"  },
+  { "norton-lambert",  { NULL }, 2338,  "tcp"  },
+  { "norton-lambert",  { NULL }, 2338,  "udp"  },
+  { "3com-webview",    { NULL }, 2339,  "tcp"  },
+  { "3com-webview",    { NULL }, 2339,  "udp"  },
+  { "wrs_registry",    { NULL }, 2340,  "tcp"  },
+  { "wrs_registry",    { NULL }, 2340,  "udp"  },
+  { "xiostatus",       { NULL }, 2341,  "tcp"  },
+  { "xiostatus",       { NULL }, 2341,  "udp"  },
+  { "manage-exec",     { NULL }, 2342,  "tcp"  },
+  { "manage-exec",     { NULL }, 2342,  "udp"  },
+  { "nati-logos",      { NULL }, 2343,  "tcp"  },
+  { "nati-logos",      { NULL }, 2343,  "udp"  },
+  { "fcmsys",          { NULL }, 2344,  "tcp"  },
+  { "fcmsys",          { NULL }, 2344,  "udp"  },
+  { "dbm",             { NULL }, 2345,  "tcp"  },
+  { "dbm",             { NULL }, 2345,  "udp"  },
+  { "redstorm_join",   { NULL }, 2346,  "tcp"  },
+  { "redstorm_join",   { NULL }, 2346,  "udp"  },
+  { "redstorm_find",   { NULL }, 2347,  "tcp"  },
+  { "redstorm_find",   { NULL }, 2347,  "udp"  },
+  { "redstorm_info",   { NULL }, 2348,  "tcp"  },
+  { "redstorm_info",   { NULL }, 2348,  "udp"  },
+  { "redstorm_diag",   { NULL }, 2349,  "tcp"  },
+  { "redstorm_diag",   { NULL }, 2349,  "udp"  },
+  { "psbserver",       { NULL }, 2350,  "tcp"  },
+  { "psbserver",       { NULL }, 2350,  "udp"  },
+  { "psrserver",       { NULL }, 2351,  "tcp"  },
+  { "psrserver",       { NULL }, 2351,  "udp"  },
+  { "pslserver",       { NULL }, 2352,  "tcp"  },
+  { "pslserver",       { NULL }, 2352,  "udp"  },
+  { "pspserver",       { NULL }, 2353,  "tcp"  },
+  { "pspserver",       { NULL }, 2353,  "udp"  },
+  { "psprserver",      { NULL }, 2354,  "tcp"  },
+  { "psprserver",      { NULL }, 2354,  "udp"  },
+  { "psdbserver",      { NULL }, 2355,  "tcp"  },
+  { "psdbserver",      { NULL }, 2355,  "udp"  },
+  { "gxtelmd",         { NULL }, 2356,  "tcp"  },
+  { "gxtelmd",         { NULL }, 2356,  "udp"  },
+  { "unihub-server",   { NULL }, 2357,  "tcp"  },
+  { "unihub-server",   { NULL }, 2357,  "udp"  },
+  { "futrix",          { NULL }, 2358,  "tcp"  },
+  { "futrix",          { NULL }, 2358,  "udp"  },
+  { "flukeserver",     { NULL }, 2359,  "tcp"  },
+  { "flukeserver",     { NULL }, 2359,  "udp"  },
+  { "nexstorindltd",   { NULL }, 2360,  "tcp"  },
+  { "nexstorindltd",   { NULL }, 2360,  "udp"  },
+  { "tl1",             { NULL }, 2361,  "tcp"  },
+  { "tl1",             { NULL }, 2361,  "udp"  },
+  { "digiman",         { NULL }, 2362,  "tcp"  },
+  { "digiman",         { NULL }, 2362,  "udp"  },
+  { "mediacntrlnfsd",  { NULL }, 2363,  "tcp"  },
+  { "mediacntrlnfsd",  { NULL }, 2363,  "udp"  },
+  { "oi-2000",         { NULL }, 2364,  "tcp"  },
+  { "oi-2000",         { NULL }, 2364,  "udp"  },
+  { "dbref",           { NULL }, 2365,  "tcp"  },
+  { "dbref",           { NULL }, 2365,  "udp"  },
+  { "qip-login",       { NULL }, 2366,  "tcp"  },
+  { "qip-login",       { NULL }, 2366,  "udp"  },
+  { "service-ctrl",    { NULL }, 2367,  "tcp"  },
+  { "service-ctrl",    { NULL }, 2367,  "udp"  },
+  { "opentable",       { NULL }, 2368,  "tcp"  },
+  { "opentable",       { NULL }, 2368,  "udp"  },
+  { "l3-hbmon",        { NULL }, 2370,  "tcp"  },
+  { "l3-hbmon",        { NULL }, 2370,  "udp"  },
+  { "worldwire",       { NULL }, 2371,  "tcp"  },
+  { "worldwire",       { NULL }, 2371,  "udp"  },
+  { "lanmessenger",    { NULL }, 2372,  "tcp"  },
+  { "lanmessenger",    { NULL }, 2372,  "udp"  },
+  { "remographlm",     { NULL }, 2373,  "tcp"  },
+  { "hydra",           { NULL }, 2374,  "tcp"  },
+  { "compaq-https",    { NULL }, 2381,  "tcp"  },
+  { "compaq-https",    { NULL }, 2381,  "udp"  },
+  { "ms-olap3",        { NULL }, 2382,  "tcp"  },
+  { "ms-olap3",        { NULL }, 2382,  "udp"  },
+  { "ms-olap4",        { NULL }, 2383,  "tcp"  },
+  { "ms-olap4",        { NULL }, 2383,  "udp"  },
+  { "sd-request",      { NULL }, 2384,  "tcp"  },
+  { "sd-capacity",     { NULL }, 2384,  "udp"  },
+  { "sd-data",         { NULL }, 2385,  "tcp"  },
+  { "sd-data",         { NULL }, 2385,  "udp"  },
+  { "virtualtape",     { NULL }, 2386,  "tcp"  },
+  { "virtualtape",     { NULL }, 2386,  "udp"  },
+  { "vsamredirector",  { NULL }, 2387,  "tcp"  },
+  { "vsamredirector",  { NULL }, 2387,  "udp"  },
+  { "mynahautostart",  { NULL }, 2388,  "tcp"  },
+  { "mynahautostart",  { NULL }, 2388,  "udp"  },
+  { "ovsessionmgr",    { NULL }, 2389,  "tcp"  },
+  { "ovsessionmgr",    { NULL }, 2389,  "udp"  },
+  { "rsmtp",           { NULL }, 2390,  "tcp"  },
+  { "rsmtp",           { NULL }, 2390,  "udp"  },
+  { "3com-net-mgmt",   { NULL }, 2391,  "tcp"  },
+  { "3com-net-mgmt",   { NULL }, 2391,  "udp"  },
+  { "tacticalauth",    { NULL }, 2392,  "tcp"  },
+  { "tacticalauth",    { NULL }, 2392,  "udp"  },
+  { "ms-olap1",        { NULL }, 2393,  "tcp"  },
+  { "ms-olap1",        { NULL }, 2393,  "udp"  },
+  { "ms-olap2",        { NULL }, 2394,  "tcp"  },
+  { "ms-olap2",        { NULL }, 2394,  "udp"  },
+  { "lan900_remote",   { NULL }, 2395,  "tcp"  },
+  { "lan900_remote",   { NULL }, 2395,  "udp"  },
+  { "wusage",          { NULL }, 2396,  "tcp"  },
+  { "wusage",          { NULL }, 2396,  "udp"  },
+  { "ncl",             { NULL }, 2397,  "tcp"  },
+  { "ncl",             { NULL }, 2397,  "udp"  },
+  { "orbiter",         { NULL }, 2398,  "tcp"  },
+  { "orbiter",         { NULL }, 2398,  "udp"  },
+  { "fmpro-fdal",      { NULL }, 2399,  "tcp"  },
+  { "fmpro-fdal",      { NULL }, 2399,  "udp"  },
+  { "opequus-server",  { NULL }, 2400,  "tcp"  },
+  { "opequus-server",  { NULL }, 2400,  "udp"  },
+  { "cvspserver",      { NULL }, 2401,  "tcp"  },
+  { "cvspserver",      { NULL }, 2401,  "udp"  },
+  { "taskmaster2000",  { NULL }, 2402,  "tcp"  },
+  { "taskmaster2000",  { NULL }, 2402,  "udp"  },
+  { "taskmaster2000",  { NULL }, 2403,  "tcp"  },
+  { "taskmaster2000",  { NULL }, 2403,  "udp"  },
+  { "iec-104",         { NULL }, 2404,  "tcp"  },
+  { "iec-104",         { NULL }, 2404,  "udp"  },
+  { "trc-netpoll",     { NULL }, 2405,  "tcp"  },
+  { "trc-netpoll",     { NULL }, 2405,  "udp"  },
+  { "jediserver",      { NULL }, 2406,  "tcp"  },
+  { "jediserver",      { NULL }, 2406,  "udp"  },
+  { "orion",           { NULL }, 2407,  "tcp"  },
+  { "orion",           { NULL }, 2407,  "udp"  },
+  { "optimanet",       { NULL }, 2408,  "tcp"  },
+  { "optimanet",       { NULL }, 2408,  "udp"  },
+  { "sns-protocol",    { NULL }, 2409,  "tcp"  },
+  { "sns-protocol",    { NULL }, 2409,  "udp"  },
+  { "vrts-registry",   { NULL }, 2410,  "tcp"  },
+  { "vrts-registry",   { NULL }, 2410,  "udp"  },
+  { "netwave-ap-mgmt", { NULL }, 2411,  "tcp"  },
+  { "netwave-ap-mgmt", { NULL }, 2411,  "udp"  },
+  { "cdn",             { NULL }, 2412,  "tcp"  },
+  { "cdn",             { NULL }, 2412,  "udp"  },
+  { "orion-rmi-reg",   { NULL }, 2413,  "tcp"  },
+  { "orion-rmi-reg",   { NULL }, 2413,  "udp"  },
+  { "beeyond",         { NULL }, 2414,  "tcp"  },
+  { "beeyond",         { NULL }, 2414,  "udp"  },
+  { "codima-rtp",      { NULL }, 2415,  "tcp"  },
+  { "codima-rtp",      { NULL }, 2415,  "udp"  },
+  { "rmtserver",       { NULL }, 2416,  "tcp"  },
+  { "rmtserver",       { NULL }, 2416,  "udp"  },
+  { "composit-server", { NULL }, 2417,  "tcp"  },
+  { "composit-server", { NULL }, 2417,  "udp"  },
+  { "cas",             { NULL }, 2418,  "tcp"  },
+  { "cas",             { NULL }, 2418,  "udp"  },
+  { "attachmate-s2s",  { NULL }, 2419,  "tcp"  },
+  { "attachmate-s2s",  { NULL }, 2419,  "udp"  },
+  { "dslremote-mgmt",  { NULL }, 2420,  "tcp"  },
+  { "dslremote-mgmt",  { NULL }, 2420,  "udp"  },
+  { "g-talk",          { NULL }, 2421,  "tcp"  },
+  { "g-talk",          { NULL }, 2421,  "udp"  },
+  { "crmsbits",        { NULL }, 2422,  "tcp"  },
+  { "crmsbits",        { NULL }, 2422,  "udp"  },
+  { "rnrp",            { NULL }, 2423,  "tcp"  },
+  { "rnrp",            { NULL }, 2423,  "udp"  },
+  { "kofax-svr",       { NULL }, 2424,  "tcp"  },
+  { "kofax-svr",       { NULL }, 2424,  "udp"  },
+  { "fjitsuappmgr",    { NULL }, 2425,  "tcp"  },
+  { "fjitsuappmgr",    { NULL }, 2425,  "udp"  },
+  { "mgcp-gateway",    { NULL }, 2427,  "tcp"  },
+  { "mgcp-gateway",    { NULL }, 2427,  "udp"  },
+  { "ott",             { NULL }, 2428,  "tcp"  },
+  { "ott",             { NULL }, 2428,  "udp"  },
+  { "ft-role",         { NULL }, 2429,  "tcp"  },
+  { "ft-role",         { NULL }, 2429,  "udp"  },
+  { "venus",           { NULL }, 2430,  "tcp"  },
+  { "venus",           { NULL }, 2430,  "udp"  },
+  { "venus-se",        { NULL }, 2431,  "tcp"  },
+  { "venus-se",        { NULL }, 2431,  "udp"  },
+  { "codasrv",         { NULL }, 2432,  "tcp"  },
+  { "codasrv",         { NULL }, 2432,  "udp"  },
+  { "codasrv-se",      { NULL }, 2433,  "tcp"  },
+  { "codasrv-se",      { NULL }, 2433,  "udp"  },
+  { "pxc-epmap",       { NULL }, 2434,  "tcp"  },
+  { "pxc-epmap",       { NULL }, 2434,  "udp"  },
+  { "optilogic",       { NULL }, 2435,  "tcp"  },
+  { "optilogic",       { NULL }, 2435,  "udp"  },
+  { "topx",            { NULL }, 2436,  "tcp"  },
+  { "topx",            { NULL }, 2436,  "udp"  },
+  { "unicontrol",      { NULL }, 2437,  "tcp"  },
+  { "unicontrol",      { NULL }, 2437,  "udp"  },
+  { "msp",             { NULL }, 2438,  "tcp"  },
+  { "msp",             { NULL }, 2438,  "udp"  },
+  { "sybasedbsynch",   { NULL }, 2439,  "tcp"  },
+  { "sybasedbsynch",   { NULL }, 2439,  "udp"  },
+  { "spearway",        { NULL }, 2440,  "tcp"  },
+  { "spearway",        { NULL }, 2440,  "udp"  },
+  { "pvsw-inet",       { NULL }, 2441,  "tcp"  },
+  { "pvsw-inet",       { NULL }, 2441,  "udp"  },
+  { "netangel",        { NULL }, 2442,  "tcp"  },
+  { "netangel",        { NULL }, 2442,  "udp"  },
+  { "powerclientcsf",  { NULL }, 2443,  "tcp"  },
+  { "powerclientcsf",  { NULL }, 2443,  "udp"  },
+  { "btpp2sectrans",   { NULL }, 2444,  "tcp"  },
+  { "btpp2sectrans",   { NULL }, 2444,  "udp"  },
+  { "dtn1",            { NULL }, 2445,  "tcp"  },
+  { "dtn1",            { NULL }, 2445,  "udp"  },
+  { "bues_service",    { NULL }, 2446,  "tcp"  },
+  { "bues_service",    { NULL }, 2446,  "udp"  },
+  { "ovwdb",           { NULL }, 2447,  "tcp"  },
+  { "ovwdb",           { NULL }, 2447,  "udp"  },
+  { "hpppssvr",        { NULL }, 2448,  "tcp"  },
+  { "hpppssvr",        { NULL }, 2448,  "udp"  },
+  { "ratl",            { NULL }, 2449,  "tcp"  },
+  { "ratl",            { NULL }, 2449,  "udp"  },
+  { "netadmin",        { NULL }, 2450,  "tcp"  },
+  { "netadmin",        { NULL }, 2450,  "udp"  },
+  { "netchat",         { NULL }, 2451,  "tcp"  },
+  { "netchat",         { NULL }, 2451,  "udp"  },
+  { "snifferclient",   { NULL }, 2452,  "tcp"  },
+  { "snifferclient",   { NULL }, 2452,  "udp"  },
+  { "madge-ltd",       { NULL }, 2453,  "tcp"  },
+  { "madge-ltd",       { NULL }, 2453,  "udp"  },
+  { "indx-dds",        { NULL }, 2454,  "tcp"  },
+  { "indx-dds",        { NULL }, 2454,  "udp"  },
+  { "wago-io-system",  { NULL }, 2455,  "tcp"  },
+  { "wago-io-system",  { NULL }, 2455,  "udp"  },
+  { "altav-remmgt",    { NULL }, 2456,  "tcp"  },
+  { "altav-remmgt",    { NULL }, 2456,  "udp"  },
+  { "rapido-ip",       { NULL }, 2457,  "tcp"  },
+  { "rapido-ip",       { NULL }, 2457,  "udp"  },
+  { "griffin",         { NULL }, 2458,  "tcp"  },
+  { "griffin",         { NULL }, 2458,  "udp"  },
+  { "community",       { NULL }, 2459,  "tcp"  },
+  { "community",       { NULL }, 2459,  "udp"  },
+  { "ms-theater",      { NULL }, 2460,  "tcp"  },
+  { "ms-theater",      { NULL }, 2460,  "udp"  },
+  { "qadmifoper",      { NULL }, 2461,  "tcp"  },
+  { "qadmifoper",      { NULL }, 2461,  "udp"  },
+  { "qadmifevent",     { NULL }, 2462,  "tcp"  },
+  { "qadmifevent",     { NULL }, 2462,  "udp"  },
+  { "lsi-raid-mgmt",   { NULL }, 2463,  "tcp"  },
+  { "lsi-raid-mgmt",   { NULL }, 2463,  "udp"  },
+  { "direcpc-si",      { NULL }, 2464,  "tcp"  },
+  { "direcpc-si",      { NULL }, 2464,  "udp"  },
+  { "lbm",             { NULL }, 2465,  "tcp"  },
+  { "lbm",             { NULL }, 2465,  "udp"  },
+  { "lbf",             { NULL }, 2466,  "tcp"  },
+  { "lbf",             { NULL }, 2466,  "udp"  },
+  { "high-criteria",   { NULL }, 2467,  "tcp"  },
+  { "high-criteria",   { NULL }, 2467,  "udp"  },
+  { "qip-msgd",        { NULL }, 2468,  "tcp"  },
+  { "qip-msgd",        { NULL }, 2468,  "udp"  },
+  { "mti-tcs-comm",    { NULL }, 2469,  "tcp"  },
+  { "mti-tcs-comm",    { NULL }, 2469,  "udp"  },
+  { "taskman-port",    { NULL }, 2470,  "tcp"  },
+  { "taskman-port",    { NULL }, 2470,  "udp"  },
+  { "seaodbc",         { NULL }, 2471,  "tcp"  },
+  { "seaodbc",         { NULL }, 2471,  "udp"  },
+  { "c3",              { NULL }, 2472,  "tcp"  },
+  { "c3",              { NULL }, 2472,  "udp"  },
+  { "aker-cdp",        { NULL }, 2473,  "tcp"  },
+  { "aker-cdp",        { NULL }, 2473,  "udp"  },
+  { "vitalanalysis",   { NULL }, 2474,  "tcp"  },
+  { "vitalanalysis",   { NULL }, 2474,  "udp"  },
+  { "ace-server",      { NULL }, 2475,  "tcp"  },
+  { "ace-server",      { NULL }, 2475,  "udp"  },
+  { "ace-svr-prop",    { NULL }, 2476,  "tcp"  },
+  { "ace-svr-prop",    { NULL }, 2476,  "udp"  },
+  { "ssm-cvs",         { NULL }, 2477,  "tcp"  },
+  { "ssm-cvs",         { NULL }, 2477,  "udp"  },
+  { "ssm-cssps",       { NULL }, 2478,  "tcp"  },
+  { "ssm-cssps",       { NULL }, 2478,  "udp"  },
+  { "ssm-els",         { NULL }, 2479,  "tcp"  },
+  { "ssm-els",         { NULL }, 2479,  "udp"  },
+  { "powerexchange",   { NULL }, 2480,  "tcp"  },
+  { "powerexchange",   { NULL }, 2480,  "udp"  },
+  { "giop",            { NULL }, 2481,  "tcp"  },
+  { "giop",            { NULL }, 2481,  "udp"  },
+  { "giop-ssl",        { NULL }, 2482,  "tcp"  },
+  { "giop-ssl",        { NULL }, 2482,  "udp"  },
+  { "ttc",             { NULL }, 2483,  "tcp"  },
+  { "ttc",             { NULL }, 2483,  "udp"  },
+  { "ttc-ssl",         { NULL }, 2484,  "tcp"  },
+  { "ttc-ssl",         { NULL }, 2484,  "udp"  },
+  { "netobjects1",     { NULL }, 2485,  "tcp"  },
+  { "netobjects1",     { NULL }, 2485,  "udp"  },
+  { "netobjects2",     { NULL }, 2486,  "tcp"  },
+  { "netobjects2",     { NULL }, 2486,  "udp"  },
+  { "pns",             { NULL }, 2487,  "tcp"  },
+  { "pns",             { NULL }, 2487,  "udp"  },
+  { "moy-corp",        { NULL }, 2488,  "tcp"  },
+  { "moy-corp",        { NULL }, 2488,  "udp"  },
+  { "tsilb",           { NULL }, 2489,  "tcp"  },
+  { "tsilb",           { NULL }, 2489,  "udp"  },
+  { "qip-qdhcp",       { NULL }, 2490,  "tcp"  },
+  { "qip-qdhcp",       { NULL }, 2490,  "udp"  },
+  { "conclave-cpp",    { NULL }, 2491,  "tcp"  },
+  { "conclave-cpp",    { NULL }, 2491,  "udp"  },
+  { "groove",          { NULL }, 2492,  "tcp"  },
+  { "groove",          { NULL }, 2492,  "udp"  },
+  { "talarian-mqs",    { NULL }, 2493,  "tcp"  },
+  { "talarian-mqs",    { NULL }, 2493,  "udp"  },
+  { "bmc-ar",          { NULL }, 2494,  "tcp"  },
+  { "bmc-ar",          { NULL }, 2494,  "udp"  },
+  { "fast-rem-serv",   { NULL }, 2495,  "tcp"  },
+  { "fast-rem-serv",   { NULL }, 2495,  "udp"  },
+  { "dirgis",          { NULL }, 2496,  "tcp"  },
+  { "dirgis",          { NULL }, 2496,  "udp"  },
+  { "quaddb",          { NULL }, 2497,  "tcp"  },
+  { "quaddb",          { NULL }, 2497,  "udp"  },
+  { "odn-castraq",     { NULL }, 2498,  "tcp"  },
+  { "odn-castraq",     { NULL }, 2498,  "udp"  },
+  { "unicontrol",      { NULL }, 2499,  "tcp"  },
+  { "unicontrol",      { NULL }, 2499,  "udp"  },
+  { "rtsserv",         { NULL }, 2500,  "tcp"  },
+  { "rtsserv",         { NULL }, 2500,  "udp"  },
+  { "rtsclient",       { NULL }, 2501,  "tcp"  },
+  { "rtsclient",       { NULL }, 2501,  "udp"  },
+  { "kentrox-prot",    { NULL }, 2502,  "tcp"  },
+  { "kentrox-prot",    { NULL }, 2502,  "udp"  },
+  { "nms-dpnss",       { NULL }, 2503,  "tcp"  },
+  { "nms-dpnss",       { NULL }, 2503,  "udp"  },
+  { "wlbs",            { NULL }, 2504,  "tcp"  },
+  { "wlbs",            { NULL }, 2504,  "udp"  },
+  { "ppcontrol",       { NULL }, 2505,  "tcp"  },
+  { "ppcontrol",       { NULL }, 2505,  "udp"  },
+  { "jbroker",         { NULL }, 2506,  "tcp"  },
+  { "jbroker",         { NULL }, 2506,  "udp"  },
+  { "spock",           { NULL }, 2507,  "tcp"  },
+  { "spock",           { NULL }, 2507,  "udp"  },
+  { "jdatastore",      { NULL }, 2508,  "tcp"  },
+  { "jdatastore",      { NULL }, 2508,  "udp"  },
+  { "fjmpss",          { NULL }, 2509,  "tcp"  },
+  { "fjmpss",          { NULL }, 2509,  "udp"  },
+  { "fjappmgrbulk",    { NULL }, 2510,  "tcp"  },
+  { "fjappmgrbulk",    { NULL }, 2510,  "udp"  },
+  { "metastorm",       { NULL }, 2511,  "tcp"  },
+  { "metastorm",       { NULL }, 2511,  "udp"  },
+  { "citrixima",       { NULL }, 2512,  "tcp"  },
+  { "citrixima",       { NULL }, 2512,  "udp"  },
+  { "citrixadmin",     { NULL }, 2513,  "tcp"  },
+  { "citrixadmin",     { NULL }, 2513,  "udp"  },
+  { "facsys-ntp",      { NULL }, 2514,  "tcp"  },
+  { "facsys-ntp",      { NULL }, 2514,  "udp"  },
+  { "facsys-router",   { NULL }, 2515,  "tcp"  },
+  { "facsys-router",   { NULL }, 2515,  "udp"  },
+  { "maincontrol",     { NULL }, 2516,  "tcp"  },
+  { "maincontrol",     { NULL }, 2516,  "udp"  },
+  { "call-sig-trans",  { NULL }, 2517,  "tcp"  },
+  { "call-sig-trans",  { NULL }, 2517,  "udp"  },
+  { "willy",           { NULL }, 2518,  "tcp"  },
+  { "willy",           { NULL }, 2518,  "udp"  },
+  { "globmsgsvc",      { NULL }, 2519,  "tcp"  },
+  { "globmsgsvc",      { NULL }, 2519,  "udp"  },
+  { "pvsw",            { NULL }, 2520,  "tcp"  },
+  { "pvsw",            { NULL }, 2520,  "udp"  },
+  { "adaptecmgr",      { NULL }, 2521,  "tcp"  },
+  { "adaptecmgr",      { NULL }, 2521,  "udp"  },
+  { "windb",           { NULL }, 2522,  "tcp"  },
+  { "windb",           { NULL }, 2522,  "udp"  },
+  { "qke-llc-v3",      { NULL }, 2523,  "tcp"  },
+  { "qke-llc-v3",      { NULL }, 2523,  "udp"  },
+  { "optiwave-lm",     { NULL }, 2524,  "tcp"  },
+  { "optiwave-lm",     { NULL }, 2524,  "udp"  },
+  { "ms-v-worlds",     { NULL }, 2525,  "tcp"  },
+  { "ms-v-worlds",     { NULL }, 2525,  "udp"  },
+  { "ema-sent-lm",     { NULL }, 2526,  "tcp"  },
+  { "ema-sent-lm",     { NULL }, 2526,  "udp"  },
+  { "iqserver",        { NULL }, 2527,  "tcp"  },
+  { "iqserver",        { NULL }, 2527,  "udp"  },
+  { "ncr_ccl",         { NULL }, 2528,  "tcp"  },
+  { "ncr_ccl",         { NULL }, 2528,  "udp"  },
+  { "utsftp",          { NULL }, 2529,  "tcp"  },
+  { "utsftp",          { NULL }, 2529,  "udp"  },
+  { "vrcommerce",      { NULL }, 2530,  "tcp"  },
+  { "vrcommerce",      { NULL }, 2530,  "udp"  },
+  { "ito-e-gui",       { NULL }, 2531,  "tcp"  },
+  { "ito-e-gui",       { NULL }, 2531,  "udp"  },
+  { "ovtopmd",         { NULL }, 2532,  "tcp"  },
+  { "ovtopmd",         { NULL }, 2532,  "udp"  },
+  { "snifferserver",   { NULL }, 2533,  "tcp"  },
+  { "snifferserver",   { NULL }, 2533,  "udp"  },
+  { "combox-web-acc",  { NULL }, 2534,  "tcp"  },
+  { "combox-web-acc",  { NULL }, 2534,  "udp"  },
+  { "madcap",          { NULL }, 2535,  "tcp"  },
+  { "madcap",          { NULL }, 2535,  "udp"  },
+  { "btpp2audctr1",    { NULL }, 2536,  "tcp"  },
+  { "btpp2audctr1",    { NULL }, 2536,  "udp"  },
+  { "upgrade",         { NULL }, 2537,  "tcp"  },
+  { "upgrade",         { NULL }, 2537,  "udp"  },
+  { "vnwk-prapi",      { NULL }, 2538,  "tcp"  },
+  { "vnwk-prapi",      { NULL }, 2538,  "udp"  },
+  { "vsiadmin",        { NULL }, 2539,  "tcp"  },
+  { "vsiadmin",        { NULL }, 2539,  "udp"  },
+  { "lonworks",        { NULL }, 2540,  "tcp"  },
+  { "lonworks",        { NULL }, 2540,  "udp"  },
+  { "lonworks2",       { NULL }, 2541,  "tcp"  },
+  { "lonworks2",       { NULL }, 2541,  "udp"  },
+  { "udrawgraph",      { NULL }, 2542,  "tcp"  },
+  { "udrawgraph",      { NULL }, 2542,  "udp"  },
+  { "reftek",          { NULL }, 2543,  "tcp"  },
+  { "reftek",          { NULL }, 2543,  "udp"  },
+  { "novell-zen",      { NULL }, 2544,  "tcp"  },
+  { "novell-zen",      { NULL }, 2544,  "udp"  },
+  { "sis-emt",         { NULL }, 2545,  "tcp"  },
+  { "sis-emt",         { NULL }, 2545,  "udp"  },
+  { "vytalvaultbrtp",  { NULL }, 2546,  "tcp"  },
+  { "vytalvaultbrtp",  { NULL }, 2546,  "udp"  },
+  { "vytalvaultvsmp",  { NULL }, 2547,  "tcp"  },
+  { "vytalvaultvsmp",  { NULL }, 2547,  "udp"  },
+  { "vytalvaultpipe",  { NULL }, 2548,  "tcp"  },
+  { "vytalvaultpipe",  { NULL }, 2548,  "udp"  },
+  { "ipass",           { NULL }, 2549,  "tcp"  },
+  { "ipass",           { NULL }, 2549,  "udp"  },
+  { "ads",             { NULL }, 2550,  "tcp"  },
+  { "ads",             { NULL }, 2550,  "udp"  },
+  { "isg-uda-server",  { NULL }, 2551,  "tcp"  },
+  { "isg-uda-server",  { NULL }, 2551,  "udp"  },
+  { "call-logging",    { NULL }, 2552,  "tcp"  },
+  { "call-logging",    { NULL }, 2552,  "udp"  },
+  { "efidiningport",   { NULL }, 2553,  "tcp"  },
+  { "efidiningport",   { NULL }, 2553,  "udp"  },
+  { "vcnet-link-v10",  { NULL }, 2554,  "tcp"  },
+  { "vcnet-link-v10",  { NULL }, 2554,  "udp"  },
+  { "compaq-wcp",      { NULL }, 2555,  "tcp"  },
+  { "compaq-wcp",      { NULL }, 2555,  "udp"  },
+  { "nicetec-nmsvc",   { NULL }, 2556,  "tcp"  },
+  { "nicetec-nmsvc",   { NULL }, 2556,  "udp"  },
+  { "nicetec-mgmt",    { NULL }, 2557,  "tcp"  },
+  { "nicetec-mgmt",    { NULL }, 2557,  "udp"  },
+  { "pclemultimedia",  { NULL }, 2558,  "tcp"  },
+  { "pclemultimedia",  { NULL }, 2558,  "udp"  },
+  { "lstp",            { NULL }, 2559,  "tcp"  },
+  { "lstp",            { NULL }, 2559,  "udp"  },
+  { "labrat",          { NULL }, 2560,  "tcp"  },
+  { "labrat",          { NULL }, 2560,  "udp"  },
+  { "mosaixcc",        { NULL }, 2561,  "tcp"  },
+  { "mosaixcc",        { NULL }, 2561,  "udp"  },
+  { "delibo",          { NULL }, 2562,  "tcp"  },
+  { "delibo",          { NULL }, 2562,  "udp"  },
+  { "cti-redwood",     { NULL }, 2563,  "tcp"  },
+  { "cti-redwood",     { NULL }, 2563,  "udp"  },
+  { "hp-3000-telnet",  { NULL }, 2564,  "tcp"  },
+  { "coord-svr",       { NULL }, 2565,  "tcp"  },
+  { "coord-svr",       { NULL }, 2565,  "udp"  },
+  { "pcs-pcw",         { NULL }, 2566,  "tcp"  },
+  { "pcs-pcw",         { NULL }, 2566,  "udp"  },
+  { "clp",             { NULL }, 2567,  "tcp"  },
+  { "clp",             { NULL }, 2567,  "udp"  },
+  { "spamtrap",        { NULL }, 2568,  "tcp"  },
+  { "spamtrap",        { NULL }, 2568,  "udp"  },
+  { "sonuscallsig",    { NULL }, 2569,  "tcp"  },
+  { "sonuscallsig",    { NULL }, 2569,  "udp"  },
+  { "hs-port",         { NULL }, 2570,  "tcp"  },
+  { "hs-port",         { NULL }, 2570,  "udp"  },
+  { "cecsvc",          { NULL }, 2571,  "tcp"  },
+  { "cecsvc",          { NULL }, 2571,  "udp"  },
+  { "ibp",             { NULL }, 2572,  "tcp"  },
+  { "ibp",             { NULL }, 2572,  "udp"  },
+  { "trustestablish",  { NULL }, 2573,  "tcp"  },
+  { "trustestablish",  { NULL }, 2573,  "udp"  },
+  { "blockade-bpsp",   { NULL }, 2574,  "tcp"  },
+  { "blockade-bpsp",   { NULL }, 2574,  "udp"  },
+  { "hl7",             { NULL }, 2575,  "tcp"  },
+  { "hl7",             { NULL }, 2575,  "udp"  },
+  { "tclprodebugger",  { NULL }, 2576,  "tcp"  },
+  { "tclprodebugger",  { NULL }, 2576,  "udp"  },
+  { "scipticslsrvr",   { NULL }, 2577,  "tcp"  },
+  { "scipticslsrvr",   { NULL }, 2577,  "udp"  },
+  { "rvs-isdn-dcp",    { NULL }, 2578,  "tcp"  },
+  { "rvs-isdn-dcp",    { NULL }, 2578,  "udp"  },
+  { "mpfoncl",         { NULL }, 2579,  "tcp"  },
+  { "mpfoncl",         { NULL }, 2579,  "udp"  },
+  { "tributary",       { NULL }, 2580,  "tcp"  },
+  { "tributary",       { NULL }, 2580,  "udp"  },
+  { "argis-te",        { NULL }, 2581,  "tcp"  },
+  { "argis-te",        { NULL }, 2581,  "udp"  },
+  { "argis-ds",        { NULL }, 2582,  "tcp"  },
+  { "argis-ds",        { NULL }, 2582,  "udp"  },
+  { "mon",             { NULL }, 2583,  "tcp"  },
+  { "mon",             { NULL }, 2583,  "udp"  },
+  { "cyaserv",         { NULL }, 2584,  "tcp"  },
+  { "cyaserv",         { NULL }, 2584,  "udp"  },
+  { "netx-server",     { NULL }, 2585,  "tcp"  },
+  { "netx-server",     { NULL }, 2585,  "udp"  },
+  { "netx-agent",      { NULL }, 2586,  "tcp"  },
+  { "netx-agent",      { NULL }, 2586,  "udp"  },
+  { "masc",            { NULL }, 2587,  "tcp"  },
+  { "masc",            { NULL }, 2587,  "udp"  },
+  { "privilege",       { NULL }, 2588,  "tcp"  },
+  { "privilege",       { NULL }, 2588,  "udp"  },
+  { "quartus-tcl",     { NULL }, 2589,  "tcp"  },
+  { "quartus-tcl",     { NULL }, 2589,  "udp"  },
+  { "idotdist",        { NULL }, 2590,  "tcp"  },
+  { "idotdist",        { NULL }, 2590,  "udp"  },
+  { "maytagshuffle",   { NULL }, 2591,  "tcp"  },
+  { "maytagshuffle",   { NULL }, 2591,  "udp"  },
+  { "netrek",          { NULL }, 2592,  "tcp"  },
+  { "netrek",          { NULL }, 2592,  "udp"  },
+  { "mns-mail",        { NULL }, 2593,  "tcp"  },
+  { "mns-mail",        { NULL }, 2593,  "udp"  },
+  { "dts",             { NULL }, 2594,  "tcp"  },
+  { "dts",             { NULL }, 2594,  "udp"  },
+  { "worldfusion1",    { NULL }, 2595,  "tcp"  },
+  { "worldfusion1",    { NULL }, 2595,  "udp"  },
+  { "worldfusion2",    { NULL }, 2596,  "tcp"  },
+  { "worldfusion2",    { NULL }, 2596,  "udp"  },
+  { "homesteadglory",  { NULL }, 2597,  "tcp"  },
+  { "homesteadglory",  { NULL }, 2597,  "udp"  },
+  { "citriximaclient", { NULL }, 2598,  "tcp"  },
+  { "citriximaclient", { NULL }, 2598,  "udp"  },
+  { "snapd",           { NULL }, 2599,  "tcp"  },
+  { "snapd",           { NULL }, 2599,  "udp"  },
+  { "hpstgmgr",        { NULL }, 2600,  "tcp"  },
+  { "hpstgmgr",        { NULL }, 2600,  "udp"  },
+  { "discp-client",    { NULL }, 2601,  "tcp"  },
+  { "discp-client",    { NULL }, 2601,  "udp"  },
+  { "discp-server",    { NULL }, 2602,  "tcp"  },
+  { "discp-server",    { NULL }, 2602,  "udp"  },
+  { "servicemeter",    { NULL }, 2603,  "tcp"  },
+  { "servicemeter",    { NULL }, 2603,  "udp"  },
+  { "nsc-ccs",         { NULL }, 2604,  "tcp"  },
+  { "nsc-ccs",         { NULL }, 2604,  "udp"  },
+  { "nsc-posa",        { NULL }, 2605,  "tcp"  },
+  { "nsc-posa",        { NULL }, 2605,  "udp"  },
+  { "netmon",          { NULL }, 2606,  "tcp"  },
+  { "netmon",          { NULL }, 2606,  "udp"  },
+  { "connection",      { NULL }, 2607,  "tcp"  },
+  { "connection",      { NULL }, 2607,  "udp"  },
+  { "wag-service",     { NULL }, 2608,  "tcp"  },
+  { "wag-service",     { NULL }, 2608,  "udp"  },
+  { "system-monitor",  { NULL }, 2609,  "tcp"  },
+  { "system-monitor",  { NULL }, 2609,  "udp"  },
+  { "versa-tek",       { NULL }, 2610,  "tcp"  },
+  { "versa-tek",       { NULL }, 2610,  "udp"  },
+  { "lionhead",        { NULL }, 2611,  "tcp"  },
+  { "lionhead",        { NULL }, 2611,  "udp"  },
+  { "qpasa-agent",     { NULL }, 2612,  "tcp"  },
+  { "qpasa-agent",     { NULL }, 2612,  "udp"  },
+  { "smntubootstrap",  { NULL }, 2613,  "tcp"  },
+  { "smntubootstrap",  { NULL }, 2613,  "udp"  },
+  { "neveroffline",    { NULL }, 2614,  "tcp"  },
+  { "neveroffline",    { NULL }, 2614,  "udp"  },
+  { "firepower",       { NULL }, 2615,  "tcp"  },
+  { "firepower",       { NULL }, 2615,  "udp"  },
+  { "appswitch-emp",   { NULL }, 2616,  "tcp"  },
+  { "appswitch-emp",   { NULL }, 2616,  "udp"  },
+  { "cmadmin",         { NULL }, 2617,  "tcp"  },
+  { "cmadmin",         { NULL }, 2617,  "udp"  },
+  { "priority-e-com",  { NULL }, 2618,  "tcp"  },
+  { "priority-e-com",  { NULL }, 2618,  "udp"  },
+  { "bruce",           { NULL }, 2619,  "tcp"  },
+  { "bruce",           { NULL }, 2619,  "udp"  },
+  { "lpsrecommender",  { NULL }, 2620,  "tcp"  },
+  { "lpsrecommender",  { NULL }, 2620,  "udp"  },
+  { "miles-apart",     { NULL }, 2621,  "tcp"  },
+  { "miles-apart",     { NULL }, 2621,  "udp"  },
+  { "metricadbc",      { NULL }, 2622,  "tcp"  },
+  { "metricadbc",      { NULL }, 2622,  "udp"  },
+  { "lmdp",            { NULL }, 2623,  "tcp"  },
+  { "lmdp",            { NULL }, 2623,  "udp"  },
+  { "aria",            { NULL }, 2624,  "tcp"  },
+  { "aria",            { NULL }, 2624,  "udp"  },
+  { "blwnkl-port",     { NULL }, 2625,  "tcp"  },
+  { "blwnkl-port",     { NULL }, 2625,  "udp"  },
+  { "gbjd816",         { NULL }, 2626,  "tcp"  },
+  { "gbjd816",         { NULL }, 2626,  "udp"  },
+  { "moshebeeri",      { NULL }, 2627,  "tcp"  },
+  { "moshebeeri",      { NULL }, 2627,  "udp"  },
+  { "dict",            { NULL }, 2628,  "tcp"  },
+  { "dict",            { NULL }, 2628,  "udp"  },
+  { "sitaraserver",    { NULL }, 2629,  "tcp"  },
+  { "sitaraserver",    { NULL }, 2629,  "udp"  },
+  { "sitaramgmt",      { NULL }, 2630,  "tcp"  },
+  { "sitaramgmt",      { NULL }, 2630,  "udp"  },
+  { "sitaradir",       { NULL }, 2631,  "tcp"  },
+  { "sitaradir",       { NULL }, 2631,  "udp"  },
+  { "irdg-post",       { NULL }, 2632,  "tcp"  },
+  { "irdg-post",       { NULL }, 2632,  "udp"  },
+  { "interintelli",    { NULL }, 2633,  "tcp"  },
+  { "interintelli",    { NULL }, 2633,  "udp"  },
+  { "pk-electronics",  { NULL }, 2634,  "tcp"  },
+  { "pk-electronics",  { NULL }, 2634,  "udp"  },
+  { "backburner",      { NULL }, 2635,  "tcp"  },
+  { "backburner",      { NULL }, 2635,  "udp"  },
+  { "solve",           { NULL }, 2636,  "tcp"  },
+  { "solve",           { NULL }, 2636,  "udp"  },
+  { "imdocsvc",        { NULL }, 2637,  "tcp"  },
+  { "imdocsvc",        { NULL }, 2637,  "udp"  },
+  { "sybaseanywhere",  { NULL }, 2638,  "tcp"  },
+  { "sybaseanywhere",  { NULL }, 2638,  "udp"  },
+  { "aminet",          { NULL }, 2639,  "tcp"  },
+  { "aminet",          { NULL }, 2639,  "udp"  },
+  { "sai_sentlm",      { NULL }, 2640,  "tcp"  },
+  { "sai_sentlm",      { NULL }, 2640,  "udp"  },
+  { "hdl-srv",         { NULL }, 2641,  "tcp"  },
+  { "hdl-srv",         { NULL }, 2641,  "udp"  },
+  { "tragic",          { NULL }, 2642,  "tcp"  },
+  { "tragic",          { NULL }, 2642,  "udp"  },
+  { "gte-samp",        { NULL }, 2643,  "tcp"  },
+  { "gte-samp",        { NULL }, 2643,  "udp"  },
+  { "travsoft-ipx-t",  { NULL }, 2644,  "tcp"  },
+  { "travsoft-ipx-t",  { NULL }, 2644,  "udp"  },
+  { "novell-ipx-cmd",  { NULL }, 2645,  "tcp"  },
+  { "novell-ipx-cmd",  { NULL }, 2645,  "udp"  },
+  { "and-lm",          { NULL }, 2646,  "tcp"  },
+  { "and-lm",          { NULL }, 2646,  "udp"  },
+  { "syncserver",      { NULL }, 2647,  "tcp"  },
+  { "syncserver",      { NULL }, 2647,  "udp"  },
+  { "upsnotifyprot",   { NULL }, 2648,  "tcp"  },
+  { "upsnotifyprot",   { NULL }, 2648,  "udp"  },
+  { "vpsipport",       { NULL }, 2649,  "tcp"  },
+  { "vpsipport",       { NULL }, 2649,  "udp"  },
+  { "eristwoguns",     { NULL }, 2650,  "tcp"  },
+  { "eristwoguns",     { NULL }, 2650,  "udp"  },
+  { "ebinsite",        { NULL }, 2651,  "tcp"  },
+  { "ebinsite",        { NULL }, 2651,  "udp"  },
+  { "interpathpanel",  { NULL }, 2652,  "tcp"  },
+  { "interpathpanel",  { NULL }, 2652,  "udp"  },
+  { "sonus",           { NULL }, 2653,  "tcp"  },
+  { "sonus",           { NULL }, 2653,  "udp"  },
+  { "corel_vncadmin",  { NULL }, 2654,  "tcp"  },
+  { "corel_vncadmin",  { NULL }, 2654,  "udp"  },
+  { "unglue",          { NULL }, 2655,  "tcp"  },
+  { "unglue",          { NULL }, 2655,  "udp"  },
+  { "kana",            { NULL }, 2656,  "tcp"  },
+  { "kana",            { NULL }, 2656,  "udp"  },
+  { "sns-dispatcher",  { NULL }, 2657,  "tcp"  },
+  { "sns-dispatcher",  { NULL }, 2657,  "udp"  },
+  { "sns-admin",       { NULL }, 2658,  "tcp"  },
+  { "sns-admin",       { NULL }, 2658,  "udp"  },
+  { "sns-query",       { NULL }, 2659,  "tcp"  },
+  { "sns-query",       { NULL }, 2659,  "udp"  },
+  { "gcmonitor",       { NULL }, 2660,  "tcp"  },
+  { "gcmonitor",       { NULL }, 2660,  "udp"  },
+  { "olhost",          { NULL }, 2661,  "tcp"  },
+  { "olhost",          { NULL }, 2661,  "udp"  },
+  { "bintec-capi",     { NULL }, 2662,  "tcp"  },
+  { "bintec-capi",     { NULL }, 2662,  "udp"  },
+  { "bintec-tapi",     { NULL }, 2663,  "tcp"  },
+  { "bintec-tapi",     { NULL }, 2663,  "udp"  },
+  { "patrol-mq-gm",    { NULL }, 2664,  "tcp"  },
+  { "patrol-mq-gm",    { NULL }, 2664,  "udp"  },
+  { "patrol-mq-nm",    { NULL }, 2665,  "tcp"  },
+  { "patrol-mq-nm",    { NULL }, 2665,  "udp"  },
+  { "extensis",        { NULL }, 2666,  "tcp"  },
+  { "extensis",        { NULL }, 2666,  "udp"  },
+  { "alarm-clock-s",   { NULL }, 2667,  "tcp"  },
+  { "alarm-clock-s",   { NULL }, 2667,  "udp"  },
+  { "alarm-clock-c",   { NULL }, 2668,  "tcp"  },
+  { "alarm-clock-c",   { NULL }, 2668,  "udp"  },
+  { "toad",            { NULL }, 2669,  "tcp"  },
+  { "toad",            { NULL }, 2669,  "udp"  },
+  { "tve-announce",    { NULL }, 2670,  "tcp"  },
+  { "tve-announce",    { NULL }, 2670,  "udp"  },
+  { "newlixreg",       { NULL }, 2671,  "tcp"  },
+  { "newlixreg",       { NULL }, 2671,  "udp"  },
+  { "nhserver",        { NULL }, 2672,  "tcp"  },
+  { "nhserver",        { NULL }, 2672,  "udp"  },
+  { "firstcall42",     { NULL }, 2673,  "tcp"  },
+  { "firstcall42",     { NULL }, 2673,  "udp"  },
+  { "ewnn",            { NULL }, 2674,  "tcp"  },
+  { "ewnn",            { NULL }, 2674,  "udp"  },
+  { "ttc-etap",        { NULL }, 2675,  "tcp"  },
+  { "ttc-etap",        { NULL }, 2675,  "udp"  },
+  { "simslink",        { NULL }, 2676,  "tcp"  },
+  { "simslink",        { NULL }, 2676,  "udp"  },
+  { "gadgetgate1way",  { NULL }, 2677,  "tcp"  },
+  { "gadgetgate1way",  { NULL }, 2677,  "udp"  },
+  { "gadgetgate2way",  { NULL }, 2678,  "tcp"  },
+  { "gadgetgate2way",  { NULL }, 2678,  "udp"  },
+  { "syncserverssl",   { NULL }, 2679,  "tcp"  },
+  { "syncserverssl",   { NULL }, 2679,  "udp"  },
+  { "pxc-sapxom",      { NULL }, 2680,  "tcp"  },
+  { "pxc-sapxom",      { NULL }, 2680,  "udp"  },
+  { "mpnjsomb",        { NULL }, 2681,  "tcp"  },
+  { "mpnjsomb",        { NULL }, 2681,  "udp"  },
+  { "ncdloadbalance",  { NULL }, 2683,  "tcp"  },
+  { "ncdloadbalance",  { NULL }, 2683,  "udp"  },
+  { "mpnjsosv",        { NULL }, 2684,  "tcp"  },
+  { "mpnjsosv",        { NULL }, 2684,  "udp"  },
+  { "mpnjsocl",        { NULL }, 2685,  "tcp"  },
+  { "mpnjsocl",        { NULL }, 2685,  "udp"  },
+  { "mpnjsomg",        { NULL }, 2686,  "tcp"  },
+  { "mpnjsomg",        { NULL }, 2686,  "udp"  },
+  { "pq-lic-mgmt",     { NULL }, 2687,  "tcp"  },
+  { "pq-lic-mgmt",     { NULL }, 2687,  "udp"  },
+  { "md-cg-http",      { NULL }, 2688,  "tcp"  },
+  { "md-cg-http",      { NULL }, 2688,  "udp"  },
+  { "fastlynx",        { NULL }, 2689,  "tcp"  },
+  { "fastlynx",        { NULL }, 2689,  "udp"  },
+  { "hp-nnm-data",     { NULL }, 2690,  "tcp"  },
+  { "hp-nnm-data",     { NULL }, 2690,  "udp"  },
+  { "itinternet",      { NULL }, 2691,  "tcp"  },
+  { "itinternet",      { NULL }, 2691,  "udp"  },
+  { "admins-lms",      { NULL }, 2692,  "tcp"  },
+  { "admins-lms",      { NULL }, 2692,  "udp"  },
+  { "pwrsevent",       { NULL }, 2694,  "tcp"  },
+  { "pwrsevent",       { NULL }, 2694,  "udp"  },
+  { "vspread",         { NULL }, 2695,  "tcp"  },
+  { "vspread",         { NULL }, 2695,  "udp"  },
+  { "unifyadmin",      { NULL }, 2696,  "tcp"  },
+  { "unifyadmin",      { NULL }, 2696,  "udp"  },
+  { "oce-snmp-trap",   { NULL }, 2697,  "tcp"  },
+  { "oce-snmp-trap",   { NULL }, 2697,  "udp"  },
+  { "mck-ivpip",       { NULL }, 2698,  "tcp"  },
+  { "mck-ivpip",       { NULL }, 2698,  "udp"  },
+  { "csoft-plusclnt",  { NULL }, 2699,  "tcp"  },
+  { "csoft-plusclnt",  { NULL }, 2699,  "udp"  },
+  { "tqdata",          { NULL }, 2700,  "tcp"  },
+  { "tqdata",          { NULL }, 2700,  "udp"  },
+  { "sms-rcinfo",      { NULL }, 2701,  "tcp"  },
+  { "sms-rcinfo",      { NULL }, 2701,  "udp"  },
+  { "sms-xfer",        { NULL }, 2702,  "tcp"  },
+  { "sms-xfer",        { NULL }, 2702,  "udp"  },
+  { "sms-chat",        { NULL }, 2703,  "tcp"  },
+  { "sms-chat",        { NULL }, 2703,  "udp"  },
+  { "sms-remctrl",     { NULL }, 2704,  "tcp"  },
+  { "sms-remctrl",     { NULL }, 2704,  "udp"  },
+  { "sds-admin",       { NULL }, 2705,  "tcp"  },
+  { "sds-admin",       { NULL }, 2705,  "udp"  },
+  { "ncdmirroring",    { NULL }, 2706,  "tcp"  },
+  { "ncdmirroring",    { NULL }, 2706,  "udp"  },
+  { "emcsymapiport",   { NULL }, 2707,  "tcp"  },
+  { "emcsymapiport",   { NULL }, 2707,  "udp"  },
+  { "banyan-net",      { NULL }, 2708,  "tcp"  },
+  { "banyan-net",      { NULL }, 2708,  "udp"  },
+  { "supermon",        { NULL }, 2709,  "tcp"  },
+  { "supermon",        { NULL }, 2709,  "udp"  },
+  { "sso-service",     { NULL }, 2710,  "tcp"  },
+  { "sso-service",     { NULL }, 2710,  "udp"  },
+  { "sso-control",     { NULL }, 2711,  "tcp"  },
+  { "sso-control",     { NULL }, 2711,  "udp"  },
+  { "aocp",            { NULL }, 2712,  "tcp"  },
+  { "aocp",            { NULL }, 2712,  "udp"  },
+  { "raventbs",        { NULL }, 2713,  "tcp"  },
+  { "raventbs",        { NULL }, 2713,  "udp"  },
+  { "raventdm",        { NULL }, 2714,  "tcp"  },
+  { "raventdm",        { NULL }, 2714,  "udp"  },
+  { "hpstgmgr2",       { NULL }, 2715,  "tcp"  },
+  { "hpstgmgr2",       { NULL }, 2715,  "udp"  },
+  { "inova-ip-disco",  { NULL }, 2716,  "tcp"  },
+  { "inova-ip-disco",  { NULL }, 2716,  "udp"  },
+  { "pn-requester",    { NULL }, 2717,  "tcp"  },
+  { "pn-requester",    { NULL }, 2717,  "udp"  },
+  { "pn-requester2",   { NULL }, 2718,  "tcp"  },
+  { "pn-requester2",   { NULL }, 2718,  "udp"  },
+  { "scan-change",     { NULL }, 2719,  "tcp"  },
+  { "scan-change",     { NULL }, 2719,  "udp"  },
+  { "wkars",           { NULL }, 2720,  "tcp"  },
+  { "wkars",           { NULL }, 2720,  "udp"  },
+  { "smart-diagnose",  { NULL }, 2721,  "tcp"  },
+  { "smart-diagnose",  { NULL }, 2721,  "udp"  },
+  { "proactivesrvr",   { NULL }, 2722,  "tcp"  },
+  { "proactivesrvr",   { NULL }, 2722,  "udp"  },
+  { "watchdog-nt",     { NULL }, 2723,  "tcp"  },
+  { "watchdog-nt",     { NULL }, 2723,  "udp"  },
+  { "qotps",           { NULL }, 2724,  "tcp"  },
+  { "qotps",           { NULL }, 2724,  "udp"  },
+  { "msolap-ptp2",     { NULL }, 2725,  "tcp"  },
+  { "msolap-ptp2",     { NULL }, 2725,  "udp"  },
+  { "tams",            { NULL }, 2726,  "tcp"  },
+  { "tams",            { NULL }, 2726,  "udp"  },
+  { "mgcp-callagent",  { NULL }, 2727,  "tcp"  },
+  { "mgcp-callagent",  { NULL }, 2727,  "udp"  },
+  { "sqdr",            { NULL }, 2728,  "tcp"  },
+  { "sqdr",            { NULL }, 2728,  "udp"  },
+  { "tcim-control",    { NULL }, 2729,  "tcp"  },
+  { "tcim-control",    { NULL }, 2729,  "udp"  },
+  { "nec-raidplus",    { NULL }, 2730,  "tcp"  },
+  { "nec-raidplus",    { NULL }, 2730,  "udp"  },
+  { "fyre-messanger",  { NULL }, 2731,  "tcp"  },
+  { "fyre-messanger",  { NULL }, 2731,  "udp"  },
+  { "g5m",             { NULL }, 2732,  "tcp"  },
+  { "g5m",             { NULL }, 2732,  "udp"  },
+  { "signet-ctf",      { NULL }, 2733,  "tcp"  },
+  { "signet-ctf",      { NULL }, 2733,  "udp"  },
+  { "ccs-software",    { NULL }, 2734,  "tcp"  },
+  { "ccs-software",    { NULL }, 2734,  "udp"  },
+  { "netiq-mc",        { NULL }, 2735,  "tcp"  },
+  { "netiq-mc",        { NULL }, 2735,  "udp"  },
+  { "radwiz-nms-srv",  { NULL }, 2736,  "tcp"  },
+  { "radwiz-nms-srv",  { NULL }, 2736,  "udp"  },
+  { "srp-feedback",    { NULL }, 2737,  "tcp"  },
+  { "srp-feedback",    { NULL }, 2737,  "udp"  },
+  { "ndl-tcp-ois-gw",  { NULL }, 2738,  "tcp"  },
+  { "ndl-tcp-ois-gw",  { NULL }, 2738,  "udp"  },
+  { "tn-timing",       { NULL }, 2739,  "tcp"  },
+  { "tn-timing",       { NULL }, 2739,  "udp"  },
+  { "alarm",           { NULL }, 2740,  "tcp"  },
+  { "alarm",           { NULL }, 2740,  "udp"  },
+  { "tsb",             { NULL }, 2741,  "tcp"  },
+  { "tsb",             { NULL }, 2741,  "udp"  },
+  { "tsb2",            { NULL }, 2742,  "tcp"  },
+  { "tsb2",            { NULL }, 2742,  "udp"  },
+  { "murx",            { NULL }, 2743,  "tcp"  },
+  { "murx",            { NULL }, 2743,  "udp"  },
+  { "honyaku",         { NULL }, 2744,  "tcp"  },
+  { "honyaku",         { NULL }, 2744,  "udp"  },
+  { "urbisnet",        { NULL }, 2745,  "tcp"  },
+  { "urbisnet",        { NULL }, 2745,  "udp"  },
+  { "cpudpencap",      { NULL }, 2746,  "tcp"  },
+  { "cpudpencap",      { NULL }, 2746,  "udp"  },
+  { "fjippol-swrly",   { NULL }, 2747,  "tcp"  },
+  { "fjippol-swrly",   { NULL }, 2747,  "udp"  },
+  { "fjippol-polsvr",  { NULL }, 2748,  "tcp"  },
+  { "fjippol-polsvr",  { NULL }, 2748,  "udp"  },
+  { "fjippol-cnsl",    { NULL }, 2749,  "tcp"  },
+  { "fjippol-cnsl",    { NULL }, 2749,  "udp"  },
+  { "fjippol-port1",   { NULL }, 2750,  "tcp"  },
+  { "fjippol-port1",   { NULL }, 2750,  "udp"  },
+  { "fjippol-port2",   { NULL }, 2751,  "tcp"  },
+  { "fjippol-port2",   { NULL }, 2751,  "udp"  },
+  { "rsisysaccess",    { NULL }, 2752,  "tcp"  },
+  { "rsisysaccess",    { NULL }, 2752,  "udp"  },
+  { "de-spot",         { NULL }, 2753,  "tcp"  },
+  { "de-spot",         { NULL }, 2753,  "udp"  },
+  { "apollo-cc",       { NULL }, 2754,  "tcp"  },
+  { "apollo-cc",       { NULL }, 2754,  "udp"  },
+  { "expresspay",      { NULL }, 2755,  "tcp"  },
+  { "expresspay",      { NULL }, 2755,  "udp"  },
+  { "simplement-tie",  { NULL }, 2756,  "tcp"  },
+  { "simplement-tie",  { NULL }, 2756,  "udp"  },
+  { "cnrp",            { NULL }, 2757,  "tcp"  },
+  { "cnrp",            { NULL }, 2757,  "udp"  },
+  { "apollo-status",   { NULL }, 2758,  "tcp"  },
+  { "apollo-status",   { NULL }, 2758,  "udp"  },
+  { "apollo-gms",      { NULL }, 2759,  "tcp"  },
+  { "apollo-gms",      { NULL }, 2759,  "udp"  },
+  { "sabams",          { NULL }, 2760,  "tcp"  },
+  { "sabams",          { NULL }, 2760,  "udp"  },
+  { "dicom-iscl",      { NULL }, 2761,  "tcp"  },
+  { "dicom-iscl",      { NULL }, 2761,  "udp"  },
+  { "dicom-tls",       { NULL }, 2762,  "tcp"  },
+  { "dicom-tls",       { NULL }, 2762,  "udp"  },
+  { "desktop-dna",     { NULL }, 2763,  "tcp"  },
+  { "desktop-dna",     { NULL }, 2763,  "udp"  },
+  { "data-insurance",  { NULL }, 2764,  "tcp"  },
+  { "data-insurance",  { NULL }, 2764,  "udp"  },
+  { "qip-audup",       { NULL }, 2765,  "tcp"  },
+  { "qip-audup",       { NULL }, 2765,  "udp"  },
+  { "compaq-scp",      { NULL }, 2766,  "tcp"  },
+  { "compaq-scp",      { NULL }, 2766,  "udp"  },
+  { "uadtc",           { NULL }, 2767,  "tcp"  },
+  { "uadtc",           { NULL }, 2767,  "udp"  },
+  { "uacs",            { NULL }, 2768,  "tcp"  },
+  { "uacs",            { NULL }, 2768,  "udp"  },
+  { "exce",            { NULL }, 2769,  "tcp"  },
+  { "exce",            { NULL }, 2769,  "udp"  },
+  { "veronica",        { NULL }, 2770,  "tcp"  },
+  { "veronica",        { NULL }, 2770,  "udp"  },
+  { "vergencecm",      { NULL }, 2771,  "tcp"  },
+  { "vergencecm",      { NULL }, 2771,  "udp"  },
+  { "auris",           { NULL }, 2772,  "tcp"  },
+  { "auris",           { NULL }, 2772,  "udp"  },
+  { "rbakcup1",        { NULL }, 2773,  "tcp"  },
+  { "rbakcup1",        { NULL }, 2773,  "udp"  },
+  { "rbakcup2",        { NULL }, 2774,  "tcp"  },
+  { "rbakcup2",        { NULL }, 2774,  "udp"  },
+  { "smpp",            { NULL }, 2775,  "tcp"  },
+  { "smpp",            { NULL }, 2775,  "udp"  },
+  { "ridgeway1",       { NULL }, 2776,  "tcp"  },
+  { "ridgeway1",       { NULL }, 2776,  "udp"  },
+  { "ridgeway2",       { NULL }, 2777,  "tcp"  },
+  { "ridgeway2",       { NULL }, 2777,  "udp"  },
+  { "gwen-sonya",      { NULL }, 2778,  "tcp"  },
+  { "gwen-sonya",      { NULL }, 2778,  "udp"  },
+  { "lbc-sync",        { NULL }, 2779,  "tcp"  },
+  { "lbc-sync",        { NULL }, 2779,  "udp"  },
+  { "lbc-control",     { NULL }, 2780,  "tcp"  },
+  { "lbc-control",     { NULL }, 2780,  "udp"  },
+  { "whosells",        { NULL }, 2781,  "tcp"  },
+  { "whosells",        { NULL }, 2781,  "udp"  },
+  { "everydayrc",      { NULL }, 2782,  "tcp"  },
+  { "everydayrc",      { NULL }, 2782,  "udp"  },
+  { "aises",           { NULL }, 2783,  "tcp"  },
+  { "aises",           { NULL }, 2783,  "udp"  },
+  { "www-dev",         { NULL }, 2784,  "tcp"  },
+  { "www-dev",         { NULL }, 2784,  "udp"  },
+  { "aic-np",          { NULL }, 2785,  "tcp"  },
+  { "aic-np",          { NULL }, 2785,  "udp"  },
+  { "aic-oncrpc",      { NULL }, 2786,  "tcp"  },
+  { "aic-oncrpc",      { NULL }, 2786,  "udp"  },
+  { "piccolo",         { NULL }, 2787,  "tcp"  },
+  { "piccolo",         { NULL }, 2787,  "udp"  },
+  { "fryeserv",        { NULL }, 2788,  "tcp"  },
+  { "fryeserv",        { NULL }, 2788,  "udp"  },
+  { "media-agent",     { NULL }, 2789,  "tcp"  },
+  { "media-agent",     { NULL }, 2789,  "udp"  },
+  { "plgproxy",        { NULL }, 2790,  "tcp"  },
+  { "plgproxy",        { NULL }, 2790,  "udp"  },
+  { "mtport-regist",   { NULL }, 2791,  "tcp"  },
+  { "mtport-regist",   { NULL }, 2791,  "udp"  },
+  { "f5-globalsite",   { NULL }, 2792,  "tcp"  },
+  { "f5-globalsite",   { NULL }, 2792,  "udp"  },
+  { "initlsmsad",      { NULL }, 2793,  "tcp"  },
+  { "initlsmsad",      { NULL }, 2793,  "udp"  },
+  { "livestats",       { NULL }, 2795,  "tcp"  },
+  { "livestats",       { NULL }, 2795,  "udp"  },
+  { "ac-tech",         { NULL }, 2796,  "tcp"  },
+  { "ac-tech",         { NULL }, 2796,  "udp"  },
+  { "esp-encap",       { NULL }, 2797,  "tcp"  },
+  { "esp-encap",       { NULL }, 2797,  "udp"  },
+  { "tmesis-upshot",   { NULL }, 2798,  "tcp"  },
+  { "tmesis-upshot",   { NULL }, 2798,  "udp"  },
+  { "icon-discover",   { NULL }, 2799,  "tcp"  },
+  { "icon-discover",   { NULL }, 2799,  "udp"  },
+  { "acc-raid",        { NULL }, 2800,  "tcp"  },
+  { "acc-raid",        { NULL }, 2800,  "udp"  },
+  { "igcp",            { NULL }, 2801,  "tcp"  },
+  { "igcp",            { NULL }, 2801,  "udp"  },
+  { "veritas-tcp1",    { NULL }, 2802,  "tcp"  },
+  { "veritas-udp1",    { NULL }, 2802,  "udp"  },
+  { "btprjctrl",       { NULL }, 2803,  "tcp"  },
+  { "btprjctrl",       { NULL }, 2803,  "udp"  },
+  { "dvr-esm",         { NULL }, 2804,  "tcp"  },
+  { "dvr-esm",         { NULL }, 2804,  "udp"  },
+  { "wta-wsp-s",       { NULL }, 2805,  "tcp"  },
+  { "wta-wsp-s",       { NULL }, 2805,  "udp"  },
+  { "cspuni",          { NULL }, 2806,  "tcp"  },
+  { "cspuni",          { NULL }, 2806,  "udp"  },
+  { "cspmulti",        { NULL }, 2807,  "tcp"  },
+  { "cspmulti",        { NULL }, 2807,  "udp"  },
+  { "j-lan-p",         { NULL }, 2808,  "tcp"  },
+  { "j-lan-p",         { NULL }, 2808,  "udp"  },
+  { "corbaloc",        { NULL }, 2809,  "tcp"  },
+  { "corbaloc",        { NULL }, 2809,  "udp"  },
+  { "netsteward",      { NULL }, 2810,  "tcp"  },
+  { "netsteward",      { NULL }, 2810,  "udp"  },
+  { "gsiftp",          { NULL }, 2811,  "tcp"  },
+  { "gsiftp",          { NULL }, 2811,  "udp"  },
+  { "atmtcp",          { NULL }, 2812,  "tcp"  },
+  { "atmtcp",          { NULL }, 2812,  "udp"  },
+  { "llm-pass",        { NULL }, 2813,  "tcp"  },
+  { "llm-pass",        { NULL }, 2813,  "udp"  },
+  { "llm-csv",         { NULL }, 2814,  "tcp"  },
+  { "llm-csv",         { NULL }, 2814,  "udp"  },
+  { "lbc-measure",     { NULL }, 2815,  "tcp"  },
+  { "lbc-measure",     { NULL }, 2815,  "udp"  },
+  { "lbc-watchdog",    { NULL }, 2816,  "tcp"  },
+  { "lbc-watchdog",    { NULL }, 2816,  "udp"  },
+  { "nmsigport",       { NULL }, 2817,  "tcp"  },
+  { "nmsigport",       { NULL }, 2817,  "udp"  },
+  { "rmlnk",           { NULL }, 2818,  "tcp"  },
+  { "rmlnk",           { NULL }, 2818,  "udp"  },
+  { "fc-faultnotify",  { NULL }, 2819,  "tcp"  },
+  { "fc-faultnotify",  { NULL }, 2819,  "udp"  },
+  { "univision",       { NULL }, 2820,  "tcp"  },
+  { "univision",       { NULL }, 2820,  "udp"  },
+  { "vrts-at-port",    { NULL }, 2821,  "tcp"  },
+  { "vrts-at-port",    { NULL }, 2821,  "udp"  },
+  { "ka0wuc",          { NULL }, 2822,  "tcp"  },
+  { "ka0wuc",          { NULL }, 2822,  "udp"  },
+  { "cqg-netlan",      { NULL }, 2823,  "tcp"  },
+  { "cqg-netlan",      { NULL }, 2823,  "udp"  },
+  { "cqg-netlan-1",    { NULL }, 2824,  "tcp"  },
+  { "cqg-netlan-1",    { NULL }, 2824,  "udp"  },
+  { "slc-systemlog",   { NULL }, 2826,  "tcp"  },
+  { "slc-systemlog",   { NULL }, 2826,  "udp"  },
+  { "slc-ctrlrloops",  { NULL }, 2827,  "tcp"  },
+  { "slc-ctrlrloops",  { NULL }, 2827,  "udp"  },
+  { "itm-lm",          { NULL }, 2828,  "tcp"  },
+  { "itm-lm",          { NULL }, 2828,  "udp"  },
+  { "silkp1",          { NULL }, 2829,  "tcp"  },
+  { "silkp1",          { NULL }, 2829,  "udp"  },
+  { "silkp2",          { NULL }, 2830,  "tcp"  },
+  { "silkp2",          { NULL }, 2830,  "udp"  },
+  { "silkp3",          { NULL }, 2831,  "tcp"  },
+  { "silkp3",          { NULL }, 2831,  "udp"  },
+  { "silkp4",          { NULL }, 2832,  "tcp"  },
+  { "silkp4",          { NULL }, 2832,  "udp"  },
+  { "glishd",          { NULL }, 2833,  "tcp"  },
+  { "glishd",          { NULL }, 2833,  "udp"  },
+  { "evtp",            { NULL }, 2834,  "tcp"  },
+  { "evtp",            { NULL }, 2834,  "udp"  },
+  { "evtp-data",       { NULL }, 2835,  "tcp"  },
+  { "evtp-data",       { NULL }, 2835,  "udp"  },
+  { "catalyst",        { NULL }, 2836,  "tcp"  },
+  { "catalyst",        { NULL }, 2836,  "udp"  },
+  { "repliweb",        { NULL }, 2837,  "tcp"  },
+  { "repliweb",        { NULL }, 2837,  "udp"  },
+  { "starbot",         { NULL }, 2838,  "tcp"  },
+  { "starbot",         { NULL }, 2838,  "udp"  },
+  { "nmsigport",       { NULL }, 2839,  "tcp"  },
+  { "nmsigport",       { NULL }, 2839,  "udp"  },
+  { "l3-exprt",        { NULL }, 2840,  "tcp"  },
+  { "l3-exprt",        { NULL }, 2840,  "udp"  },
+  { "l3-ranger",       { NULL }, 2841,  "tcp"  },
+  { "l3-ranger",       { NULL }, 2841,  "udp"  },
+  { "l3-hawk",         { NULL }, 2842,  "tcp"  },
+  { "l3-hawk",         { NULL }, 2842,  "udp"  },
+  { "pdnet",           { NULL }, 2843,  "tcp"  },
+  { "pdnet",           { NULL }, 2843,  "udp"  },
+  { "bpcp-poll",       { NULL }, 2844,  "tcp"  },
+  { "bpcp-poll",       { NULL }, 2844,  "udp"  },
+  { "bpcp-trap",       { NULL }, 2845,  "tcp"  },
+  { "bpcp-trap",       { NULL }, 2845,  "udp"  },
+  { "aimpp-hello",     { NULL }, 2846,  "tcp"  },
+  { "aimpp-hello",     { NULL }, 2846,  "udp"  },
+  { "aimpp-port-req",  { NULL }, 2847,  "tcp"  },
+  { "aimpp-port-req",  { NULL }, 2847,  "udp"  },
+  { "amt-blc-port",    { NULL }, 2848,  "tcp"  },
+  { "amt-blc-port",    { NULL }, 2848,  "udp"  },
+  { "fxp",             { NULL }, 2849,  "tcp"  },
+  { "fxp",             { NULL }, 2849,  "udp"  },
+  { "metaconsole",     { NULL }, 2850,  "tcp"  },
+  { "metaconsole",     { NULL }, 2850,  "udp"  },
+  { "webemshttp",      { NULL }, 2851,  "tcp"  },
+  { "webemshttp",      { NULL }, 2851,  "udp"  },
+  { "bears-01",        { NULL }, 2852,  "tcp"  },
+  { "bears-01",        { NULL }, 2852,  "udp"  },
+  { "ispipes",         { NULL }, 2853,  "tcp"  },
+  { "ispipes",         { NULL }, 2853,  "udp"  },
+  { "infomover",       { NULL }, 2854,  "tcp"  },
+  { "infomover",       { NULL }, 2854,  "udp"  },
+  { "msrp",            { NULL }, 2855,  "tcp"  },
+  { "msrp",            { NULL }, 2855,  "udp"  },
+  { "cesdinv",         { NULL }, 2856,  "tcp"  },
+  { "cesdinv",         { NULL }, 2856,  "udp"  },
+  { "simctlp",         { NULL }, 2857,  "tcp"  },
+  { "simctlp",         { NULL }, 2857,  "udp"  },
+  { "ecnp",            { NULL }, 2858,  "tcp"  },
+  { "ecnp",            { NULL }, 2858,  "udp"  },
+  { "activememory",    { NULL }, 2859,  "tcp"  },
+  { "activememory",    { NULL }, 2859,  "udp"  },
+  { "dialpad-voice1",  { NULL }, 2860,  "tcp"  },
+  { "dialpad-voice1",  { NULL }, 2860,  "udp"  },
+  { "dialpad-voice2",  { NULL }, 2861,  "tcp"  },
+  { "dialpad-voice2",  { NULL }, 2861,  "udp"  },
+  { "ttg-protocol",    { NULL }, 2862,  "tcp"  },
+  { "ttg-protocol",    { NULL }, 2862,  "udp"  },
+  { "sonardata",       { NULL }, 2863,  "tcp"  },
+  { "sonardata",       { NULL }, 2863,  "udp"  },
+  { "astromed-main",   { NULL }, 2864,  "tcp"  },
+  { "astromed-main",   { NULL }, 2864,  "udp"  },
+  { "pit-vpn",         { NULL }, 2865,  "tcp"  },
+  { "pit-vpn",         { NULL }, 2865,  "udp"  },
+  { "iwlistener",      { NULL }, 2866,  "tcp"  },
+  { "iwlistener",      { NULL }, 2866,  "udp"  },
+  { "esps-portal",     { NULL }, 2867,  "tcp"  },
+  { "esps-portal",     { NULL }, 2867,  "udp"  },
+  { "npep-messaging",  { NULL }, 2868,  "tcp"  },
+  { "npep-messaging",  { NULL }, 2868,  "udp"  },
+  { "icslap",          { NULL }, 2869,  "tcp"  },
+  { "icslap",          { NULL }, 2869,  "udp"  },
+  { "daishi",          { NULL }, 2870,  "tcp"  },
+  { "daishi",          { NULL }, 2870,  "udp"  },
+  { "msi-selectplay",  { NULL }, 2871,  "tcp"  },
+  { "msi-selectplay",  { NULL }, 2871,  "udp"  },
+  { "radix",           { NULL }, 2872,  "tcp"  },
+  { "radix",           { NULL }, 2872,  "udp"  },
+  { "dxmessagebase1",  { NULL }, 2874,  "tcp"  },
+  { "dxmessagebase1",  { NULL }, 2874,  "udp"  },
+  { "dxmessagebase2",  { NULL }, 2875,  "tcp"  },
+  { "dxmessagebase2",  { NULL }, 2875,  "udp"  },
+  { "sps-tunnel",      { NULL }, 2876,  "tcp"  },
+  { "sps-tunnel",      { NULL }, 2876,  "udp"  },
+  { "bluelance",       { NULL }, 2877,  "tcp"  },
+  { "bluelance",       { NULL }, 2877,  "udp"  },
+  { "aap",             { NULL }, 2878,  "tcp"  },
+  { "aap",             { NULL }, 2878,  "udp"  },
+  { "ucentric-ds",     { NULL }, 2879,  "tcp"  },
+  { "ucentric-ds",     { NULL }, 2879,  "udp"  },
+  { "synapse",         { NULL }, 2880,  "tcp"  },
+  { "synapse",         { NULL }, 2880,  "udp"  },
+  { "ndsp",            { NULL }, 2881,  "tcp"  },
+  { "ndsp",            { NULL }, 2881,  "udp"  },
+  { "ndtp",            { NULL }, 2882,  "tcp"  },
+  { "ndtp",            { NULL }, 2882,  "udp"  },
+  { "ndnp",            { NULL }, 2883,  "tcp"  },
+  { "ndnp",            { NULL }, 2883,  "udp"  },
+  { "flashmsg",        { NULL }, 2884,  "tcp"  },
+  { "flashmsg",        { NULL }, 2884,  "udp"  },
+  { "topflow",         { NULL }, 2885,  "tcp"  },
+  { "topflow",         { NULL }, 2885,  "udp"  },
+  { "responselogic",   { NULL }, 2886,  "tcp"  },
+  { "responselogic",   { NULL }, 2886,  "udp"  },
+  { "aironetddp",      { NULL }, 2887,  "tcp"  },
+  { "aironetddp",      { NULL }, 2887,  "udp"  },
+  { "spcsdlobby",      { NULL }, 2888,  "tcp"  },
+  { "spcsdlobby",      { NULL }, 2888,  "udp"  },
+  { "rsom",            { NULL }, 2889,  "tcp"  },
+  { "rsom",            { NULL }, 2889,  "udp"  },
+  { "cspclmulti",      { NULL }, 2890,  "tcp"  },
+  { "cspclmulti",      { NULL }, 2890,  "udp"  },
+  { "cinegrfx-elmd",   { NULL }, 2891,  "tcp"  },
+  { "cinegrfx-elmd",   { NULL }, 2891,  "udp"  },
+  { "snifferdata",     { NULL }, 2892,  "tcp"  },
+  { "snifferdata",     { NULL }, 2892,  "udp"  },
+  { "vseconnector",    { NULL }, 2893,  "tcp"  },
+  { "vseconnector",    { NULL }, 2893,  "udp"  },
+  { "abacus-remote",   { NULL }, 2894,  "tcp"  },
+  { "abacus-remote",   { NULL }, 2894,  "udp"  },
+  { "natuslink",       { NULL }, 2895,  "tcp"  },
+  { "natuslink",       { NULL }, 2895,  "udp"  },
+  { "ecovisiong6-1",   { NULL }, 2896,  "tcp"  },
+  { "ecovisiong6-1",   { NULL }, 2896,  "udp"  },
+  { "citrix-rtmp",     { NULL }, 2897,  "tcp"  },
+  { "citrix-rtmp",     { NULL }, 2897,  "udp"  },
+  { "appliance-cfg",   { NULL }, 2898,  "tcp"  },
+  { "appliance-cfg",   { NULL }, 2898,  "udp"  },
+  { "powergemplus",    { NULL }, 2899,  "tcp"  },
+  { "powergemplus",    { NULL }, 2899,  "udp"  },
+  { "quicksuite",      { NULL }, 2900,  "tcp"  },
+  { "quicksuite",      { NULL }, 2900,  "udp"  },
+  { "allstorcns",      { NULL }, 2901,  "tcp"  },
+  { "allstorcns",      { NULL }, 2901,  "udp"  },
+  { "netaspi",         { NULL }, 2902,  "tcp"  },
+  { "netaspi",         { NULL }, 2902,  "udp"  },
+  { "suitcase",        { NULL }, 2903,  "tcp"  },
+  { "suitcase",        { NULL }, 2903,  "udp"  },
+  { "m2ua",            { NULL }, 2904,  "tcp"  },
+  { "m2ua",            { NULL }, 2904,  "udp"  },
+  { "m2ua",            { NULL }, 2904,  "sctp" },
+  { "m3ua",            { NULL }, 2905,  "tcp"  },
+  { "m3ua",            { NULL }, 2905,  "sctp" },
+  { "caller9",         { NULL }, 2906,  "tcp"  },
+  { "caller9",         { NULL }, 2906,  "udp"  },
+  { "webmethods-b2b",  { NULL }, 2907,  "tcp"  },
+  { "webmethods-b2b",  { NULL }, 2907,  "udp"  },
+  { "mao",             { NULL }, 2908,  "tcp"  },
+  { "mao",             { NULL }, 2908,  "udp"  },
+  { "funk-dialout",    { NULL }, 2909,  "tcp"  },
+  { "funk-dialout",    { NULL }, 2909,  "udp"  },
+  { "tdaccess",        { NULL }, 2910,  "tcp"  },
+  { "tdaccess",        { NULL }, 2910,  "udp"  },
+  { "blockade",        { NULL }, 2911,  "tcp"  },
+  { "blockade",        { NULL }, 2911,  "udp"  },
+  { "epicon",          { NULL }, 2912,  "tcp"  },
+  { "epicon",          { NULL }, 2912,  "udp"  },
+  { "boosterware",     { NULL }, 2913,  "tcp"  },
+  { "boosterware",     { NULL }, 2913,  "udp"  },
+  { "gamelobby",       { NULL }, 2914,  "tcp"  },
+  { "gamelobby",       { NULL }, 2914,  "udp"  },
+  { "tksocket",        { NULL }, 2915,  "tcp"  },
+  { "tksocket",        { NULL }, 2915,  "udp"  },
+  { "elvin_server",    { NULL }, 2916,  "tcp"  },
+  { "elvin_server",    { NULL }, 2916,  "udp"  },
+  { "elvin_client",    { NULL }, 2917,  "tcp"  },
+  { "elvin_client",    { NULL }, 2917,  "udp"  },
+  { "kastenchasepad",  { NULL }, 2918,  "tcp"  },
+  { "kastenchasepad",  { NULL }, 2918,  "udp"  },
+  { "roboer",          { NULL }, 2919,  "tcp"  },
+  { "roboer",          { NULL }, 2919,  "udp"  },
+  { "roboeda",         { NULL }, 2920,  "tcp"  },
+  { "roboeda",         { NULL }, 2920,  "udp"  },
+  { "cesdcdman",       { NULL }, 2921,  "tcp"  },
+  { "cesdcdman",       { NULL }, 2921,  "udp"  },
+  { "cesdcdtrn",       { NULL }, 2922,  "tcp"  },
+  { "cesdcdtrn",       { NULL }, 2922,  "udp"  },
+  { "wta-wsp-wtp-s",   { NULL }, 2923,  "tcp"  },
+  { "wta-wsp-wtp-s",   { NULL }, 2923,  "udp"  },
+  { "precise-vip",     { NULL }, 2924,  "tcp"  },
+  { "precise-vip",     { NULL }, 2924,  "udp"  },
+  { "mobile-file-dl",  { NULL }, 2926,  "tcp"  },
+  { "mobile-file-dl",  { NULL }, 2926,  "udp"  },
+  { "unimobilectrl",   { NULL }, 2927,  "tcp"  },
+  { "unimobilectrl",   { NULL }, 2927,  "udp"  },
+  { "redstone-cpss",   { NULL }, 2928,  "tcp"  },
+  { "redstone-cpss",   { NULL }, 2928,  "udp"  },
+  { "amx-webadmin",    { NULL }, 2929,  "tcp"  },
+  { "amx-webadmin",    { NULL }, 2929,  "udp"  },
+  { "amx-weblinx",     { NULL }, 2930,  "tcp"  },
+  { "amx-weblinx",     { NULL }, 2930,  "udp"  },
+  { "circle-x",        { NULL }, 2931,  "tcp"  },
+  { "circle-x",        { NULL }, 2931,  "udp"  },
+  { "incp",            { NULL }, 2932,  "tcp"  },
+  { "incp",            { NULL }, 2932,  "udp"  },
+  { "4-tieropmgw",     { NULL }, 2933,  "tcp"  },
+  { "4-tieropmgw",     { NULL }, 2933,  "udp"  },
+  { "4-tieropmcli",    { NULL }, 2934,  "tcp"  },
+  { "4-tieropmcli",    { NULL }, 2934,  "udp"  },
+  { "qtp",             { NULL }, 2935,  "tcp"  },
+  { "qtp",             { NULL }, 2935,  "udp"  },
+  { "otpatch",         { NULL }, 2936,  "tcp"  },
+  { "otpatch",         { NULL }, 2936,  "udp"  },
+  { "pnaconsult-lm",   { NULL }, 2937,  "tcp"  },
+  { "pnaconsult-lm",   { NULL }, 2937,  "udp"  },
+  { "sm-pas-1",        { NULL }, 2938,  "tcp"  },
+  { "sm-pas-1",        { NULL }, 2938,  "udp"  },
+  { "sm-pas-2",        { NULL }, 2939,  "tcp"  },
+  { "sm-pas-2",        { NULL }, 2939,  "udp"  },
+  { "sm-pas-3",        { NULL }, 2940,  "tcp"  },
+  { "sm-pas-3",        { NULL }, 2940,  "udp"  },
+  { "sm-pas-4",        { NULL }, 2941,  "tcp"  },
+  { "sm-pas-4",        { NULL }, 2941,  "udp"  },
+  { "sm-pas-5",        { NULL }, 2942,  "tcp"  },
+  { "sm-pas-5",        { NULL }, 2942,  "udp"  },
+  { "ttnrepository",   { NULL }, 2943,  "tcp"  },
+  { "ttnrepository",   { NULL }, 2943,  "udp"  },
+  { "megaco-h248",     { NULL }, 2944,  "tcp"  },
+  { "megaco-h248",     { NULL }, 2944,  "udp"  },
+  { "megaco-h248",     { NULL }, 2944,  "sctp" },
+  { "h248-binary",     { NULL }, 2945,  "tcp"  },
+  { "h248-binary",     { NULL }, 2945,  "udp"  },
+  { "h248-binary",     { NULL }, 2945,  "sctp" },
+  { "fjsvmpor",        { NULL }, 2946,  "tcp"  },
+  { "fjsvmpor",        { NULL }, 2946,  "udp"  },
+  { "gpsd",            { NULL }, 2947,  "tcp"  },
+  { "gpsd",            { NULL }, 2947,  "udp"  },
+  { "wap-push",        { NULL }, 2948,  "tcp"  },
+  { "wap-push",        { NULL }, 2948,  "udp"  },
+  { "wap-pushsecure",  { NULL }, 2949,  "tcp"  },
+  { "wap-pushsecure",  { NULL }, 2949,  "udp"  },
+  { "esip",            { NULL }, 2950,  "tcp"  },
+  { "esip",            { NULL }, 2950,  "udp"  },
+  { "ottp",            { NULL }, 2951,  "tcp"  },
+  { "ottp",            { NULL }, 2951,  "udp"  },
+  { "mpfwsas",         { NULL }, 2952,  "tcp"  },
+  { "mpfwsas",         { NULL }, 2952,  "udp"  },
+  { "ovalarmsrv",      { NULL }, 2953,  "tcp"  },
+  { "ovalarmsrv",      { NULL }, 2953,  "udp"  },
+  { "ovalarmsrv-cmd",  { NULL }, 2954,  "tcp"  },
+  { "ovalarmsrv-cmd",  { NULL }, 2954,  "udp"  },
+  { "csnotify",        { NULL }, 2955,  "tcp"  },
+  { "csnotify",        { NULL }, 2955,  "udp"  },
+  { "ovrimosdbman",    { NULL }, 2956,  "tcp"  },
+  { "ovrimosdbman",    { NULL }, 2956,  "udp"  },
+  { "jmact5",          { NULL }, 2957,  "tcp"  },
+  { "jmact5",          { NULL }, 2957,  "udp"  },
+  { "jmact6",          { NULL }, 2958,  "tcp"  },
+  { "jmact6",          { NULL }, 2958,  "udp"  },
+  { "rmopagt",         { NULL }, 2959,  "tcp"  },
+  { "rmopagt",         { NULL }, 2959,  "udp"  },
+  { "dfoxserver",      { NULL }, 2960,  "tcp"  },
+  { "dfoxserver",      { NULL }, 2960,  "udp"  },
+  { "boldsoft-lm",     { NULL }, 2961,  "tcp"  },
+  { "boldsoft-lm",     { NULL }, 2961,  "udp"  },
+  { "iph-policy-cli",  { NULL }, 2962,  "tcp"  },
+  { "iph-policy-cli",  { NULL }, 2962,  "udp"  },
+  { "iph-policy-adm",  { NULL }, 2963,  "tcp"  },
+  { "iph-policy-adm",  { NULL }, 2963,  "udp"  },
+  { "bullant-srap",    { NULL }, 2964,  "tcp"  },
+  { "bullant-srap",    { NULL }, 2964,  "udp"  },
+  { "bullant-rap",     { NULL }, 2965,  "tcp"  },
+  { "bullant-rap",     { NULL }, 2965,  "udp"  },
+  { "idp-infotrieve",  { NULL }, 2966,  "tcp"  },
+  { "idp-infotrieve",  { NULL }, 2966,  "udp"  },
+  { "ssc-agent",       { NULL }, 2967,  "tcp"  },
+  { "ssc-agent",       { NULL }, 2967,  "udp"  },
+  { "enpp",            { NULL }, 2968,  "tcp"  },
+  { "enpp",            { NULL }, 2968,  "udp"  },
+  { "essp",            { NULL }, 2969,  "tcp"  },
+  { "essp",            { NULL }, 2969,  "udp"  },
+  { "index-net",       { NULL }, 2970,  "tcp"  },
+  { "index-net",       { NULL }, 2970,  "udp"  },
+  { "netclip",         { NULL }, 2971,  "tcp"  },
+  { "netclip",         { NULL }, 2971,  "udp"  },
+  { "pmsm-webrctl",    { NULL }, 2972,  "tcp"  },
+  { "pmsm-webrctl",    { NULL }, 2972,  "udp"  },
+  { "svnetworks",      { NULL }, 2973,  "tcp"  },
+  { "svnetworks",      { NULL }, 2973,  "udp"  },
+  { "signal",          { NULL }, 2974,  "tcp"  },
+  { "signal",          { NULL }, 2974,  "udp"  },
+  { "fjmpcm",          { NULL }, 2975,  "tcp"  },
+  { "fjmpcm",          { NULL }, 2975,  "udp"  },
+  { "cns-srv-port",    { NULL }, 2976,  "tcp"  },
+  { "cns-srv-port",    { NULL }, 2976,  "udp"  },
+  { "ttc-etap-ns",     { NULL }, 2977,  "tcp"  },
+  { "ttc-etap-ns",     { NULL }, 2977,  "udp"  },
+  { "ttc-etap-ds",     { NULL }, 2978,  "tcp"  },
+  { "ttc-etap-ds",     { NULL }, 2978,  "udp"  },
+  { "h263-video",      { NULL }, 2979,  "tcp"  },
+  { "h263-video",      { NULL }, 2979,  "udp"  },
+  { "wimd",            { NULL }, 2980,  "tcp"  },
+  { "wimd",            { NULL }, 2980,  "udp"  },
+  { "mylxamport",      { NULL }, 2981,  "tcp"  },
+  { "mylxamport",      { NULL }, 2981,  "udp"  },
+  { "iwb-whiteboard",  { NULL }, 2982,  "tcp"  },
+  { "iwb-whiteboard",  { NULL }, 2982,  "udp"  },
+  { "netplan",         { NULL }, 2983,  "tcp"  },
+  { "netplan",         { NULL }, 2983,  "udp"  },
+  { "hpidsadmin",      { NULL }, 2984,  "tcp"  },
+  { "hpidsadmin",      { NULL }, 2984,  "udp"  },
+  { "hpidsagent",      { NULL }, 2985,  "tcp"  },
+  { "hpidsagent",      { NULL }, 2985,  "udp"  },
+  { "stonefalls",      { NULL }, 2986,  "tcp"  },
+  { "stonefalls",      { NULL }, 2986,  "udp"  },
+  { "identify",        { NULL }, 2987,  "tcp"  },
+  { "identify",        { NULL }, 2987,  "udp"  },
+  { "hippad",          { NULL }, 2988,  "tcp"  },
+  { "hippad",          { NULL }, 2988,  "udp"  },
+  { "zarkov",          { NULL }, 2989,  "tcp"  },
+  { "zarkov",          { NULL }, 2989,  "udp"  },
+  { "boscap",          { NULL }, 2990,  "tcp"  },
+  { "boscap",          { NULL }, 2990,  "udp"  },
+  { "wkstn-mon",       { NULL }, 2991,  "tcp"  },
+  { "wkstn-mon",       { NULL }, 2991,  "udp"  },
+  { "avenyo",          { NULL }, 2992,  "tcp"  },
+  { "avenyo",          { NULL }, 2992,  "udp"  },
+  { "veritas-vis1",    { NULL }, 2993,  "tcp"  },
+  { "veritas-vis1",    { NULL }, 2993,  "udp"  },
+  { "veritas-vis2",    { NULL }, 2994,  "tcp"  },
+  { "veritas-vis2",    { NULL }, 2994,  "udp"  },
+  { "idrs",            { NULL }, 2995,  "tcp"  },
+  { "idrs",            { NULL }, 2995,  "udp"  },
+  { "vsixml",          { NULL }, 2996,  "tcp"  },
+  { "vsixml",          { NULL }, 2996,  "udp"  },
+  { "rebol",           { NULL }, 2997,  "tcp"  },
+  { "rebol",           { NULL }, 2997,  "udp"  },
+  { "realsecure",      { NULL }, 2998,  "tcp"  },
+  { "realsecure",      { NULL }, 2998,  "udp"  },
+  { "remoteware-un",   { NULL }, 2999,  "tcp"  },
+  { "remoteware-un",   { NULL }, 2999,  "udp"  },
+  { "hbci",            { NULL }, 3000,  "tcp"  },
+  { "hbci",            { NULL }, 3000,  "udp"  },
+  { "remoteware-cl",   { NULL }, 3000,  "tcp"  },
+  { "remoteware-cl",   { NULL }, 3000,  "udp"  },
+  { "exlm-agent",      { NULL }, 3002,  "tcp"  },
+  { "exlm-agent",      { NULL }, 3002,  "udp"  },
+  { "remoteware-srv",  { NULL }, 3002,  "tcp"  },
+  { "remoteware-srv",  { NULL }, 3002,  "udp"  },
+  { "cgms",            { NULL }, 3003,  "tcp"  },
+  { "cgms",            { NULL }, 3003,  "udp"  },
+  { "csoftragent",     { NULL }, 3004,  "tcp"  },
+  { "csoftragent",     { NULL }, 3004,  "udp"  },
+  { "geniuslm",        { NULL }, 3005,  "tcp"  },
+  { "geniuslm",        { NULL }, 3005,  "udp"  },
+  { "ii-admin",        { NULL }, 3006,  "tcp"  },
+  { "ii-admin",        { NULL }, 3006,  "udp"  },
+  { "lotusmtap",       { NULL }, 3007,  "tcp"  },
+  { "lotusmtap",       { NULL }, 3007,  "udp"  },
+  { "midnight-tech",   { NULL }, 3008,  "tcp"  },
+  { "midnight-tech",   { NULL }, 3008,  "udp"  },
+  { "pxc-ntfy",        { NULL }, 3009,  "tcp"  },
+  { "pxc-ntfy",        { NULL }, 3009,  "udp"  },
+  { "gw",              { NULL }, 3010,  "tcp"  },
+  { "ping-pong",       { NULL }, 3010,  "udp"  },
+  { "trusted-web",     { NULL }, 3011,  "tcp"  },
+  { "trusted-web",     { NULL }, 3011,  "udp"  },
+  { "twsdss",          { NULL }, 3012,  "tcp"  },
+  { "twsdss",          { NULL }, 3012,  "udp"  },
+  { "gilatskysurfer",  { NULL }, 3013,  "tcp"  },
+  { "gilatskysurfer",  { NULL }, 3013,  "udp"  },
+  { "broker_service",  { NULL }, 3014,  "tcp"  },
+  { "broker_service",  { NULL }, 3014,  "udp"  },
+  { "nati-dstp",       { NULL }, 3015,  "tcp"  },
+  { "nati-dstp",       { NULL }, 3015,  "udp"  },
+  { "notify_srvr",     { NULL }, 3016,  "tcp"  },
+  { "notify_srvr",     { NULL }, 3016,  "udp"  },
+  { "event_listener",  { NULL }, 3017,  "tcp"  },
+  { "event_listener",  { NULL }, 3017,  "udp"  },
+  { "srvc_registry",   { NULL }, 3018,  "tcp"  },
+  { "srvc_registry",   { NULL }, 3018,  "udp"  },
+  { "resource_mgr",    { NULL }, 3019,  "tcp"  },
+  { "resource_mgr",    { NULL }, 3019,  "udp"  },
+  { "cifs",            { NULL }, 3020,  "tcp"  },
+  { "cifs",            { NULL }, 3020,  "udp"  },
+  { "agriserver",      { NULL }, 3021,  "tcp"  },
+  { "agriserver",      { NULL }, 3021,  "udp"  },
+  { "csregagent",      { NULL }, 3022,  "tcp"  },
+  { "csregagent",      { NULL }, 3022,  "udp"  },
+  { "magicnotes",      { NULL }, 3023,  "tcp"  },
+  { "magicnotes",      { NULL }, 3023,  "udp"  },
+  { "nds_sso",         { NULL }, 3024,  "tcp"  },
+  { "nds_sso",         { NULL }, 3024,  "udp"  },
+  { "arepa-raft",      { NULL }, 3025,  "tcp"  },
+  { "arepa-raft",      { NULL }, 3025,  "udp"  },
+  { "agri-gateway",    { NULL }, 3026,  "tcp"  },
+  { "agri-gateway",    { NULL }, 3026,  "udp"  },
+  { "LiebDevMgmt_C",   { NULL }, 3027,  "tcp"  },
+  { "LiebDevMgmt_C",   { NULL }, 3027,  "udp"  },
+  { "LiebDevMgmt_DM",  { NULL }, 3028,  "tcp"  },
+  { "LiebDevMgmt_DM",  { NULL }, 3028,  "udp"  },
+  { "LiebDevMgmt_A",   { NULL }, 3029,  "tcp"  },
+  { "LiebDevMgmt_A",   { NULL }, 3029,  "udp"  },
+  { "arepa-cas",       { NULL }, 3030,  "tcp"  },
+  { "arepa-cas",       { NULL }, 3030,  "udp"  },
+  { "eppc",            { NULL }, 3031,  "tcp"  },
+  { "eppc",            { NULL }, 3031,  "udp"  },
+  { "redwood-chat",    { NULL }, 3032,  "tcp"  },
+  { "redwood-chat",    { NULL }, 3032,  "udp"  },
+  { "pdb",             { NULL }, 3033,  "tcp"  },
+  { "pdb",             { NULL }, 3033,  "udp"  },
+  { "osmosis-aeea",    { NULL }, 3034,  "tcp"  },
+  { "osmosis-aeea",    { NULL }, 3034,  "udp"  },
+  { "fjsv-gssagt",     { NULL }, 3035,  "tcp"  },
+  { "fjsv-gssagt",     { NULL }, 3035,  "udp"  },
+  { "hagel-dump",      { NULL }, 3036,  "tcp"  },
+  { "hagel-dump",      { NULL }, 3036,  "udp"  },
+  { "hp-san-mgmt",     { NULL }, 3037,  "tcp"  },
+  { "hp-san-mgmt",     { NULL }, 3037,  "udp"  },
+  { "santak-ups",      { NULL }, 3038,  "tcp"  },
+  { "santak-ups",      { NULL }, 3038,  "udp"  },
+  { "cogitate",        { NULL }, 3039,  "tcp"  },
+  { "cogitate",        { NULL }, 3039,  "udp"  },
+  { "tomato-springs",  { NULL }, 3040,  "tcp"  },
+  { "tomato-springs",  { NULL }, 3040,  "udp"  },
+  { "di-traceware",    { NULL }, 3041,  "tcp"  },
+  { "di-traceware",    { NULL }, 3041,  "udp"  },
+  { "journee",         { NULL }, 3042,  "tcp"  },
+  { "journee",         { NULL }, 3042,  "udp"  },
+  { "brp",             { NULL }, 3043,  "tcp"  },
+  { "brp",             { NULL }, 3043,  "udp"  },
+  { "epp",             { NULL }, 3044,  "tcp"  },
+  { "epp",             { NULL }, 3044,  "udp"  },
+  { "responsenet",     { NULL }, 3045,  "tcp"  },
+  { "responsenet",     { NULL }, 3045,  "udp"  },
+  { "di-ase",          { NULL }, 3046,  "tcp"  },
+  { "di-ase",          { NULL }, 3046,  "udp"  },
+  { "hlserver",        { NULL }, 3047,  "tcp"  },
+  { "hlserver",        { NULL }, 3047,  "udp"  },
+  { "pctrader",        { NULL }, 3048,  "tcp"  },
+  { "pctrader",        { NULL }, 3048,  "udp"  },
+  { "nsws",            { NULL }, 3049,  "tcp"  },
+  { "nsws",            { NULL }, 3049,  "udp"  },
+  { "gds_db",          { NULL }, 3050,  "tcp"  },
+  { "gds_db",          { NULL }, 3050,  "udp"  },
+  { "galaxy-server",   { NULL }, 3051,  "tcp"  },
+  { "galaxy-server",   { NULL }, 3051,  "udp"  },
+  { "apc-3052",        { NULL }, 3052,  "tcp"  },
+  { "apc-3052",        { NULL }, 3052,  "udp"  },
+  { "dsom-server",     { NULL }, 3053,  "tcp"  },
+  { "dsom-server",     { NULL }, 3053,  "udp"  },
+  { "amt-cnf-prot",    { NULL }, 3054,  "tcp"  },
+  { "amt-cnf-prot",    { NULL }, 3054,  "udp"  },
+  { "policyserver",    { NULL }, 3055,  "tcp"  },
+  { "policyserver",    { NULL }, 3055,  "udp"  },
+  { "cdl-server",      { NULL }, 3056,  "tcp"  },
+  { "cdl-server",      { NULL }, 3056,  "udp"  },
+  { "goahead-fldup",   { NULL }, 3057,  "tcp"  },
+  { "goahead-fldup",   { NULL }, 3057,  "udp"  },
+  { "videobeans",      { NULL }, 3058,  "tcp"  },
+  { "videobeans",      { NULL }, 3058,  "udp"  },
+  { "qsoft",           { NULL }, 3059,  "tcp"  },
+  { "qsoft",           { NULL }, 3059,  "udp"  },
+  { "interserver",     { NULL }, 3060,  "tcp"  },
+  { "interserver",     { NULL }, 3060,  "udp"  },
+  { "cautcpd",         { NULL }, 3061,  "tcp"  },
+  { "cautcpd",         { NULL }, 3061,  "udp"  },
+  { "ncacn-ip-tcp",    { NULL }, 3062,  "tcp"  },
+  { "ncacn-ip-tcp",    { NULL }, 3062,  "udp"  },
+  { "ncadg-ip-udp",    { NULL }, 3063,  "tcp"  },
+  { "ncadg-ip-udp",    { NULL }, 3063,  "udp"  },
+  { "rprt",            { NULL }, 3064,  "tcp"  },
+  { "rprt",            { NULL }, 3064,  "udp"  },
+  { "slinterbase",     { NULL }, 3065,  "tcp"  },
+  { "slinterbase",     { NULL }, 3065,  "udp"  },
+  { "netattachsdmp",   { NULL }, 3066,  "tcp"  },
+  { "netattachsdmp",   { NULL }, 3066,  "udp"  },
+  { "fjhpjp",          { NULL }, 3067,  "tcp"  },
+  { "fjhpjp",          { NULL }, 3067,  "udp"  },
+  { "ls3bcast",        { NULL }, 3068,  "tcp"  },
+  { "ls3bcast",        { NULL }, 3068,  "udp"  },
+  { "ls3",             { NULL }, 3069,  "tcp"  },
+  { "ls3",             { NULL }, 3069,  "udp"  },
+  { "mgxswitch",       { NULL }, 3070,  "tcp"  },
+  { "mgxswitch",       { NULL }, 3070,  "udp"  },
+  { "csd-mgmt-port",   { NULL }, 3071,  "tcp"  },
+  { "csd-mgmt-port",   { NULL }, 3071,  "udp"  },
+  { "csd-monitor",     { NULL }, 3072,  "tcp"  },
+  { "csd-monitor",     { NULL }, 3072,  "udp"  },
+  { "vcrp",            { NULL }, 3073,  "tcp"  },
+  { "vcrp",            { NULL }, 3073,  "udp"  },
+  { "xbox",            { NULL }, 3074,  "tcp"  },
+  { "xbox",            { NULL }, 3074,  "udp"  },
+  { "orbix-locator",   { NULL }, 3075,  "tcp"  },
+  { "orbix-locator",   { NULL }, 3075,  "udp"  },
+  { "orbix-config",    { NULL }, 3076,  "tcp"  },
+  { "orbix-config",    { NULL }, 3076,  "udp"  },
+  { "orbix-loc-ssl",   { NULL }, 3077,  "tcp"  },
+  { "orbix-loc-ssl",   { NULL }, 3077,  "udp"  },
+  { "orbix-cfg-ssl",   { NULL }, 3078,  "tcp"  },
+  { "orbix-cfg-ssl",   { NULL }, 3078,  "udp"  },
+  { "lv-frontpanel",   { NULL }, 3079,  "tcp"  },
+  { "lv-frontpanel",   { NULL }, 3079,  "udp"  },
+  { "stm_pproc",       { NULL }, 3080,  "tcp"  },
+  { "stm_pproc",       { NULL }, 3080,  "udp"  },
+  { "tl1-lv",          { NULL }, 3081,  "tcp"  },
+  { "tl1-lv",          { NULL }, 3081,  "udp"  },
+  { "tl1-raw",         { NULL }, 3082,  "tcp"  },
+  { "tl1-raw",         { NULL }, 3082,  "udp"  },
+  { "tl1-telnet",      { NULL }, 3083,  "tcp"  },
+  { "tl1-telnet",      { NULL }, 3083,  "udp"  },
+  { "itm-mccs",        { NULL }, 3084,  "tcp"  },
+  { "itm-mccs",        { NULL }, 3084,  "udp"  },
+  { "pcihreq",         { NULL }, 3085,  "tcp"  },
+  { "pcihreq",         { NULL }, 3085,  "udp"  },
+  { "jdl-dbkitchen",   { NULL }, 3086,  "tcp"  },
+  { "jdl-dbkitchen",   { NULL }, 3086,  "udp"  },
+  { "asoki-sma",       { NULL }, 3087,  "tcp"  },
+  { "asoki-sma",       { NULL }, 3087,  "udp"  },
+  { "xdtp",            { NULL }, 3088,  "tcp"  },
+  { "xdtp",            { NULL }, 3088,  "udp"  },
+  { "ptk-alink",       { NULL }, 3089,  "tcp"  },
+  { "ptk-alink",       { NULL }, 3089,  "udp"  },
+  { "stss",            { NULL }, 3090,  "tcp"  },
+  { "stss",            { NULL }, 3090,  "udp"  },
+  { "1ci-smcs",        { NULL }, 3091,  "tcp"  },
+  { "1ci-smcs",        { NULL }, 3091,  "udp"  },
+  { "rapidmq-center",  { NULL }, 3093,  "tcp"  },
+  { "rapidmq-center",  { NULL }, 3093,  "udp"  },
+  { "rapidmq-reg",     { NULL }, 3094,  "tcp"  },
+  { "rapidmq-reg",     { NULL }, 3094,  "udp"  },
+  { "panasas",         { NULL }, 3095,  "tcp"  },
+  { "panasas",         { NULL }, 3095,  "udp"  },
+  { "ndl-aps",         { NULL }, 3096,  "tcp"  },
+  { "ndl-aps",         { NULL }, 3096,  "udp"  },
+  { "itu-bicc-stc",    { NULL }, 3097,  "sctp" },
+  { "umm-port",        { NULL }, 3098,  "tcp"  },
+  { "umm-port",        { NULL }, 3098,  "udp"  },
+  { "chmd",            { NULL }, 3099,  "tcp"  },
+  { "chmd",            { NULL }, 3099,  "udp"  },
+  { "opcon-xps",       { NULL }, 3100,  "tcp"  },
+  { "opcon-xps",       { NULL }, 3100,  "udp"  },
+  { "hp-pxpib",        { NULL }, 3101,  "tcp"  },
+  { "hp-pxpib",        { NULL }, 3101,  "udp"  },
+  { "slslavemon",      { NULL }, 3102,  "tcp"  },
+  { "slslavemon",      { NULL }, 3102,  "udp"  },
+  { "autocuesmi",      { NULL }, 3103,  "tcp"  },
+  { "autocuesmi",      { NULL }, 3103,  "udp"  },
+  { "autocuelog",      { NULL }, 3104,  "tcp"  },
+  { "autocuetime",     { NULL }, 3104,  "udp"  },
+  { "cardbox",         { NULL }, 3105,  "tcp"  },
+  { "cardbox",         { NULL }, 3105,  "udp"  },
+  { "cardbox-http",    { NULL }, 3106,  "tcp"  },
+  { "cardbox-http",    { NULL }, 3106,  "udp"  },
+  { "business",        { NULL }, 3107,  "tcp"  },
+  { "business",        { NULL }, 3107,  "udp"  },
+  { "geolocate",       { NULL }, 3108,  "tcp"  },
+  { "geolocate",       { NULL }, 3108,  "udp"  },
+  { "personnel",       { NULL }, 3109,  "tcp"  },
+  { "personnel",       { NULL }, 3109,  "udp"  },
+  { "sim-control",     { NULL }, 3110,  "tcp"  },
+  { "sim-control",     { NULL }, 3110,  "udp"  },
+  { "wsynch",          { NULL }, 3111,  "tcp"  },
+  { "wsynch",          { NULL }, 3111,  "udp"  },
+  { "ksysguard",       { NULL }, 3112,  "tcp"  },
+  { "ksysguard",       { NULL }, 3112,  "udp"  },
+  { "cs-auth-svr",     { NULL }, 3113,  "tcp"  },
+  { "cs-auth-svr",     { NULL }, 3113,  "udp"  },
+  { "ccmad",           { NULL }, 3114,  "tcp"  },
+  { "ccmad",           { NULL }, 3114,  "udp"  },
+  { "mctet-master",    { NULL }, 3115,  "tcp"  },
+  { "mctet-master",    { NULL }, 3115,  "udp"  },
+  { "mctet-gateway",   { NULL }, 3116,  "tcp"  },
+  { "mctet-gateway",   { NULL }, 3116,  "udp"  },
+  { "mctet-jserv",     { NULL }, 3117,  "tcp"  },
+  { "mctet-jserv",     { NULL }, 3117,  "udp"  },
+  { "pkagent",         { NULL }, 3118,  "tcp"  },
+  { "pkagent",         { NULL }, 3118,  "udp"  },
+  { "d2000kernel",     { NULL }, 3119,  "tcp"  },
+  { "d2000kernel",     { NULL }, 3119,  "udp"  },
+  { "d2000webserver",  { NULL }, 3120,  "tcp"  },
+  { "d2000webserver",  { NULL }, 3120,  "udp"  },
+  { "vtr-emulator",    { NULL }, 3122,  "tcp"  },
+  { "vtr-emulator",    { NULL }, 3122,  "udp"  },
+  { "edix",            { NULL }, 3123,  "tcp"  },
+  { "edix",            { NULL }, 3123,  "udp"  },
+  { "beacon-port",     { NULL }, 3124,  "tcp"  },
+  { "beacon-port",     { NULL }, 3124,  "udp"  },
+  { "a13-an",          { NULL }, 3125,  "tcp"  },
+  { "a13-an",          { NULL }, 3125,  "udp"  },
+  { "ctx-bridge",      { NULL }, 3127,  "tcp"  },
+  { "ctx-bridge",      { NULL }, 3127,  "udp"  },
+  { "ndl-aas",         { NULL }, 3128,  "tcp"  },
+  { "ndl-aas",         { NULL }, 3128,  "udp"  },
+  { "netport-id",      { NULL }, 3129,  "tcp"  },
+  { "netport-id",      { NULL }, 3129,  "udp"  },
+  { "icpv2",           { NULL }, 3130,  "tcp"  },
+  { "icpv2",           { NULL }, 3130,  "udp"  },
+  { "netbookmark",     { NULL }, 3131,  "tcp"  },
+  { "netbookmark",     { NULL }, 3131,  "udp"  },
+  { "ms-rule-engine",  { NULL }, 3132,  "tcp"  },
+  { "ms-rule-engine",  { NULL }, 3132,  "udp"  },
+  { "prism-deploy",    { NULL }, 3133,  "tcp"  },
+  { "prism-deploy",    { NULL }, 3133,  "udp"  },
+  { "ecp",             { NULL }, 3134,  "tcp"  },
+  { "ecp",             { NULL }, 3134,  "udp"  },
+  { "peerbook-port",   { NULL }, 3135,  "tcp"  },
+  { "peerbook-port",   { NULL }, 3135,  "udp"  },
+  { "grubd",           { NULL }, 3136,  "tcp"  },
+  { "grubd",           { NULL }, 3136,  "udp"  },
+  { "rtnt-1",          { NULL }, 3137,  "tcp"  },
+  { "rtnt-1",          { NULL }, 3137,  "udp"  },
+  { "rtnt-2",          { NULL }, 3138,  "tcp"  },
+  { "rtnt-2",          { NULL }, 3138,  "udp"  },
+  { "incognitorv",     { NULL }, 3139,  "tcp"  },
+  { "incognitorv",     { NULL }, 3139,  "udp"  },
+  { "ariliamulti",     { NULL }, 3140,  "tcp"  },
+  { "ariliamulti",     { NULL }, 3140,  "udp"  },
+  { "vmodem",          { NULL }, 3141,  "tcp"  },
+  { "vmodem",          { NULL }, 3141,  "udp"  },
+  { "rdc-wh-eos",      { NULL }, 3142,  "tcp"  },
+  { "rdc-wh-eos",      { NULL }, 3142,  "udp"  },
+  { "seaview",         { NULL }, 3143,  "tcp"  },
+  { "seaview",         { NULL }, 3143,  "udp"  },
+  { "tarantella",      { NULL }, 3144,  "tcp"  },
+  { "tarantella",      { NULL }, 3144,  "udp"  },
+  { "csi-lfap",        { NULL }, 3145,  "tcp"  },
+  { "csi-lfap",        { NULL }, 3145,  "udp"  },
+  { "bears-02",        { NULL }, 3146,  "tcp"  },
+  { "bears-02",        { NULL }, 3146,  "udp"  },
+  { "rfio",            { NULL }, 3147,  "tcp"  },
+  { "rfio",            { NULL }, 3147,  "udp"  },
+  { "nm-game-admin",   { NULL }, 3148,  "tcp"  },
+  { "nm-game-admin",   { NULL }, 3148,  "udp"  },
+  { "nm-game-server",  { NULL }, 3149,  "tcp"  },
+  { "nm-game-server",  { NULL }, 3149,  "udp"  },
+  { "nm-asses-admin",  { NULL }, 3150,  "tcp"  },
+  { "nm-asses-admin",  { NULL }, 3150,  "udp"  },
+  { "nm-assessor",     { NULL }, 3151,  "tcp"  },
+  { "nm-assessor",     { NULL }, 3151,  "udp"  },
+  { "feitianrockey",   { NULL }, 3152,  "tcp"  },
+  { "feitianrockey",   { NULL }, 3152,  "udp"  },
+  { "s8-client-port",  { NULL }, 3153,  "tcp"  },
+  { "s8-client-port",  { NULL }, 3153,  "udp"  },
+  { "ccmrmi",          { NULL }, 3154,  "tcp"  },
+  { "ccmrmi",          { NULL }, 3154,  "udp"  },
+  { "jpegmpeg",        { NULL }, 3155,  "tcp"  },
+  { "jpegmpeg",        { NULL }, 3155,  "udp"  },
+  { "indura",          { NULL }, 3156,  "tcp"  },
+  { "indura",          { NULL }, 3156,  "udp"  },
+  { "e3consultants",   { NULL }, 3157,  "tcp"  },
+  { "e3consultants",   { NULL }, 3157,  "udp"  },
+  { "stvp",            { NULL }, 3158,  "tcp"  },
+  { "stvp",            { NULL }, 3158,  "udp"  },
+  { "navegaweb-port",  { NULL }, 3159,  "tcp"  },
+  { "navegaweb-port",  { NULL }, 3159,  "udp"  },
+  { "tip-app-server",  { NULL }, 3160,  "tcp"  },
+  { "tip-app-server",  { NULL }, 3160,  "udp"  },
+  { "doc1lm",          { NULL }, 3161,  "tcp"  },
+  { "doc1lm",          { NULL }, 3161,  "udp"  },
+  { "sflm",            { NULL }, 3162,  "tcp"  },
+  { "sflm",            { NULL }, 3162,  "udp"  },
+  { "res-sap",         { NULL }, 3163,  "tcp"  },
+  { "res-sap",         { NULL }, 3163,  "udp"  },
+  { "imprs",           { NULL }, 3164,  "tcp"  },
+  { "imprs",           { NULL }, 3164,  "udp"  },
+  { "newgenpay",       { NULL }, 3165,  "tcp"  },
+  { "newgenpay",       { NULL }, 3165,  "udp"  },
+  { "sossecollector",  { NULL }, 3166,  "tcp"  },
+  { "sossecollector",  { NULL }, 3166,  "udp"  },
+  { "nowcontact",      { NULL }, 3167,  "tcp"  },
+  { "nowcontact",      { NULL }, 3167,  "udp"  },
+  { "poweronnud",      { NULL }, 3168,  "tcp"  },
+  { "poweronnud",      { NULL }, 3168,  "udp"  },
+  { "serverview-as",   { NULL }, 3169,  "tcp"  },
+  { "serverview-as",   { NULL }, 3169,  "udp"  },
+  { "serverview-asn",  { NULL }, 3170,  "tcp"  },
+  { "serverview-asn",  { NULL }, 3170,  "udp"  },
+  { "serverview-gf",   { NULL }, 3171,  "tcp"  },
+  { "serverview-gf",   { NULL }, 3171,  "udp"  },
+  { "serverview-rm",   { NULL }, 3172,  "tcp"  },
+  { "serverview-rm",   { NULL }, 3172,  "udp"  },
+  { "serverview-icc",  { NULL }, 3173,  "tcp"  },
+  { "serverview-icc",  { NULL }, 3173,  "udp"  },
+  { "armi-server",     { NULL }, 3174,  "tcp"  },
+  { "armi-server",     { NULL }, 3174,  "udp"  },
+  { "t1-e1-over-ip",   { NULL }, 3175,  "tcp"  },
+  { "t1-e1-over-ip",   { NULL }, 3175,  "udp"  },
+  { "ars-master",      { NULL }, 3176,  "tcp"  },
+  { "ars-master",      { NULL }, 3176,  "udp"  },
+  { "phonex-port",     { NULL }, 3177,  "tcp"  },
+  { "phonex-port",     { NULL }, 3177,  "udp"  },
+  { "radclientport",   { NULL }, 3178,  "tcp"  },
+  { "radclientport",   { NULL }, 3178,  "udp"  },
+  { "h2gf-w-2m",       { NULL }, 3179,  "tcp"  },
+  { "h2gf-w-2m",       { NULL }, 3179,  "udp"  },
+  { "mc-brk-srv",      { NULL }, 3180,  "tcp"  },
+  { "mc-brk-srv",      { NULL }, 3180,  "udp"  },
+  { "bmcpatrolagent",  { NULL }, 3181,  "tcp"  },
+  { "bmcpatrolagent",  { NULL }, 3181,  "udp"  },
+  { "bmcpatrolrnvu",   { NULL }, 3182,  "tcp"  },
+  { "bmcpatrolrnvu",   { NULL }, 3182,  "udp"  },
+  { "cops-tls",        { NULL }, 3183,  "tcp"  },
+  { "cops-tls",        { NULL }, 3183,  "udp"  },
+  { "apogeex-port",    { NULL }, 3184,  "tcp"  },
+  { "apogeex-port",    { NULL }, 3184,  "udp"  },
+  { "smpppd",          { NULL }, 3185,  "tcp"  },
+  { "smpppd",          { NULL }, 3185,  "udp"  },
+  { "iiw-port",        { NULL }, 3186,  "tcp"  },
+  { "iiw-port",        { NULL }, 3186,  "udp"  },
+  { "odi-port",        { NULL }, 3187,  "tcp"  },
+  { "odi-port",        { NULL }, 3187,  "udp"  },
+  { "brcm-comm-port",  { NULL }, 3188,  "tcp"  },
+  { "brcm-comm-port",  { NULL }, 3188,  "udp"  },
+  { "pcle-infex",      { NULL }, 3189,  "tcp"  },
+  { "pcle-infex",      { NULL }, 3189,  "udp"  },
+  { "csvr-proxy",      { NULL }, 3190,  "tcp"  },
+  { "csvr-proxy",      { NULL }, 3190,  "udp"  },
+  { "csvr-sslproxy",   { NULL }, 3191,  "tcp"  },
+  { "csvr-sslproxy",   { NULL }, 3191,  "udp"  },
+  { "firemonrcc",      { NULL }, 3192,  "tcp"  },
+  { "firemonrcc",      { NULL }, 3192,  "udp"  },
+  { "spandataport",    { NULL }, 3193,  "tcp"  },
+  { "spandataport",    { NULL }, 3193,  "udp"  },
+  { "magbind",         { NULL }, 3194,  "tcp"  },
+  { "magbind",         { NULL }, 3194,  "udp"  },
+  { "ncu-1",           { NULL }, 3195,  "tcp"  },
+  { "ncu-1",           { NULL }, 3195,  "udp"  },
+  { "ncu-2",           { NULL }, 3196,  "tcp"  },
+  { "ncu-2",           { NULL }, 3196,  "udp"  },
+  { "embrace-dp-s",    { NULL }, 3197,  "tcp"  },
+  { "embrace-dp-s",    { NULL }, 3197,  "udp"  },
+  { "embrace-dp-c",    { NULL }, 3198,  "tcp"  },
+  { "embrace-dp-c",    { NULL }, 3198,  "udp"  },
+  { "dmod-workspace",  { NULL }, 3199,  "tcp"  },
+  { "dmod-workspace",  { NULL }, 3199,  "udp"  },
+  { "tick-port",       { NULL }, 3200,  "tcp"  },
+  { "tick-port",       { NULL }, 3200,  "udp"  },
+  { "cpq-tasksmart",   { NULL }, 3201,  "tcp"  },
+  { "cpq-tasksmart",   { NULL }, 3201,  "udp"  },
+  { "intraintra",      { NULL }, 3202,  "tcp"  },
+  { "intraintra",      { NULL }, 3202,  "udp"  },
+  { "netwatcher-mon",  { NULL }, 3203,  "tcp"  },
+  { "netwatcher-mon",  { NULL }, 3203,  "udp"  },
+  { "netwatcher-db",   { NULL }, 3204,  "tcp"  },
+  { "netwatcher-db",   { NULL }, 3204,  "udp"  },
+  { "isns",            { NULL }, 3205,  "tcp"  },
+  { "isns",            { NULL }, 3205,  "udp"  },
+  { "ironmail",        { NULL }, 3206,  "tcp"  },
+  { "ironmail",        { NULL }, 3206,  "udp"  },
+  { "vx-auth-port",    { NULL }, 3207,  "tcp"  },
+  { "vx-auth-port",    { NULL }, 3207,  "udp"  },
+  { "pfu-prcallback",  { NULL }, 3208,  "tcp"  },
+  { "pfu-prcallback",  { NULL }, 3208,  "udp"  },
+  { "netwkpathengine", { NULL }, 3209,  "tcp"  },
+  { "netwkpathengine", { NULL }, 3209,  "udp"  },
+  { "flamenco-proxy",  { NULL }, 3210,  "tcp"  },
+  { "flamenco-proxy",  { NULL }, 3210,  "udp"  },
+  { "avsecuremgmt",    { NULL }, 3211,  "tcp"  },
+  { "avsecuremgmt",    { NULL }, 3211,  "udp"  },
+  { "surveyinst",      { NULL }, 3212,  "tcp"  },
+  { "surveyinst",      { NULL }, 3212,  "udp"  },
+  { "neon24x7",        { NULL }, 3213,  "tcp"  },
+  { "neon24x7",        { NULL }, 3213,  "udp"  },
+  { "jmq-daemon-1",    { NULL }, 3214,  "tcp"  },
+  { "jmq-daemon-1",    { NULL }, 3214,  "udp"  },
+  { "jmq-daemon-2",    { NULL }, 3215,  "tcp"  },
+  { "jmq-daemon-2",    { NULL }, 3215,  "udp"  },
+  { "ferrari-foam",    { NULL }, 3216,  "tcp"  },
+  { "ferrari-foam",    { NULL }, 3216,  "udp"  },
+  { "unite",           { NULL }, 3217,  "tcp"  },
+  { "unite",           { NULL }, 3217,  "udp"  },
+  { "smartpackets",    { NULL }, 3218,  "tcp"  },
+  { "smartpackets",    { NULL }, 3218,  "udp"  },
+  { "wms-messenger",   { NULL }, 3219,  "tcp"  },
+  { "wms-messenger",   { NULL }, 3219,  "udp"  },
+  { "xnm-ssl",         { NULL }, 3220,  "tcp"  },
+  { "xnm-ssl",         { NULL }, 3220,  "udp"  },
+  { "xnm-clear-text",  { NULL }, 3221,  "tcp"  },
+  { "xnm-clear-text",  { NULL }, 3221,  "udp"  },
+  { "glbp",            { NULL }, 3222,  "tcp"  },
+  { "glbp",            { NULL }, 3222,  "udp"  },
+  { "digivote",        { NULL }, 3223,  "tcp"  },
+  { "digivote",        { NULL }, 3223,  "udp"  },
+  { "aes-discovery",   { NULL }, 3224,  "tcp"  },
+  { "aes-discovery",   { NULL }, 3224,  "udp"  },
+  { "fcip-port",       { NULL }, 3225,  "tcp"  },
+  { "fcip-port",       { NULL }, 3225,  "udp"  },
+  { "isi-irp",         { NULL }, 3226,  "tcp"  },
+  { "isi-irp",         { NULL }, 3226,  "udp"  },
+  { "dwnmshttp",       { NULL }, 3227,  "tcp"  },
+  { "dwnmshttp",       { NULL }, 3227,  "udp"  },
+  { "dwmsgserver",     { NULL }, 3228,  "tcp"  },
+  { "dwmsgserver",     { NULL }, 3228,  "udp"  },
+  { "global-cd-port",  { NULL }, 3229,  "tcp"  },
+  { "global-cd-port",  { NULL }, 3229,  "udp"  },
+  { "sftdst-port",     { NULL }, 3230,  "tcp"  },
+  { "sftdst-port",     { NULL }, 3230,  "udp"  },
+  { "vidigo",          { NULL }, 3231,  "tcp"  },
+  { "vidigo",          { NULL }, 3231,  "udp"  },
+  { "mdtp",            { NULL }, 3232,  "tcp"  },
+  { "mdtp",            { NULL }, 3232,  "udp"  },
+  { "whisker",         { NULL }, 3233,  "tcp"  },
+  { "whisker",         { NULL }, 3233,  "udp"  },
+  { "alchemy",         { NULL }, 3234,  "tcp"  },
+  { "alchemy",         { NULL }, 3234,  "udp"  },
+  { "mdap-port",       { NULL }, 3235,  "tcp"  },
+  { "mdap-port",       { NULL }, 3235,  "udp"  },
+  { "apparenet-ts",    { NULL }, 3236,  "tcp"  },
+  { "apparenet-ts",    { NULL }, 3236,  "udp"  },
+  { "apparenet-tps",   { NULL }, 3237,  "tcp"  },
+  { "apparenet-tps",   { NULL }, 3237,  "udp"  },
+  { "apparenet-as",    { NULL }, 3238,  "tcp"  },
+  { "apparenet-as",    { NULL }, 3238,  "udp"  },
+  { "apparenet-ui",    { NULL }, 3239,  "tcp"  },
+  { "apparenet-ui",    { NULL }, 3239,  "udp"  },
+  { "triomotion",      { NULL }, 3240,  "tcp"  },
+  { "triomotion",      { NULL }, 3240,  "udp"  },
+  { "sysorb",          { NULL }, 3241,  "tcp"  },
+  { "sysorb",          { NULL }, 3241,  "udp"  },
+  { "sdp-id-port",     { NULL }, 3242,  "tcp"  },
+  { "sdp-id-port",     { NULL }, 3242,  "udp"  },
+  { "timelot",         { NULL }, 3243,  "tcp"  },
+  { "timelot",         { NULL }, 3243,  "udp"  },
+  { "onesaf",          { NULL }, 3244,  "tcp"  },
+  { "onesaf",          { NULL }, 3244,  "udp"  },
+  { "vieo-fe",         { NULL }, 3245,  "tcp"  },
+  { "vieo-fe",         { NULL }, 3245,  "udp"  },
+  { "dvt-system",      { NULL }, 3246,  "tcp"  },
+  { "dvt-system",      { NULL }, 3246,  "udp"  },
+  { "dvt-data",        { NULL }, 3247,  "tcp"  },
+  { "dvt-data",        { NULL }, 3247,  "udp"  },
+  { "procos-lm",       { NULL }, 3248,  "tcp"  },
+  { "procos-lm",       { NULL }, 3248,  "udp"  },
+  { "ssp",             { NULL }, 3249,  "tcp"  },
+  { "ssp",             { NULL }, 3249,  "udp"  },
+  { "hicp",            { NULL }, 3250,  "tcp"  },
+  { "hicp",            { NULL }, 3250,  "udp"  },
+  { "sysscanner",      { NULL }, 3251,  "tcp"  },
+  { "sysscanner",      { NULL }, 3251,  "udp"  },
+  { "dhe",             { NULL }, 3252,  "tcp"  },
+  { "dhe",             { NULL }, 3252,  "udp"  },
+  { "pda-data",        { NULL }, 3253,  "tcp"  },
+  { "pda-data",        { NULL }, 3253,  "udp"  },
+  { "pda-sys",         { NULL }, 3254,  "tcp"  },
+  { "pda-sys",         { NULL }, 3254,  "udp"  },
+  { "semaphore",       { NULL }, 3255,  "tcp"  },
+  { "semaphore",       { NULL }, 3255,  "udp"  },
+  { "cpqrpm-agent",    { NULL }, 3256,  "tcp"  },
+  { "cpqrpm-agent",    { NULL }, 3256,  "udp"  },
+  { "cpqrpm-server",   { NULL }, 3257,  "tcp"  },
+  { "cpqrpm-server",   { NULL }, 3257,  "udp"  },
+  { "ivecon-port",     { NULL }, 3258,  "tcp"  },
+  { "ivecon-port",     { NULL }, 3258,  "udp"  },
+  { "epncdp2",         { NULL }, 3259,  "tcp"  },
+  { "epncdp2",         { NULL }, 3259,  "udp"  },
+  { "iscsi-target",    { NULL }, 3260,  "tcp"  },
+  { "iscsi-target",    { NULL }, 3260,  "udp"  },
+  { "winshadow",       { NULL }, 3261,  "tcp"  },
+  { "winshadow",       { NULL }, 3261,  "udp"  },
+  { "necp",            { NULL }, 3262,  "tcp"  },
+  { "necp",            { NULL }, 3262,  "udp"  },
+  { "ecolor-imager",   { NULL }, 3263,  "tcp"  },
+  { "ecolor-imager",   { NULL }, 3263,  "udp"  },
+  { "ccmail",          { NULL }, 3264,  "tcp"  },
+  { "ccmail",          { NULL }, 3264,  "udp"  },
+  { "altav-tunnel",    { NULL }, 3265,  "tcp"  },
+  { "altav-tunnel",    { NULL }, 3265,  "udp"  },
+  { "ns-cfg-server",   { NULL }, 3266,  "tcp"  },
+  { "ns-cfg-server",   { NULL }, 3266,  "udp"  },
+  { "ibm-dial-out",    { NULL }, 3267,  "tcp"  },
+  { "ibm-dial-out",    { NULL }, 3267,  "udp"  },
+  { "msft-gc",         { NULL }, 3268,  "tcp"  },
+  { "msft-gc",         { NULL }, 3268,  "udp"  },
+  { "msft-gc-ssl",     { NULL }, 3269,  "tcp"  },
+  { "msft-gc-ssl",     { NULL }, 3269,  "udp"  },
+  { "verismart",       { NULL }, 3270,  "tcp"  },
+  { "verismart",       { NULL }, 3270,  "udp"  },
+  { "csoft-prev",      { NULL }, 3271,  "tcp"  },
+  { "csoft-prev",      { NULL }, 3271,  "udp"  },
+  { "user-manager",    { NULL }, 3272,  "tcp"  },
+  { "user-manager",    { NULL }, 3272,  "udp"  },
+  { "sxmp",            { NULL }, 3273,  "tcp"  },
+  { "sxmp",            { NULL }, 3273,  "udp"  },
+  { "ordinox-server",  { NULL }, 3274,  "tcp"  },
+  { "ordinox-server",  { NULL }, 3274,  "udp"  },
+  { "samd",            { NULL }, 3275,  "tcp"  },
+  { "samd",            { NULL }, 3275,  "udp"  },
+  { "maxim-asics",     { NULL }, 3276,  "tcp"  },
+  { "maxim-asics",     { NULL }, 3276,  "udp"  },
+  { "awg-proxy",       { NULL }, 3277,  "tcp"  },
+  { "awg-proxy",       { NULL }, 3277,  "udp"  },
+  { "lkcmserver",      { NULL }, 3278,  "tcp"  },
+  { "lkcmserver",      { NULL }, 3278,  "udp"  },
+  { "admind",          { NULL }, 3279,  "tcp"  },
+  { "admind",          { NULL }, 3279,  "udp"  },
+  { "vs-server",       { NULL }, 3280,  "tcp"  },
+  { "vs-server",       { NULL }, 3280,  "udp"  },
+  { "sysopt",          { NULL }, 3281,  "tcp"  },
+  { "sysopt",          { NULL }, 3281,  "udp"  },
+  { "datusorb",        { NULL }, 3282,  "tcp"  },
+  { "datusorb",        { NULL }, 3282,  "udp"  },
+  { "net-assistant",   { NULL }, 3283,  "tcp"  },
+  { "net-assistant",   { NULL }, 3283,  "udp"  },
+  { "4talk",           { NULL }, 3284,  "tcp"  },
+  { "4talk",           { NULL }, 3284,  "udp"  },
+  { "plato",           { NULL }, 3285,  "tcp"  },
+  { "plato",           { NULL }, 3285,  "udp"  },
+  { "e-net",           { NULL }, 3286,  "tcp"  },
+  { "e-net",           { NULL }, 3286,  "udp"  },
+  { "directvdata",     { NULL }, 3287,  "tcp"  },
+  { "directvdata",     { NULL }, 3287,  "udp"  },
+  { "cops",            { NULL }, 3288,  "tcp"  },
+  { "cops",            { NULL }, 3288,  "udp"  },
+  { "enpc",            { NULL }, 3289,  "tcp"  },
+  { "enpc",            { NULL }, 3289,  "udp"  },
+  { "caps-lm",         { NULL }, 3290,  "tcp"  },
+  { "caps-lm",         { NULL }, 3290,  "udp"  },
+  { "sah-lm",          { NULL }, 3291,  "tcp"  },
+  { "sah-lm",          { NULL }, 3291,  "udp"  },
+  { "cart-o-rama",     { NULL }, 3292,  "tcp"  },
+  { "cart-o-rama",     { NULL }, 3292,  "udp"  },
+  { "fg-fps",          { NULL }, 3293,  "tcp"  },
+  { "fg-fps",          { NULL }, 3293,  "udp"  },
+  { "fg-gip",          { NULL }, 3294,  "tcp"  },
+  { "fg-gip",          { NULL }, 3294,  "udp"  },
+  { "dyniplookup",     { NULL }, 3295,  "tcp"  },
+  { "dyniplookup",     { NULL }, 3295,  "udp"  },
+  { "rib-slm",         { NULL }, 3296,  "tcp"  },
+  { "rib-slm",         { NULL }, 3296,  "udp"  },
+  { "cytel-lm",        { NULL }, 3297,  "tcp"  },
+  { "cytel-lm",        { NULL }, 3297,  "udp"  },
+  { "deskview",        { NULL }, 3298,  "tcp"  },
+  { "deskview",        { NULL }, 3298,  "udp"  },
+  { "pdrncs",          { NULL }, 3299,  "tcp"  },
+  { "pdrncs",          { NULL }, 3299,  "udp"  },
+  { "mcs-fastmail",    { NULL }, 3302,  "tcp"  },
+  { "mcs-fastmail",    { NULL }, 3302,  "udp"  },
+  { "opsession-clnt",  { NULL }, 3303,  "tcp"  },
+  { "opsession-clnt",  { NULL }, 3303,  "udp"  },
+  { "opsession-srvr",  { NULL }, 3304,  "tcp"  },
+  { "opsession-srvr",  { NULL }, 3304,  "udp"  },
+  { "odette-ftp",      { NULL }, 3305,  "tcp"  },
+  { "odette-ftp",      { NULL }, 3305,  "udp"  },
+  { "mysql",           { NULL }, 3306,  "tcp"  },
+  { "mysql",           { NULL }, 3306,  "udp"  },
+  { "opsession-prxy",  { NULL }, 3307,  "tcp"  },
+  { "opsession-prxy",  { NULL }, 3307,  "udp"  },
+  { "tns-server",      { NULL }, 3308,  "tcp"  },
+  { "tns-server",      { NULL }, 3308,  "udp"  },
+  { "tns-adv",         { NULL }, 3309,  "tcp"  },
+  { "tns-adv",         { NULL }, 3309,  "udp"  },
+  { "dyna-access",     { NULL }, 3310,  "tcp"  },
+  { "dyna-access",     { NULL }, 3310,  "udp"  },
+  { "mcns-tel-ret",    { NULL }, 3311,  "tcp"  },
+  { "mcns-tel-ret",    { NULL }, 3311,  "udp"  },
+  { "appman-server",   { NULL }, 3312,  "tcp"  },
+  { "appman-server",   { NULL }, 3312,  "udp"  },
+  { "uorb",            { NULL }, 3313,  "tcp"  },
+  { "uorb",            { NULL }, 3313,  "udp"  },
+  { "uohost",          { NULL }, 3314,  "tcp"  },
+  { "uohost",          { NULL }, 3314,  "udp"  },
+  { "cdid",            { NULL }, 3315,  "tcp"  },
+  { "cdid",            { NULL }, 3315,  "udp"  },
+  { "aicc-cmi",        { NULL }, 3316,  "tcp"  },
+  { "aicc-cmi",        { NULL }, 3316,  "udp"  },
+  { "vsaiport",        { NULL }, 3317,  "tcp"  },
+  { "vsaiport",        { NULL }, 3317,  "udp"  },
+  { "ssrip",           { NULL }, 3318,  "tcp"  },
+  { "ssrip",           { NULL }, 3318,  "udp"  },
+  { "sdt-lmd",         { NULL }, 3319,  "tcp"  },
+  { "sdt-lmd",         { NULL }, 3319,  "udp"  },
+  { "officelink2000",  { NULL }, 3320,  "tcp"  },
+  { "officelink2000",  { NULL }, 3320,  "udp"  },
+  { "vnsstr",          { NULL }, 3321,  "tcp"  },
+  { "vnsstr",          { NULL }, 3321,  "udp"  },
+  { "sftu",            { NULL }, 3326,  "tcp"  },
+  { "sftu",            { NULL }, 3326,  "udp"  },
+  { "bbars",           { NULL }, 3327,  "tcp"  },
+  { "bbars",           { NULL }, 3327,  "udp"  },
+  { "egptlm",          { NULL }, 3328,  "tcp"  },
+  { "egptlm",          { NULL }, 3328,  "udp"  },
+  { "hp-device-disc",  { NULL }, 3329,  "tcp"  },
+  { "hp-device-disc",  { NULL }, 3329,  "udp"  },
+  { "mcs-calypsoicf",  { NULL }, 3330,  "tcp"  },
+  { "mcs-calypsoicf",  { NULL }, 3330,  "udp"  },
+  { "mcs-messaging",   { NULL }, 3331,  "tcp"  },
+  { "mcs-messaging",   { NULL }, 3331,  "udp"  },
+  { "mcs-mailsvr",     { NULL }, 3332,  "tcp"  },
+  { "mcs-mailsvr",     { NULL }, 3332,  "udp"  },
+  { "dec-notes",       { NULL }, 3333,  "tcp"  },
+  { "dec-notes",       { NULL }, 3333,  "udp"  },
+  { "directv-web",     { NULL }, 3334,  "tcp"  },
+  { "directv-web",     { NULL }, 3334,  "udp"  },
+  { "directv-soft",    { NULL }, 3335,  "tcp"  },
+  { "directv-soft",    { NULL }, 3335,  "udp"  },
+  { "directv-tick",    { NULL }, 3336,  "tcp"  },
+  { "directv-tick",    { NULL }, 3336,  "udp"  },
+  { "directv-catlg",   { NULL }, 3337,  "tcp"  },
+  { "directv-catlg",   { NULL }, 3337,  "udp"  },
+  { "anet-b",          { NULL }, 3338,  "tcp"  },
+  { "anet-b",          { NULL }, 3338,  "udp"  },
+  { "anet-l",          { NULL }, 3339,  "tcp"  },
+  { "anet-l",          { NULL }, 3339,  "udp"  },
+  { "anet-m",          { NULL }, 3340,  "tcp"  },
+  { "anet-m",          { NULL }, 3340,  "udp"  },
+  { "anet-h",          { NULL }, 3341,  "tcp"  },
+  { "anet-h",          { NULL }, 3341,  "udp"  },
+  { "webtie",          { NULL }, 3342,  "tcp"  },
+  { "webtie",          { NULL }, 3342,  "udp"  },
+  { "ms-cluster-net",  { NULL }, 3343,  "tcp"  },
+  { "ms-cluster-net",  { NULL }, 3343,  "udp"  },
+  { "bnt-manager",     { NULL }, 3344,  "tcp"  },
+  { "bnt-manager",     { NULL }, 3344,  "udp"  },
+  { "influence",       { NULL }, 3345,  "tcp"  },
+  { "influence",       { NULL }, 3345,  "udp"  },
+  { "trnsprntproxy",   { NULL }, 3346,  "tcp"  },
+  { "trnsprntproxy",   { NULL }, 3346,  "udp"  },
+  { "phoenix-rpc",     { NULL }, 3347,  "tcp"  },
+  { "phoenix-rpc",     { NULL }, 3347,  "udp"  },
+  { "pangolin-laser",  { NULL }, 3348,  "tcp"  },
+  { "pangolin-laser",  { NULL }, 3348,  "udp"  },
+  { "chevinservices",  { NULL }, 3349,  "tcp"  },
+  { "chevinservices",  { NULL }, 3349,  "udp"  },
+  { "findviatv",       { NULL }, 3350,  "tcp"  },
+  { "findviatv",       { NULL }, 3350,  "udp"  },
+  { "btrieve",         { NULL }, 3351,  "tcp"  },
+  { "btrieve",         { NULL }, 3351,  "udp"  },
+  { "ssql",            { NULL }, 3352,  "tcp"  },
+  { "ssql",            { NULL }, 3352,  "udp"  },
+  { "fatpipe",         { NULL }, 3353,  "tcp"  },
+  { "fatpipe",         { NULL }, 3353,  "udp"  },
+  { "suitjd",          { NULL }, 3354,  "tcp"  },
+  { "suitjd",          { NULL }, 3354,  "udp"  },
+  { "ordinox-dbase",   { NULL }, 3355,  "tcp"  },
+  { "ordinox-dbase",   { NULL }, 3355,  "udp"  },
+  { "upnotifyps",      { NULL }, 3356,  "tcp"  },
+  { "upnotifyps",      { NULL }, 3356,  "udp"  },
+  { "adtech-test",     { NULL }, 3357,  "tcp"  },
+  { "adtech-test",     { NULL }, 3357,  "udp"  },
+  { "mpsysrmsvr",      { NULL }, 3358,  "tcp"  },
+  { "mpsysrmsvr",      { NULL }, 3358,  "udp"  },
+  { "wg-netforce",     { NULL }, 3359,  "tcp"  },
+  { "wg-netforce",     { NULL }, 3359,  "udp"  },
+  { "kv-server",       { NULL }, 3360,  "tcp"  },
+  { "kv-server",       { NULL }, 3360,  "udp"  },
+  { "kv-agent",        { NULL }, 3361,  "tcp"  },
+  { "kv-agent",        { NULL }, 3361,  "udp"  },
+  { "dj-ilm",          { NULL }, 3362,  "tcp"  },
+  { "dj-ilm",          { NULL }, 3362,  "udp"  },
+  { "nati-vi-server",  { NULL }, 3363,  "tcp"  },
+  { "nati-vi-server",  { NULL }, 3363,  "udp"  },
+  { "creativeserver",  { NULL }, 3364,  "tcp"  },
+  { "creativeserver",  { NULL }, 3364,  "udp"  },
+  { "contentserver",   { NULL }, 3365,  "tcp"  },
+  { "contentserver",   { NULL }, 3365,  "udp"  },
+  { "creativepartnr",  { NULL }, 3366,  "tcp"  },
+  { "creativepartnr",  { NULL }, 3366,  "udp"  },
+  { "tip2",            { NULL }, 3372,  "tcp"  },
+  { "tip2",            { NULL }, 3372,  "udp"  },
+  { "lavenir-lm",      { NULL }, 3373,  "tcp"  },
+  { "lavenir-lm",      { NULL }, 3373,  "udp"  },
+  { "cluster-disc",    { NULL }, 3374,  "tcp"  },
+  { "cluster-disc",    { NULL }, 3374,  "udp"  },
+  { "vsnm-agent",      { NULL }, 3375,  "tcp"  },
+  { "vsnm-agent",      { NULL }, 3375,  "udp"  },
+  { "cdbroker",        { NULL }, 3376,  "tcp"  },
+  { "cdbroker",        { NULL }, 3376,  "udp"  },
+  { "cogsys-lm",       { NULL }, 3377,  "tcp"  },
+  { "cogsys-lm",       { NULL }, 3377,  "udp"  },
+  { "wsicopy",         { NULL }, 3378,  "tcp"  },
+  { "wsicopy",         { NULL }, 3378,  "udp"  },
+  { "socorfs",         { NULL }, 3379,  "tcp"  },
+  { "socorfs",         { NULL }, 3379,  "udp"  },
+  { "sns-channels",    { NULL }, 3380,  "tcp"  },
+  { "sns-channels",    { NULL }, 3380,  "udp"  },
+  { "geneous",         { NULL }, 3381,  "tcp"  },
+  { "geneous",         { NULL }, 3381,  "udp"  },
+  { "fujitsu-neat",    { NULL }, 3382,  "tcp"  },
+  { "fujitsu-neat",    { NULL }, 3382,  "udp"  },
+  { "esp-lm",          { NULL }, 3383,  "tcp"  },
+  { "esp-lm",          { NULL }, 3383,  "udp"  },
+  { "hp-clic",         { NULL }, 3384,  "tcp"  },
+  { "hp-clic",         { NULL }, 3384,  "udp"  },
+  { "qnxnetman",       { NULL }, 3385,  "tcp"  },
+  { "qnxnetman",       { NULL }, 3385,  "udp"  },
+  { "gprs-data",       { NULL }, 3386,  "tcp"  },
+  { "gprs-sig",        { NULL }, 3386,  "udp"  },
+  { "backroomnet",     { NULL }, 3387,  "tcp"  },
+  { "backroomnet",     { NULL }, 3387,  "udp"  },
+  { "cbserver",        { NULL }, 3388,  "tcp"  },
+  { "cbserver",        { NULL }, 3388,  "udp"  },
+  { "ms-wbt-server",   { NULL }, 3389,  "tcp"  },
+  { "ms-wbt-server",   { NULL }, 3389,  "udp"  },
+  { "dsc",             { NULL }, 3390,  "tcp"  },
+  { "dsc",             { NULL }, 3390,  "udp"  },
+  { "savant",          { NULL }, 3391,  "tcp"  },
+  { "savant",          { NULL }, 3391,  "udp"  },
+  { "efi-lm",          { NULL }, 3392,  "tcp"  },
+  { "efi-lm",          { NULL }, 3392,  "udp"  },
+  { "d2k-tapestry1",   { NULL }, 3393,  "tcp"  },
+  { "d2k-tapestry1",   { NULL }, 3393,  "udp"  },
+  { "d2k-tapestry2",   { NULL }, 3394,  "tcp"  },
+  { "d2k-tapestry2",   { NULL }, 3394,  "udp"  },
+  { "dyna-lm",         { NULL }, 3395,  "tcp"  },
+  { "dyna-lm",         { NULL }, 3395,  "udp"  },
+  { "printer_agent",   { NULL }, 3396,  "tcp"  },
+  { "printer_agent",   { NULL }, 3396,  "udp"  },
+  { "cloanto-lm",      { NULL }, 3397,  "tcp"  },
+  { "cloanto-lm",      { NULL }, 3397,  "udp"  },
+  { "mercantile",      { NULL }, 3398,  "tcp"  },
+  { "mercantile",      { NULL }, 3398,  "udp"  },
+  { "csms",            { NULL }, 3399,  "tcp"  },
+  { "csms",            { NULL }, 3399,  "udp"  },
+  { "csms2",           { NULL }, 3400,  "tcp"  },
+  { "csms2",           { NULL }, 3400,  "udp"  },
+  { "filecast",        { NULL }, 3401,  "tcp"  },
+  { "filecast",        { NULL }, 3401,  "udp"  },
+  { "fxaengine-net",   { NULL }, 3402,  "tcp"  },
+  { "fxaengine-net",   { NULL }, 3402,  "udp"  },
+  { "nokia-ann-ch1",   { NULL }, 3405,  "tcp"  },
+  { "nokia-ann-ch1",   { NULL }, 3405,  "udp"  },
+  { "nokia-ann-ch2",   { NULL }, 3406,  "tcp"  },
+  { "nokia-ann-ch2",   { NULL }, 3406,  "udp"  },
+  { "ldap-admin",      { NULL }, 3407,  "tcp"  },
+  { "ldap-admin",      { NULL }, 3407,  "udp"  },
+  { "BESApi",          { NULL }, 3408,  "tcp"  },
+  { "BESApi",          { NULL }, 3408,  "udp"  },
+  { "networklens",     { NULL }, 3409,  "tcp"  },
+  { "networklens",     { NULL }, 3409,  "udp"  },
+  { "networklenss",    { NULL }, 3410,  "tcp"  },
+  { "networklenss",    { NULL }, 3410,  "udp"  },
+  { "biolink-auth",    { NULL }, 3411,  "tcp"  },
+  { "biolink-auth",    { NULL }, 3411,  "udp"  },
+  { "xmlblaster",      { NULL }, 3412,  "tcp"  },
+  { "xmlblaster",      { NULL }, 3412,  "udp"  },
+  { "svnet",           { NULL }, 3413,  "tcp"  },
+  { "svnet",           { NULL }, 3413,  "udp"  },
+  { "wip-port",        { NULL }, 3414,  "tcp"  },
+  { "wip-port",        { NULL }, 3414,  "udp"  },
+  { "bcinameservice",  { NULL }, 3415,  "tcp"  },
+  { "bcinameservice",  { NULL }, 3415,  "udp"  },
+  { "commandport",     { NULL }, 3416,  "tcp"  },
+  { "commandport",     { NULL }, 3416,  "udp"  },
+  { "csvr",            { NULL }, 3417,  "tcp"  },
+  { "csvr",            { NULL }, 3417,  "udp"  },
+  { "rnmap",           { NULL }, 3418,  "tcp"  },
+  { "rnmap",           { NULL }, 3418,  "udp"  },
+  { "softaudit",       { NULL }, 3419,  "tcp"  },
+  { "softaudit",       { NULL }, 3419,  "udp"  },
+  { "ifcp-port",       { NULL }, 3420,  "tcp"  },
+  { "ifcp-port",       { NULL }, 3420,  "udp"  },
+  { "bmap",            { NULL }, 3421,  "tcp"  },
+  { "bmap",            { NULL }, 3421,  "udp"  },
+  { "rusb-sys-port",   { NULL }, 3422,  "tcp"  },
+  { "rusb-sys-port",   { NULL }, 3422,  "udp"  },
+  { "xtrm",            { NULL }, 3423,  "tcp"  },
+  { "xtrm",            { NULL }, 3423,  "udp"  },
+  { "xtrms",           { NULL }, 3424,  "tcp"  },
+  { "xtrms",           { NULL }, 3424,  "udp"  },
+  { "agps-port",       { NULL }, 3425,  "tcp"  },
+  { "agps-port",       { NULL }, 3425,  "udp"  },
+  { "arkivio",         { NULL }, 3426,  "tcp"  },
+  { "arkivio",         { NULL }, 3426,  "udp"  },
+  { "websphere-snmp",  { NULL }, 3427,  "tcp"  },
+  { "websphere-snmp",  { NULL }, 3427,  "udp"  },
+  { "twcss",           { NULL }, 3428,  "tcp"  },
+  { "twcss",           { NULL }, 3428,  "udp"  },
+  { "gcsp",            { NULL }, 3429,  "tcp"  },
+  { "gcsp",            { NULL }, 3429,  "udp"  },
+  { "ssdispatch",      { NULL }, 3430,  "tcp"  },
+  { "ssdispatch",      { NULL }, 3430,  "udp"  },
+  { "ndl-als",         { NULL }, 3431,  "tcp"  },
+  { "ndl-als",         { NULL }, 3431,  "udp"  },
+  { "osdcp",           { NULL }, 3432,  "tcp"  },
+  { "osdcp",           { NULL }, 3432,  "udp"  },
+  { "alta-smp",        { NULL }, 3433,  "tcp"  },
+  { "alta-smp",        { NULL }, 3433,  "udp"  },
+  { "opencm",          { NULL }, 3434,  "tcp"  },
+  { "opencm",          { NULL }, 3434,  "udp"  },
+  { "pacom",           { NULL }, 3435,  "tcp"  },
+  { "pacom",           { NULL }, 3435,  "udp"  },
+  { "gc-config",       { NULL }, 3436,  "tcp"  },
+  { "gc-config",       { NULL }, 3436,  "udp"  },
+  { "autocueds",       { NULL }, 3437,  "tcp"  },
+  { "autocueds",       { NULL }, 3437,  "udp"  },
+  { "spiral-admin",    { NULL }, 3438,  "tcp"  },
+  { "spiral-admin",    { NULL }, 3438,  "udp"  },
+  { "hri-port",        { NULL }, 3439,  "tcp"  },
+  { "hri-port",        { NULL }, 3439,  "udp"  },
+  { "ans-console",     { NULL }, 3440,  "tcp"  },
+  { "ans-console",     { NULL }, 3440,  "udp"  },
+  { "connect-client",  { NULL }, 3441,  "tcp"  },
+  { "connect-client",  { NULL }, 3441,  "udp"  },
+  { "connect-server",  { NULL }, 3442,  "tcp"  },
+  { "connect-server",  { NULL }, 3442,  "udp"  },
+  { "ov-nnm-websrv",   { NULL }, 3443,  "tcp"  },
+  { "ov-nnm-websrv",   { NULL }, 3443,  "udp"  },
+  { "denali-server",   { NULL }, 3444,  "tcp"  },
+  { "denali-server",   { NULL }, 3444,  "udp"  },
+  { "monp",            { NULL }, 3445,  "tcp"  },
+  { "monp",            { NULL }, 3445,  "udp"  },
+  { "3comfaxrpc",      { NULL }, 3446,  "tcp"  },
+  { "3comfaxrpc",      { NULL }, 3446,  "udp"  },
+  { "directnet",       { NULL }, 3447,  "tcp"  },
+  { "directnet",       { NULL }, 3447,  "udp"  },
+  { "dnc-port",        { NULL }, 3448,  "tcp"  },
+  { "dnc-port",        { NULL }, 3448,  "udp"  },
+  { "hotu-chat",       { NULL }, 3449,  "tcp"  },
+  { "hotu-chat",       { NULL }, 3449,  "udp"  },
+  { "castorproxy",     { NULL }, 3450,  "tcp"  },
+  { "castorproxy",     { NULL }, 3450,  "udp"  },
+  { "asam",            { NULL }, 3451,  "tcp"  },
+  { "asam",            { NULL }, 3451,  "udp"  },
+  { "sabp-signal",     { NULL }, 3452,  "tcp"  },
+  { "sabp-signal",     { NULL }, 3452,  "udp"  },
+  { "pscupd",          { NULL }, 3453,  "tcp"  },
+  { "pscupd",          { NULL }, 3453,  "udp"  },
+  { "mira",            { NULL }, 3454,  "tcp"  },
+  { "prsvp",           { NULL }, 3455,  "tcp"  },
+  { "prsvp",           { NULL }, 3455,  "udp"  },
+  { "vat",             { NULL }, 3456,  "tcp"  },
+  { "vat",             { NULL }, 3456,  "udp"  },
+  { "vat-control",     { NULL }, 3457,  "tcp"  },
+  { "vat-control",     { NULL }, 3457,  "udp"  },
+  { "d3winosfi",       { NULL }, 3458,  "tcp"  },
+  { "d3winosfi",       { NULL }, 3458,  "udp"  },
+  { "integral",        { NULL }, 3459,  "tcp"  },
+  { "integral",        { NULL }, 3459,  "udp"  },
+  { "edm-manager",     { NULL }, 3460,  "tcp"  },
+  { "edm-manager",     { NULL }, 3460,  "udp"  },
+  { "edm-stager",      { NULL }, 3461,  "tcp"  },
+  { "edm-stager",      { NULL }, 3461,  "udp"  },
+  { "edm-std-notify",  { NULL }, 3462,  "tcp"  },
+  { "edm-std-notify",  { NULL }, 3462,  "udp"  },
+  { "edm-adm-notify",  { NULL }, 3463,  "tcp"  },
+  { "edm-adm-notify",  { NULL }, 3463,  "udp"  },
+  { "edm-mgr-sync",    { NULL }, 3464,  "tcp"  },
+  { "edm-mgr-sync",    { NULL }, 3464,  "udp"  },
+  { "edm-mgr-cntrl",   { NULL }, 3465,  "tcp"  },
+  { "edm-mgr-cntrl",   { NULL }, 3465,  "udp"  },
+  { "workflow",        { NULL }, 3466,  "tcp"  },
+  { "workflow",        { NULL }, 3466,  "udp"  },
+  { "rcst",            { NULL }, 3467,  "tcp"  },
+  { "rcst",            { NULL }, 3467,  "udp"  },
+  { "ttcmremotectrl",  { NULL }, 3468,  "tcp"  },
+  { "ttcmremotectrl",  { NULL }, 3468,  "udp"  },
+  { "pluribus",        { NULL }, 3469,  "tcp"  },
+  { "pluribus",        { NULL }, 3469,  "udp"  },
+  { "jt400",           { NULL }, 3470,  "tcp"  },
+  { "jt400",           { NULL }, 3470,  "udp"  },
+  { "jt400-ssl",       { NULL }, 3471,  "tcp"  },
+  { "jt400-ssl",       { NULL }, 3471,  "udp"  },
+  { "jaugsremotec-1",  { NULL }, 3472,  "tcp"  },
+  { "jaugsremotec-1",  { NULL }, 3472,  "udp"  },
+  { "jaugsremotec-2",  { NULL }, 3473,  "tcp"  },
+  { "jaugsremotec-2",  { NULL }, 3473,  "udp"  },
+  { "ttntspauto",      { NULL }, 3474,  "tcp"  },
+  { "ttntspauto",      { NULL }, 3474,  "udp"  },
+  { "genisar-port",    { NULL }, 3475,  "tcp"  },
+  { "genisar-port",    { NULL }, 3475,  "udp"  },
+  { "nppmp",           { NULL }, 3476,  "tcp"  },
+  { "nppmp",           { NULL }, 3476,  "udp"  },
+  { "ecomm",           { NULL }, 3477,  "tcp"  },
+  { "ecomm",           { NULL }, 3477,  "udp"  },
+  { "stun",            { NULL }, 3478,  "tcp"  },
+  { "stun",            { NULL }, 3478,  "udp"  },
+  { "turn",            { NULL }, 3478,  "tcp"  },
+  { "turn",            { NULL }, 3478,  "udp"  },
+  { "stun-behavior",   { NULL }, 3478,  "tcp"  },
+  { "stun-behavior",   { NULL }, 3478,  "udp"  },
+  { "twrpc",           { NULL }, 3479,  "tcp"  },
+  { "twrpc",           { NULL }, 3479,  "udp"  },
+  { "plethora",        { NULL }, 3480,  "tcp"  },
+  { "plethora",        { NULL }, 3480,  "udp"  },
+  { "cleanerliverc",   { NULL }, 3481,  "tcp"  },
+  { "cleanerliverc",   { NULL }, 3481,  "udp"  },
+  { "vulture",         { NULL }, 3482,  "tcp"  },
+  { "vulture",         { NULL }, 3482,  "udp"  },
+  { "slim-devices",    { NULL }, 3483,  "tcp"  },
+  { "slim-devices",    { NULL }, 3483,  "udp"  },
+  { "gbs-stp",         { NULL }, 3484,  "tcp"  },
+  { "gbs-stp",         { NULL }, 3484,  "udp"  },
+  { "celatalk",        { NULL }, 3485,  "tcp"  },
+  { "celatalk",        { NULL }, 3485,  "udp"  },
+  { "ifsf-hb-port",    { NULL }, 3486,  "tcp"  },
+  { "ifsf-hb-port",    { NULL }, 3486,  "udp"  },
+  { "ltctcp",          { NULL }, 3487,  "tcp"  },
+  { "ltcudp",          { NULL }, 3487,  "udp"  },
+  { "fs-rh-srv",       { NULL }, 3488,  "tcp"  },
+  { "fs-rh-srv",       { NULL }, 3488,  "udp"  },
+  { "dtp-dia",         { NULL }, 3489,  "tcp"  },
+  { "dtp-dia",         { NULL }, 3489,  "udp"  },
+  { "colubris",        { NULL }, 3490,  "tcp"  },
+  { "colubris",        { NULL }, 3490,  "udp"  },
+  { "swr-port",        { NULL }, 3491,  "tcp"  },
+  { "swr-port",        { NULL }, 3491,  "udp"  },
+  { "tvdumtray-port",  { NULL }, 3492,  "tcp"  },
+  { "tvdumtray-port",  { NULL }, 3492,  "udp"  },
+  { "nut",             { NULL }, 3493,  "tcp"  },
+  { "nut",             { NULL }, 3493,  "udp"  },
+  { "ibm3494",         { NULL }, 3494,  "tcp"  },
+  { "ibm3494",         { NULL }, 3494,  "udp"  },
+  { "seclayer-tcp",    { NULL }, 3495,  "tcp"  },
+  { "seclayer-tcp",    { NULL }, 3495,  "udp"  },
+  { "seclayer-tls",    { NULL }, 3496,  "tcp"  },
+  { "seclayer-tls",    { NULL }, 3496,  "udp"  },
+  { "ipether232port",  { NULL }, 3497,  "tcp"  },
+  { "ipether232port",  { NULL }, 3497,  "udp"  },
+  { "dashpas-port",    { NULL }, 3498,  "tcp"  },
+  { "dashpas-port",    { NULL }, 3498,  "udp"  },
+  { "sccip-media",     { NULL }, 3499,  "tcp"  },
+  { "sccip-media",     { NULL }, 3499,  "udp"  },
+  { "rtmp-port",       { NULL }, 3500,  "tcp"  },
+  { "rtmp-port",       { NULL }, 3500,  "udp"  },
+  { "isoft-p2p",       { NULL }, 3501,  "tcp"  },
+  { "isoft-p2p",       { NULL }, 3501,  "udp"  },
+  { "avinstalldisc",   { NULL }, 3502,  "tcp"  },
+  { "avinstalldisc",   { NULL }, 3502,  "udp"  },
+  { "lsp-ping",        { NULL }, 3503,  "tcp"  },
+  { "lsp-ping",        { NULL }, 3503,  "udp"  },
+  { "ironstorm",       { NULL }, 3504,  "tcp"  },
+  { "ironstorm",       { NULL }, 3504,  "udp"  },
+  { "ccmcomm",         { NULL }, 3505,  "tcp"  },
+  { "ccmcomm",         { NULL }, 3505,  "udp"  },
+  { "apc-3506",        { NULL }, 3506,  "tcp"  },
+  { "apc-3506",        { NULL }, 3506,  "udp"  },
+  { "nesh-broker",     { NULL }, 3507,  "tcp"  },
+  { "nesh-broker",     { NULL }, 3507,  "udp"  },
+  { "interactionweb",  { NULL }, 3508,  "tcp"  },
+  { "interactionweb",  { NULL }, 3508,  "udp"  },
+  { "vt-ssl",          { NULL }, 3509,  "tcp"  },
+  { "vt-ssl",          { NULL }, 3509,  "udp"  },
+  { "xss-port",        { NULL }, 3510,  "tcp"  },
+  { "xss-port",        { NULL }, 3510,  "udp"  },
+  { "webmail-2",       { NULL }, 3511,  "tcp"  },
+  { "webmail-2",       { NULL }, 3511,  "udp"  },
+  { "aztec",           { NULL }, 3512,  "tcp"  },
+  { "aztec",           { NULL }, 3512,  "udp"  },
+  { "arcpd",           { NULL }, 3513,  "tcp"  },
+  { "arcpd",           { NULL }, 3513,  "udp"  },
+  { "must-p2p",        { NULL }, 3514,  "tcp"  },
+  { "must-p2p",        { NULL }, 3514,  "udp"  },
+  { "must-backplane",  { NULL }, 3515,  "tcp"  },
+  { "must-backplane",  { NULL }, 3515,  "udp"  },
+  { "smartcard-port",  { NULL }, 3516,  "tcp"  },
+  { "smartcard-port",  { NULL }, 3516,  "udp"  },
+  { "802-11-iapp",     { NULL }, 3517,  "tcp"  },
+  { "802-11-iapp",     { NULL }, 3517,  "udp"  },
+  { "artifact-msg",    { NULL }, 3518,  "tcp"  },
+  { "artifact-msg",    { NULL }, 3518,  "udp"  },
+  { "nvmsgd",          { NULL }, 3519,  "tcp"  },
+  { "galileo",         { NULL }, 3519,  "udp"  },
+  { "galileolog",      { NULL }, 3520,  "tcp"  },
+  { "galileolog",      { NULL }, 3520,  "udp"  },
+  { "mc3ss",           { NULL }, 3521,  "tcp"  },
+  { "mc3ss",           { NULL }, 3521,  "udp"  },
+  { "nssocketport",    { NULL }, 3522,  "tcp"  },
+  { "nssocketport",    { NULL }, 3522,  "udp"  },
+  { "odeumservlink",   { NULL }, 3523,  "tcp"  },
+  { "odeumservlink",   { NULL }, 3523,  "udp"  },
+  { "ecmport",         { NULL }, 3524,  "tcp"  },
+  { "ecmport",         { NULL }, 3524,  "udp"  },
+  { "eisport",         { NULL }, 3525,  "tcp"  },
+  { "eisport",         { NULL }, 3525,  "udp"  },
+  { "starquiz-port",   { NULL }, 3526,  "tcp"  },
+  { "starquiz-port",   { NULL }, 3526,  "udp"  },
+  { "beserver-msg-q",  { NULL }, 3527,  "tcp"  },
+  { "beserver-msg-q",  { NULL }, 3527,  "udp"  },
+  { "jboss-iiop",      { NULL }, 3528,  "tcp"  },
+  { "jboss-iiop",      { NULL }, 3528,  "udp"  },
+  { "jboss-iiop-ssl",  { NULL }, 3529,  "tcp"  },
+  { "jboss-iiop-ssl",  { NULL }, 3529,  "udp"  },
+  { "gf",              { NULL }, 3530,  "tcp"  },
+  { "gf",              { NULL }, 3530,  "udp"  },
+  { "joltid",          { NULL }, 3531,  "tcp"  },
+  { "joltid",          { NULL }, 3531,  "udp"  },
+  { "raven-rmp",       { NULL }, 3532,  "tcp"  },
+  { "raven-rmp",       { NULL }, 3532,  "udp"  },
+  { "raven-rdp",       { NULL }, 3533,  "tcp"  },
+  { "raven-rdp",       { NULL }, 3533,  "udp"  },
+  { "urld-port",       { NULL }, 3534,  "tcp"  },
+  { "urld-port",       { NULL }, 3534,  "udp"  },
+  { "ms-la",           { NULL }, 3535,  "tcp"  },
+  { "ms-la",           { NULL }, 3535,  "udp"  },
+  { "snac",            { NULL }, 3536,  "tcp"  },
+  { "snac",            { NULL }, 3536,  "udp"  },
+  { "ni-visa-remote",  { NULL }, 3537,  "tcp"  },
+  { "ni-visa-remote",  { NULL }, 3537,  "udp"  },
+  { "ibm-diradm",      { NULL }, 3538,  "tcp"  },
+  { "ibm-diradm",      { NULL }, 3538,  "udp"  },
+  { "ibm-diradm-ssl",  { NULL }, 3539,  "tcp"  },
+  { "ibm-diradm-ssl",  { NULL }, 3539,  "udp"  },
+  { "pnrp-port",       { NULL }, 3540,  "tcp"  },
+  { "pnrp-port",       { NULL }, 3540,  "udp"  },
+  { "voispeed-port",   { NULL }, 3541,  "tcp"  },
+  { "voispeed-port",   { NULL }, 3541,  "udp"  },
+  { "hacl-monitor",    { NULL }, 3542,  "tcp"  },
+  { "hacl-monitor",    { NULL }, 3542,  "udp"  },
+  { "qftest-lookup",   { NULL }, 3543,  "tcp"  },
+  { "qftest-lookup",   { NULL }, 3543,  "udp"  },
+  { "teredo",          { NULL }, 3544,  "tcp"  },
+  { "teredo",          { NULL }, 3544,  "udp"  },
+  { "camac",           { NULL }, 3545,  "tcp"  },
+  { "camac",           { NULL }, 3545,  "udp"  },
+  { "symantec-sim",    { NULL }, 3547,  "tcp"  },
+  { "symantec-sim",    { NULL }, 3547,  "udp"  },
+  { "interworld",      { NULL }, 3548,  "tcp"  },
+  { "interworld",      { NULL }, 3548,  "udp"  },
+  { "tellumat-nms",    { NULL }, 3549,  "tcp"  },
+  { "tellumat-nms",    { NULL }, 3549,  "udp"  },
+  { "ssmpp",           { NULL }, 3550,  "tcp"  },
+  { "ssmpp",           { NULL }, 3550,  "udp"  },
+  { "apcupsd",         { NULL }, 3551,  "tcp"  },
+  { "apcupsd",         { NULL }, 3551,  "udp"  },
+  { "taserver",        { NULL }, 3552,  "tcp"  },
+  { "taserver",        { NULL }, 3552,  "udp"  },
+  { "rbr-discovery",   { NULL }, 3553,  "tcp"  },
+  { "rbr-discovery",   { NULL }, 3553,  "udp"  },
+  { "questnotify",     { NULL }, 3554,  "tcp"  },
+  { "questnotify",     { NULL }, 3554,  "udp"  },
+  { "razor",           { NULL }, 3555,  "tcp"  },
+  { "razor",           { NULL }, 3555,  "udp"  },
+  { "sky-transport",   { NULL }, 3556,  "tcp"  },
+  { "sky-transport",   { NULL }, 3556,  "udp"  },
+  { "personalos-001",  { NULL }, 3557,  "tcp"  },
+  { "personalos-001",  { NULL }, 3557,  "udp"  },
+  { "mcp-port",        { NULL }, 3558,  "tcp"  },
+  { "mcp-port",        { NULL }, 3558,  "udp"  },
+  { "cctv-port",       { NULL }, 3559,  "tcp"  },
+  { "cctv-port",       { NULL }, 3559,  "udp"  },
+  { "iniserve-port",   { NULL }, 3560,  "tcp"  },
+  { "iniserve-port",   { NULL }, 3560,  "udp"  },
+  { "bmc-onekey",      { NULL }, 3561,  "tcp"  },
+  { "bmc-onekey",      { NULL }, 3561,  "udp"  },
+  { "sdbproxy",        { NULL }, 3562,  "tcp"  },
+  { "sdbproxy",        { NULL }, 3562,  "udp"  },
+  { "watcomdebug",     { NULL }, 3563,  "tcp"  },
+  { "watcomdebug",     { NULL }, 3563,  "udp"  },
+  { "esimport",        { NULL }, 3564,  "tcp"  },
+  { "esimport",        { NULL }, 3564,  "udp"  },
+  { "m2pa",            { NULL }, 3565,  "tcp"  },
+  { "m2pa",            { NULL }, 3565,  "sctp" },
+  { "quest-data-hub",  { NULL }, 3566,  "tcp"  },
+  { "oap",             { NULL }, 3567,  "tcp"  },
+  { "oap",             { NULL }, 3567,  "udp"  },
+  { "oap-s",           { NULL }, 3568,  "tcp"  },
+  { "oap-s",           { NULL }, 3568,  "udp"  },
+  { "mbg-ctrl",        { NULL }, 3569,  "tcp"  },
+  { "mbg-ctrl",        { NULL }, 3569,  "udp"  },
+  { "mccwebsvr-port",  { NULL }, 3570,  "tcp"  },
+  { "mccwebsvr-port",  { NULL }, 3570,  "udp"  },
+  { "megardsvr-port",  { NULL }, 3571,  "tcp"  },
+  { "megardsvr-port",  { NULL }, 3571,  "udp"  },
+  { "megaregsvrport",  { NULL }, 3572,  "tcp"  },
+  { "megaregsvrport",  { NULL }, 3572,  "udp"  },
+  { "tag-ups-1",       { NULL }, 3573,  "tcp"  },
+  { "tag-ups-1",       { NULL }, 3573,  "udp"  },
+  { "dmaf-server",     { NULL }, 3574,  "tcp"  },
+  { "dmaf-caster",     { NULL }, 3574,  "udp"  },
+  { "ccm-port",        { NULL }, 3575,  "tcp"  },
+  { "ccm-port",        { NULL }, 3575,  "udp"  },
+  { "cmc-port",        { NULL }, 3576,  "tcp"  },
+  { "cmc-port",        { NULL }, 3576,  "udp"  },
+  { "config-port",     { NULL }, 3577,  "tcp"  },
+  { "config-port",     { NULL }, 3577,  "udp"  },
+  { "data-port",       { NULL }, 3578,  "tcp"  },
+  { "data-port",       { NULL }, 3578,  "udp"  },
+  { "ttat3lb",         { NULL }, 3579,  "tcp"  },
+  { "ttat3lb",         { NULL }, 3579,  "udp"  },
+  { "nati-svrloc",     { NULL }, 3580,  "tcp"  },
+  { "nati-svrloc",     { NULL }, 3580,  "udp"  },
+  { "kfxaclicensing",  { NULL }, 3581,  "tcp"  },
+  { "kfxaclicensing",  { NULL }, 3581,  "udp"  },
+  { "press",           { NULL }, 3582,  "tcp"  },
+  { "press",           { NULL }, 3582,  "udp"  },
+  { "canex-watch",     { NULL }, 3583,  "tcp"  },
+  { "canex-watch",     { NULL }, 3583,  "udp"  },
+  { "u-dbap",          { NULL }, 3584,  "tcp"  },
+  { "u-dbap",          { NULL }, 3584,  "udp"  },
+  { "emprise-lls",     { NULL }, 3585,  "tcp"  },
+  { "emprise-lls",     { NULL }, 3585,  "udp"  },
+  { "emprise-lsc",     { NULL }, 3586,  "tcp"  },
+  { "emprise-lsc",     { NULL }, 3586,  "udp"  },
+  { "p2pgroup",        { NULL }, 3587,  "tcp"  },
+  { "p2pgroup",        { NULL }, 3587,  "udp"  },
+  { "sentinel",        { NULL }, 3588,  "tcp"  },
+  { "sentinel",        { NULL }, 3588,  "udp"  },
+  { "isomair",         { NULL }, 3589,  "tcp"  },
+  { "isomair",         { NULL }, 3589,  "udp"  },
+  { "wv-csp-sms",      { NULL }, 3590,  "tcp"  },
+  { "wv-csp-sms",      { NULL }, 3590,  "udp"  },
+  { "gtrack-server",   { NULL }, 3591,  "tcp"  },
+  { "gtrack-server",   { NULL }, 3591,  "udp"  },
+  { "gtrack-ne",       { NULL }, 3592,  "tcp"  },
+  { "gtrack-ne",       { NULL }, 3592,  "udp"  },
+  { "bpmd",            { NULL }, 3593,  "tcp"  },
+  { "bpmd",            { NULL }, 3593,  "udp"  },
+  { "mediaspace",      { NULL }, 3594,  "tcp"  },
+  { "mediaspace",      { NULL }, 3594,  "udp"  },
+  { "shareapp",        { NULL }, 3595,  "tcp"  },
+  { "shareapp",        { NULL }, 3595,  "udp"  },
+  { "iw-mmogame",      { NULL }, 3596,  "tcp"  },
+  { "iw-mmogame",      { NULL }, 3596,  "udp"  },
+  { "a14",             { NULL }, 3597,  "tcp"  },
+  { "a14",             { NULL }, 3597,  "udp"  },
+  { "a15",             { NULL }, 3598,  "tcp"  },
+  { "a15",             { NULL }, 3598,  "udp"  },
+  { "quasar-server",   { NULL }, 3599,  "tcp"  },
+  { "quasar-server",   { NULL }, 3599,  "udp"  },
+  { "trap-daemon",     { NULL }, 3600,  "tcp"  },
+  { "trap-daemon",     { NULL }, 3600,  "udp"  },
+  { "visinet-gui",     { NULL }, 3601,  "tcp"  },
+  { "visinet-gui",     { NULL }, 3601,  "udp"  },
+  { "infiniswitchcl",  { NULL }, 3602,  "tcp"  },
+  { "infiniswitchcl",  { NULL }, 3602,  "udp"  },
+  { "int-rcv-cntrl",   { NULL }, 3603,  "tcp"  },
+  { "int-rcv-cntrl",   { NULL }, 3603,  "udp"  },
+  { "bmc-jmx-port",    { NULL }, 3604,  "tcp"  },
+  { "bmc-jmx-port",    { NULL }, 3604,  "udp"  },
+  { "comcam-io",       { NULL }, 3605,  "tcp"  },
+  { "comcam-io",       { NULL }, 3605,  "udp"  },
+  { "splitlock",       { NULL }, 3606,  "tcp"  },
+  { "splitlock",       { NULL }, 3606,  "udp"  },
+  { "precise-i3",      { NULL }, 3607,  "tcp"  },
+  { "precise-i3",      { NULL }, 3607,  "udp"  },
+  { "trendchip-dcp",   { NULL }, 3608,  "tcp"  },
+  { "trendchip-dcp",   { NULL }, 3608,  "udp"  },
+  { "cpdi-pidas-cm",   { NULL }, 3609,  "tcp"  },
+  { "cpdi-pidas-cm",   { NULL }, 3609,  "udp"  },
+  { "echonet",         { NULL }, 3610,  "tcp"  },
+  { "echonet",         { NULL }, 3610,  "udp"  },
+  { "six-degrees",     { NULL }, 3611,  "tcp"  },
+  { "six-degrees",     { NULL }, 3611,  "udp"  },
+  { "hp-dataprotect",  { NULL }, 3612,  "tcp"  },
+  { "hp-dataprotect",  { NULL }, 3612,  "udp"  },
+  { "alaris-disc",     { NULL }, 3613,  "tcp"  },
+  { "alaris-disc",     { NULL }, 3613,  "udp"  },
+  { "sigma-port",      { NULL }, 3614,  "tcp"  },
+  { "sigma-port",      { NULL }, 3614,  "udp"  },
+  { "start-network",   { NULL }, 3615,  "tcp"  },
+  { "start-network",   { NULL }, 3615,  "udp"  },
+  { "cd3o-protocol",   { NULL }, 3616,  "tcp"  },
+  { "cd3o-protocol",   { NULL }, 3616,  "udp"  },
+  { "sharp-server",    { NULL }, 3617,  "tcp"  },
+  { "sharp-server",    { NULL }, 3617,  "udp"  },
+  { "aairnet-1",       { NULL }, 3618,  "tcp"  },
+  { "aairnet-1",       { NULL }, 3618,  "udp"  },
+  { "aairnet-2",       { NULL }, 3619,  "tcp"  },
+  { "aairnet-2",       { NULL }, 3619,  "udp"  },
+  { "ep-pcp",          { NULL }, 3620,  "tcp"  },
+  { "ep-pcp",          { NULL }, 3620,  "udp"  },
+  { "ep-nsp",          { NULL }, 3621,  "tcp"  },
+  { "ep-nsp",          { NULL }, 3621,  "udp"  },
+  { "ff-lr-port",      { NULL }, 3622,  "tcp"  },
+  { "ff-lr-port",      { NULL }, 3622,  "udp"  },
+  { "haipe-discover",  { NULL }, 3623,  "tcp"  },
+  { "haipe-discover",  { NULL }, 3623,  "udp"  },
+  { "dist-upgrade",    { NULL }, 3624,  "tcp"  },
+  { "dist-upgrade",    { NULL }, 3624,  "udp"  },
+  { "volley",          { NULL }, 3625,  "tcp"  },
+  { "volley",          { NULL }, 3625,  "udp"  },
+  { "bvcdaemon-port",  { NULL }, 3626,  "tcp"  },
+  { "bvcdaemon-port",  { NULL }, 3626,  "udp"  },
+  { "jamserverport",   { NULL }, 3627,  "tcp"  },
+  { "jamserverport",   { NULL }, 3627,  "udp"  },
+  { "ept-machine",     { NULL }, 3628,  "tcp"  },
+  { "ept-machine",     { NULL }, 3628,  "udp"  },
+  { "escvpnet",        { NULL }, 3629,  "tcp"  },
+  { "escvpnet",        { NULL }, 3629,  "udp"  },
+  { "cs-remote-db",    { NULL }, 3630,  "tcp"  },
+  { "cs-remote-db",    { NULL }, 3630,  "udp"  },
+  { "cs-services",     { NULL }, 3631,  "tcp"  },
+  { "cs-services",     { NULL }, 3631,  "udp"  },
+  { "distcc",          { NULL }, 3632,  "tcp"  },
+  { "distcc",          { NULL }, 3632,  "udp"  },
+  { "wacp",            { NULL }, 3633,  "tcp"  },
+  { "wacp",            { NULL }, 3633,  "udp"  },
+  { "hlibmgr",         { NULL }, 3634,  "tcp"  },
+  { "hlibmgr",         { NULL }, 3634,  "udp"  },
+  { "sdo",             { NULL }, 3635,  "tcp"  },
+  { "sdo",             { NULL }, 3635,  "udp"  },
+  { "servistaitsm",    { NULL }, 3636,  "tcp"  },
+  { "servistaitsm",    { NULL }, 3636,  "udp"  },
+  { "scservp",         { NULL }, 3637,  "tcp"  },
+  { "scservp",         { NULL }, 3637,  "udp"  },
+  { "ehp-backup",      { NULL }, 3638,  "tcp"  },
+  { "ehp-backup",      { NULL }, 3638,  "udp"  },
+  { "xap-ha",          { NULL }, 3639,  "tcp"  },
+  { "xap-ha",          { NULL }, 3639,  "udp"  },
+  { "netplay-port1",   { NULL }, 3640,  "tcp"  },
+  { "netplay-port1",   { NULL }, 3640,  "udp"  },
+  { "netplay-port2",   { NULL }, 3641,  "tcp"  },
+  { "netplay-port2",   { NULL }, 3641,  "udp"  },
+  { "juxml-port",      { NULL }, 3642,  "tcp"  },
+  { "juxml-port",      { NULL }, 3642,  "udp"  },
+  { "audiojuggler",    { NULL }, 3643,  "tcp"  },
+  { "audiojuggler",    { NULL }, 3643,  "udp"  },
+  { "ssowatch",        { NULL }, 3644,  "tcp"  },
+  { "ssowatch",        { NULL }, 3644,  "udp"  },
+  { "cyc",             { NULL }, 3645,  "tcp"  },
+  { "cyc",             { NULL }, 3645,  "udp"  },
+  { "xss-srv-port",    { NULL }, 3646,  "tcp"  },
+  { "xss-srv-port",    { NULL }, 3646,  "udp"  },
+  { "splitlock-gw",    { NULL }, 3647,  "tcp"  },
+  { "splitlock-gw",    { NULL }, 3647,  "udp"  },
+  { "fjcp",            { NULL }, 3648,  "tcp"  },
+  { "fjcp",            { NULL }, 3648,  "udp"  },
+  { "nmmp",            { NULL }, 3649,  "tcp"  },
+  { "nmmp",            { NULL }, 3649,  "udp"  },
+  { "prismiq-plugin",  { NULL }, 3650,  "tcp"  },
+  { "prismiq-plugin",  { NULL }, 3650,  "udp"  },
+  { "xrpc-registry",   { NULL }, 3651,  "tcp"  },
+  { "xrpc-registry",   { NULL }, 3651,  "udp"  },
+  { "vxcrnbuport",     { NULL }, 3652,  "tcp"  },
+  { "vxcrnbuport",     { NULL }, 3652,  "udp"  },
+  { "tsp",             { NULL }, 3653,  "tcp"  },
+  { "tsp",             { NULL }, 3653,  "udp"  },
+  { "vaprtm",          { NULL }, 3654,  "tcp"  },
+  { "vaprtm",          { NULL }, 3654,  "udp"  },
+  { "abatemgr",        { NULL }, 3655,  "tcp"  },
+  { "abatemgr",        { NULL }, 3655,  "udp"  },
+  { "abatjss",         { NULL }, 3656,  "tcp"  },
+  { "abatjss",         { NULL }, 3656,  "udp"  },
+  { "immedianet-bcn",  { NULL }, 3657,  "tcp"  },
+  { "immedianet-bcn",  { NULL }, 3657,  "udp"  },
+  { "ps-ams",          { NULL }, 3658,  "tcp"  },
+  { "ps-ams",          { NULL }, 3658,  "udp"  },
+  { "apple-sasl",      { NULL }, 3659,  "tcp"  },
+  { "apple-sasl",      { NULL }, 3659,  "udp"  },
+  { "can-nds-ssl",     { NULL }, 3660,  "tcp"  },
+  { "can-nds-ssl",     { NULL }, 3660,  "udp"  },
+  { "can-ferret-ssl",  { NULL }, 3661,  "tcp"  },
+  { "can-ferret-ssl",  { NULL }, 3661,  "udp"  },
+  { "pserver",         { NULL }, 3662,  "tcp"  },
+  { "pserver",         { NULL }, 3662,  "udp"  },
+  { "dtp",             { NULL }, 3663,  "tcp"  },
+  { "dtp",             { NULL }, 3663,  "udp"  },
+  { "ups-engine",      { NULL }, 3664,  "tcp"  },
+  { "ups-engine",      { NULL }, 3664,  "udp"  },
+  { "ent-engine",      { NULL }, 3665,  "tcp"  },
+  { "ent-engine",      { NULL }, 3665,  "udp"  },
+  { "eserver-pap",     { NULL }, 3666,  "tcp"  },
+  { "eserver-pap",     { NULL }, 3666,  "udp"  },
+  { "infoexch",        { NULL }, 3667,  "tcp"  },
+  { "infoexch",        { NULL }, 3667,  "udp"  },
+  { "dell-rm-port",    { NULL }, 3668,  "tcp"  },
+  { "dell-rm-port",    { NULL }, 3668,  "udp"  },
+  { "casanswmgmt",     { NULL }, 3669,  "tcp"  },
+  { "casanswmgmt",     { NULL }, 3669,  "udp"  },
+  { "smile",           { NULL }, 3670,  "tcp"  },
+  { "smile",           { NULL }, 3670,  "udp"  },
+  { "efcp",            { NULL }, 3671,  "tcp"  },
+  { "efcp",            { NULL }, 3671,  "udp"  },
+  { "lispworks-orb",   { NULL }, 3672,  "tcp"  },
+  { "lispworks-orb",   { NULL }, 3672,  "udp"  },
+  { "mediavault-gui",  { NULL }, 3673,  "tcp"  },
+  { "mediavault-gui",  { NULL }, 3673,  "udp"  },
+  { "wininstall-ipc",  { NULL }, 3674,  "tcp"  },
+  { "wininstall-ipc",  { NULL }, 3674,  "udp"  },
+  { "calltrax",        { NULL }, 3675,  "tcp"  },
+  { "calltrax",        { NULL }, 3675,  "udp"  },
+  { "va-pacbase",      { NULL }, 3676,  "tcp"  },
+  { "va-pacbase",      { NULL }, 3676,  "udp"  },
+  { "roverlog",        { NULL }, 3677,  "tcp"  },
+  { "roverlog",        { NULL }, 3677,  "udp"  },
+  { "ipr-dglt",        { NULL }, 3678,  "tcp"  },
+  { "ipr-dglt",        { NULL }, 3678,  "udp"  },
+  { "newton-dock",     { NULL }, 3679,  "tcp"  },
+  { "newton-dock",     { NULL }, 3679,  "udp"  },
+  { "npds-tracker",    { NULL }, 3680,  "tcp"  },
+  { "npds-tracker",    { NULL }, 3680,  "udp"  },
+  { "bts-x73",         { NULL }, 3681,  "tcp"  },
+  { "bts-x73",         { NULL }, 3681,  "udp"  },
+  { "cas-mapi",        { NULL }, 3682,  "tcp"  },
+  { "cas-mapi",        { NULL }, 3682,  "udp"  },
+  { "bmc-ea",          { NULL }, 3683,  "tcp"  },
+  { "bmc-ea",          { NULL }, 3683,  "udp"  },
+  { "faxstfx-port",    { NULL }, 3684,  "tcp"  },
+  { "faxstfx-port",    { NULL }, 3684,  "udp"  },
+  { "dsx-agent",       { NULL }, 3685,  "tcp"  },
+  { "dsx-agent",       { NULL }, 3685,  "udp"  },
+  { "tnmpv2",          { NULL }, 3686,  "tcp"  },
+  { "tnmpv2",          { NULL }, 3686,  "udp"  },
+  { "simple-push",     { NULL }, 3687,  "tcp"  },
+  { "simple-push",     { NULL }, 3687,  "udp"  },
+  { "simple-push-s",   { NULL }, 3688,  "tcp"  },
+  { "simple-push-s",   { NULL }, 3688,  "udp"  },
+  { "daap",            { NULL }, 3689,  "tcp"  },
+  { "daap",            { NULL }, 3689,  "udp"  },
+  { "svn",             { NULL }, 3690,  "tcp"  },
+  { "svn",             { NULL }, 3690,  "udp"  },
+  { "magaya-network",  { NULL }, 3691,  "tcp"  },
+  { "magaya-network",  { NULL }, 3691,  "udp"  },
+  { "intelsync",       { NULL }, 3692,  "tcp"  },
+  { "intelsync",       { NULL }, 3692,  "udp"  },
+  { "bmc-data-coll",   { NULL }, 3695,  "tcp"  },
+  { "bmc-data-coll",   { NULL }, 3695,  "udp"  },
+  { "telnetcpcd",      { NULL }, 3696,  "tcp"  },
+  { "telnetcpcd",      { NULL }, 3696,  "udp"  },
+  { "nw-license",      { NULL }, 3697,  "tcp"  },
+  { "nw-license",      { NULL }, 3697,  "udp"  },
+  { "sagectlpanel",    { NULL }, 3698,  "tcp"  },
+  { "sagectlpanel",    { NULL }, 3698,  "udp"  },
+  { "kpn-icw",         { NULL }, 3699,  "tcp"  },
+  { "kpn-icw",         { NULL }, 3699,  "udp"  },
+  { "lrs-paging",      { NULL }, 3700,  "tcp"  },
+  { "lrs-paging",      { NULL }, 3700,  "udp"  },
+  { "netcelera",       { NULL }, 3701,  "tcp"  },
+  { "netcelera",       { NULL }, 3701,  "udp"  },
+  { "ws-discovery",    { NULL }, 3702,  "tcp"  },
+  { "ws-discovery",    { NULL }, 3702,  "udp"  },
+  { "adobeserver-3",   { NULL }, 3703,  "tcp"  },
+  { "adobeserver-3",   { NULL }, 3703,  "udp"  },
+  { "adobeserver-4",   { NULL }, 3704,  "tcp"  },
+  { "adobeserver-4",   { NULL }, 3704,  "udp"  },
+  { "adobeserver-5",   { NULL }, 3705,  "tcp"  },
+  { "adobeserver-5",   { NULL }, 3705,  "udp"  },
+  { "rt-event",        { NULL }, 3706,  "tcp"  },
+  { "rt-event",        { NULL }, 3706,  "udp"  },
+  { "rt-event-s",      { NULL }, 3707,  "tcp"  },
+  { "rt-event-s",      { NULL }, 3707,  "udp"  },
+  { "sun-as-iiops",    { NULL }, 3708,  "tcp"  },
+  { "sun-as-iiops",    { NULL }, 3708,  "udp"  },
+  { "ca-idms",         { NULL }, 3709,  "tcp"  },
+  { "ca-idms",         { NULL }, 3709,  "udp"  },
+  { "portgate-auth",   { NULL }, 3710,  "tcp"  },
+  { "portgate-auth",   { NULL }, 3710,  "udp"  },
+  { "edb-server2",     { NULL }, 3711,  "tcp"  },
+  { "edb-server2",     { NULL }, 3711,  "udp"  },
+  { "sentinel-ent",    { NULL }, 3712,  "tcp"  },
+  { "sentinel-ent",    { NULL }, 3712,  "udp"  },
+  { "tftps",           { NULL }, 3713,  "tcp"  },
+  { "tftps",           { NULL }, 3713,  "udp"  },
+  { "delos-dms",       { NULL }, 3714,  "tcp"  },
+  { "delos-dms",       { NULL }, 3714,  "udp"  },
+  { "anoto-rendezv",   { NULL }, 3715,  "tcp"  },
+  { "anoto-rendezv",   { NULL }, 3715,  "udp"  },
+  { "wv-csp-sms-cir",  { NULL }, 3716,  "tcp"  },
+  { "wv-csp-sms-cir",  { NULL }, 3716,  "udp"  },
+  { "wv-csp-udp-cir",  { NULL }, 3717,  "tcp"  },
+  { "wv-csp-udp-cir",  { NULL }, 3717,  "udp"  },
+  { "opus-services",   { NULL }, 3718,  "tcp"  },
+  { "opus-services",   { NULL }, 3718,  "udp"  },
+  { "itelserverport",  { NULL }, 3719,  "tcp"  },
+  { "itelserverport",  { NULL }, 3719,  "udp"  },
+  { "ufastro-instr",   { NULL }, 3720,  "tcp"  },
+  { "ufastro-instr",   { NULL }, 3720,  "udp"  },
+  { "xsync",           { NULL }, 3721,  "tcp"  },
+  { "xsync",           { NULL }, 3721,  "udp"  },
+  { "xserveraid",      { NULL }, 3722,  "tcp"  },
+  { "xserveraid",      { NULL }, 3722,  "udp"  },
+  { "sychrond",        { NULL }, 3723,  "tcp"  },
+  { "sychrond",        { NULL }, 3723,  "udp"  },
+  { "blizwow",         { NULL }, 3724,  "tcp"  },
+  { "blizwow",         { NULL }, 3724,  "udp"  },
+  { "na-er-tip",       { NULL }, 3725,  "tcp"  },
+  { "na-er-tip",       { NULL }, 3725,  "udp"  },
+  { "array-manager",   { NULL }, 3726,  "tcp"  },
+  { "array-manager",   { NULL }, 3726,  "udp"  },
+  { "e-mdu",           { NULL }, 3727,  "tcp"  },
+  { "e-mdu",           { NULL }, 3727,  "udp"  },
+  { "e-woa",           { NULL }, 3728,  "tcp"  },
+  { "e-woa",           { NULL }, 3728,  "udp"  },
+  { "fksp-audit",      { NULL }, 3729,  "tcp"  },
+  { "fksp-audit",      { NULL }, 3729,  "udp"  },
+  { "client-ctrl",     { NULL }, 3730,  "tcp"  },
+  { "client-ctrl",     { NULL }, 3730,  "udp"  },
+  { "smap",            { NULL }, 3731,  "tcp"  },
+  { "smap",            { NULL }, 3731,  "udp"  },
+  { "m-wnn",           { NULL }, 3732,  "tcp"  },
+  { "m-wnn",           { NULL }, 3732,  "udp"  },
+  { "multip-msg",      { NULL }, 3733,  "tcp"  },
+  { "multip-msg",      { NULL }, 3733,  "udp"  },
+  { "synel-data",      { NULL }, 3734,  "tcp"  },
+  { "synel-data",      { NULL }, 3734,  "udp"  },
+  { "pwdis",           { NULL }, 3735,  "tcp"  },
+  { "pwdis",           { NULL }, 3735,  "udp"  },
+  { "rs-rmi",          { NULL }, 3736,  "tcp"  },
+  { "rs-rmi",          { NULL }, 3736,  "udp"  },
+  { "xpanel",          { NULL }, 3737,  "tcp"  },
+  { "versatalk",       { NULL }, 3738,  "tcp"  },
+  { "versatalk",       { NULL }, 3738,  "udp"  },
+  { "launchbird-lm",   { NULL }, 3739,  "tcp"  },
+  { "launchbird-lm",   { NULL }, 3739,  "udp"  },
+  { "heartbeat",       { NULL }, 3740,  "tcp"  },
+  { "heartbeat",       { NULL }, 3740,  "udp"  },
+  { "wysdma",          { NULL }, 3741,  "tcp"  },
+  { "wysdma",          { NULL }, 3741,  "udp"  },
+  { "cst-port",        { NULL }, 3742,  "tcp"  },
+  { "cst-port",        { NULL }, 3742,  "udp"  },
+  { "ipcs-command",    { NULL }, 3743,  "tcp"  },
+  { "ipcs-command",    { NULL }, 3743,  "udp"  },
+  { "sasg",            { NULL }, 3744,  "tcp"  },
+  { "sasg",            { NULL }, 3744,  "udp"  },
+  { "gw-call-port",    { NULL }, 3745,  "tcp"  },
+  { "gw-call-port",    { NULL }, 3745,  "udp"  },
+  { "linktest",        { NULL }, 3746,  "tcp"  },
+  { "linktest",        { NULL }, 3746,  "udp"  },
+  { "linktest-s",      { NULL }, 3747,  "tcp"  },
+  { "linktest-s",      { NULL }, 3747,  "udp"  },
+  { "webdata",         { NULL }, 3748,  "tcp"  },
+  { "webdata",         { NULL }, 3748,  "udp"  },
+  { "cimtrak",         { NULL }, 3749,  "tcp"  },
+  { "cimtrak",         { NULL }, 3749,  "udp"  },
+  { "cbos-ip-port",    { NULL }, 3750,  "tcp"  },
+  { "cbos-ip-port",    { NULL }, 3750,  "udp"  },
+  { "gprs-cube",       { NULL }, 3751,  "tcp"  },
+  { "gprs-cube",       { NULL }, 3751,  "udp"  },
+  { "vipremoteagent",  { NULL }, 3752,  "tcp"  },
+  { "vipremoteagent",  { NULL }, 3752,  "udp"  },
+  { "nattyserver",     { NULL }, 3753,  "tcp"  },
+  { "nattyserver",     { NULL }, 3753,  "udp"  },
+  { "timestenbroker",  { NULL }, 3754,  "tcp"  },
+  { "timestenbroker",  { NULL }, 3754,  "udp"  },
+  { "sas-remote-hlp",  { NULL }, 3755,  "tcp"  },
+  { "sas-remote-hlp",  { NULL }, 3755,  "udp"  },
+  { "canon-capt",      { NULL }, 3756,  "tcp"  },
+  { "canon-capt",      { NULL }, 3756,  "udp"  },
+  { "grf-port",        { NULL }, 3757,  "tcp"  },
+  { "grf-port",        { NULL }, 3757,  "udp"  },
+  { "apw-registry",    { NULL }, 3758,  "tcp"  },
+  { "apw-registry",    { NULL }, 3758,  "udp"  },
+  { "exapt-lmgr",      { NULL }, 3759,  "tcp"  },
+  { "exapt-lmgr",      { NULL }, 3759,  "udp"  },
+  { "adtempusclient",  { NULL }, 3760,  "tcp"  },
+  { "adtempusclient",  { NULL }, 3760,  "udp"  },
+  { "gsakmp",          { NULL }, 3761,  "tcp"  },
+  { "gsakmp",          { NULL }, 3761,  "udp"  },
+  { "gbs-smp",         { NULL }, 3762,  "tcp"  },
+  { "gbs-smp",         { NULL }, 3762,  "udp"  },
+  { "xo-wave",         { NULL }, 3763,  "tcp"  },
+  { "xo-wave",         { NULL }, 3763,  "udp"  },
+  { "mni-prot-rout",   { NULL }, 3764,  "tcp"  },
+  { "mni-prot-rout",   { NULL }, 3764,  "udp"  },
+  { "rtraceroute",     { NULL }, 3765,  "tcp"  },
+  { "rtraceroute",     { NULL }, 3765,  "udp"  },
+  { "listmgr-port",    { NULL }, 3767,  "tcp"  },
+  { "listmgr-port",    { NULL }, 3767,  "udp"  },
+  { "rblcheckd",       { NULL }, 3768,  "tcp"  },
+  { "rblcheckd",       { NULL }, 3768,  "udp"  },
+  { "haipe-otnk",      { NULL }, 3769,  "tcp"  },
+  { "haipe-otnk",      { NULL }, 3769,  "udp"  },
+  { "cindycollab",     { NULL }, 3770,  "tcp"  },
+  { "cindycollab",     { NULL }, 3770,  "udp"  },
+  { "paging-port",     { NULL }, 3771,  "tcp"  },
+  { "paging-port",     { NULL }, 3771,  "udp"  },
+  { "ctp",             { NULL }, 3772,  "tcp"  },
+  { "ctp",             { NULL }, 3772,  "udp"  },
+  { "ctdhercules",     { NULL }, 3773,  "tcp"  },
+  { "ctdhercules",     { NULL }, 3773,  "udp"  },
+  { "zicom",           { NULL }, 3774,  "tcp"  },
+  { "zicom",           { NULL }, 3774,  "udp"  },
+  { "ispmmgr",         { NULL }, 3775,  "tcp"  },
+  { "ispmmgr",         { NULL }, 3775,  "udp"  },
+  { "dvcprov-port",    { NULL }, 3776,  "tcp"  },
+  { "dvcprov-port",    { NULL }, 3776,  "udp"  },
+  { "jibe-eb",         { NULL }, 3777,  "tcp"  },
+  { "jibe-eb",         { NULL }, 3777,  "udp"  },
+  { "c-h-it-port",     { NULL }, 3778,  "tcp"  },
+  { "c-h-it-port",     { NULL }, 3778,  "udp"  },
+  { "cognima",         { NULL }, 3779,  "tcp"  },
+  { "cognima",         { NULL }, 3779,  "udp"  },
+  { "nnp",             { NULL }, 3780,  "tcp"  },
+  { "nnp",             { NULL }, 3780,  "udp"  },
+  { "abcvoice-port",   { NULL }, 3781,  "tcp"  },
+  { "abcvoice-port",   { NULL }, 3781,  "udp"  },
+  { "iso-tp0s",        { NULL }, 3782,  "tcp"  },
+  { "iso-tp0s",        { NULL }, 3782,  "udp"  },
+  { "bim-pem",         { NULL }, 3783,  "tcp"  },
+  { "bim-pem",         { NULL }, 3783,  "udp"  },
+  { "bfd-control",     { NULL }, 3784,  "tcp"  },
+  { "bfd-control",     { NULL }, 3784,  "udp"  },
+  { "bfd-echo",        { NULL }, 3785,  "tcp"  },
+  { "bfd-echo",        { NULL }, 3785,  "udp"  },
+  { "upstriggervsw",   { NULL }, 3786,  "tcp"  },
+  { "upstriggervsw",   { NULL }, 3786,  "udp"  },
+  { "fintrx",          { NULL }, 3787,  "tcp"  },
+  { "fintrx",          { NULL }, 3787,  "udp"  },
+  { "isrp-port",       { NULL }, 3788,  "tcp"  },
+  { "isrp-port",       { NULL }, 3788,  "udp"  },
+  { "remotedeploy",    { NULL }, 3789,  "tcp"  },
+  { "remotedeploy",    { NULL }, 3789,  "udp"  },
+  { "quickbooksrds",   { NULL }, 3790,  "tcp"  },
+  { "quickbooksrds",   { NULL }, 3790,  "udp"  },
+  { "tvnetworkvideo",  { NULL }, 3791,  "tcp"  },
+  { "tvnetworkvideo",  { NULL }, 3791,  "udp"  },
+  { "sitewatch",       { NULL }, 3792,  "tcp"  },
+  { "sitewatch",       { NULL }, 3792,  "udp"  },
+  { "dcsoftware",      { NULL }, 3793,  "tcp"  },
+  { "dcsoftware",      { NULL }, 3793,  "udp"  },
+  { "jaus",            { NULL }, 3794,  "tcp"  },
+  { "jaus",            { NULL }, 3794,  "udp"  },
+  { "myblast",         { NULL }, 3795,  "tcp"  },
+  { "myblast",         { NULL }, 3795,  "udp"  },
+  { "spw-dialer",      { NULL }, 3796,  "tcp"  },
+  { "spw-dialer",      { NULL }, 3796,  "udp"  },
+  { "idps",            { NULL }, 3797,  "tcp"  },
+  { "idps",            { NULL }, 3797,  "udp"  },
+  { "minilock",        { NULL }, 3798,  "tcp"  },
+  { "minilock",        { NULL }, 3798,  "udp"  },
+  { "radius-dynauth",  { NULL }, 3799,  "tcp"  },
+  { "radius-dynauth",  { NULL }, 3799,  "udp"  },
+  { "pwgpsi",          { NULL }, 3800,  "tcp"  },
+  { "pwgpsi",          { NULL }, 3800,  "udp"  },
+  { "ibm-mgr",         { NULL }, 3801,  "tcp"  },
+  { "ibm-mgr",         { NULL }, 3801,  "udp"  },
+  { "vhd",             { NULL }, 3802,  "tcp"  },
+  { "vhd",             { NULL }, 3802,  "udp"  },
+  { "soniqsync",       { NULL }, 3803,  "tcp"  },
+  { "soniqsync",       { NULL }, 3803,  "udp"  },
+  { "iqnet-port",      { NULL }, 3804,  "tcp"  },
+  { "iqnet-port",      { NULL }, 3804,  "udp"  },
+  { "tcpdataserver",   { NULL }, 3805,  "tcp"  },
+  { "tcpdataserver",   { NULL }, 3805,  "udp"  },
+  { "wsmlb",           { NULL }, 3806,  "tcp"  },
+  { "wsmlb",           { NULL }, 3806,  "udp"  },
+  { "spugna",          { NULL }, 3807,  "tcp"  },
+  { "spugna",          { NULL }, 3807,  "udp"  },
+  { "sun-as-iiops-ca", { NULL }, 3808,  "tcp"  },
+  { "sun-as-iiops-ca", { NULL }, 3808,  "udp"  },
+  { "apocd",           { NULL }, 3809,  "tcp"  },
+  { "apocd",           { NULL }, 3809,  "udp"  },
+  { "wlanauth",        { NULL }, 3810,  "tcp"  },
+  { "wlanauth",        { NULL }, 3810,  "udp"  },
+  { "amp",             { NULL }, 3811,  "tcp"  },
+  { "amp",             { NULL }, 3811,  "udp"  },
+  { "neto-wol-server", { NULL }, 3812,  "tcp"  },
+  { "neto-wol-server", { NULL }, 3812,  "udp"  },
+  { "rap-ip",          { NULL }, 3813,  "tcp"  },
+  { "rap-ip",          { NULL }, 3813,  "udp"  },
+  { "neto-dcs",        { NULL }, 3814,  "tcp"  },
+  { "neto-dcs",        { NULL }, 3814,  "udp"  },
+  { "lansurveyorxml",  { NULL }, 3815,  "tcp"  },
+  { "lansurveyorxml",  { NULL }, 3815,  "udp"  },
+  { "sunlps-http",     { NULL }, 3816,  "tcp"  },
+  { "sunlps-http",     { NULL }, 3816,  "udp"  },
+  { "tapeware",        { NULL }, 3817,  "tcp"  },
+  { "tapeware",        { NULL }, 3817,  "udp"  },
+  { "crinis-hb",       { NULL }, 3818,  "tcp"  },
+  { "crinis-hb",       { NULL }, 3818,  "udp"  },
+  { "epl-slp",         { NULL }, 3819,  "tcp"  },
+  { "epl-slp",         { NULL }, 3819,  "udp"  },
+  { "scp",             { NULL }, 3820,  "tcp"  },
+  { "scp",             { NULL }, 3820,  "udp"  },
+  { "pmcp",            { NULL }, 3821,  "tcp"  },
+  { "pmcp",            { NULL }, 3821,  "udp"  },
+  { "acp-discovery",   { NULL }, 3822,  "tcp"  },
+  { "acp-discovery",   { NULL }, 3822,  "udp"  },
+  { "acp-conduit",     { NULL }, 3823,  "tcp"  },
+  { "acp-conduit",     { NULL }, 3823,  "udp"  },
+  { "acp-policy",      { NULL }, 3824,  "tcp"  },
+  { "acp-policy",      { NULL }, 3824,  "udp"  },
+  { "ffserver",        { NULL }, 3825,  "tcp"  },
+  { "ffserver",        { NULL }, 3825,  "udp"  },
+  { "wormux",          { NULL }, 3826,  "tcp"  },
+  { "wormux",          { NULL }, 3826,  "udp"  },
+  { "netmpi",          { NULL }, 3827,  "tcp"  },
+  { "netmpi",          { NULL }, 3827,  "udp"  },
+  { "neteh",           { NULL }, 3828,  "tcp"  },
+  { "neteh",           { NULL }, 3828,  "udp"  },
+  { "neteh-ext",       { NULL }, 3829,  "tcp"  },
+  { "neteh-ext",       { NULL }, 3829,  "udp"  },
+  { "cernsysmgmtagt",  { NULL }, 3830,  "tcp"  },
+  { "cernsysmgmtagt",  { NULL }, 3830,  "udp"  },
+  { "dvapps",          { NULL }, 3831,  "tcp"  },
+  { "dvapps",          { NULL }, 3831,  "udp"  },
+  { "xxnetserver",     { NULL }, 3832,  "tcp"  },
+  { "xxnetserver",     { NULL }, 3832,  "udp"  },
+  { "aipn-auth",       { NULL }, 3833,  "tcp"  },
+  { "aipn-auth",       { NULL }, 3833,  "udp"  },
+  { "spectardata",     { NULL }, 3834,  "tcp"  },
+  { "spectardata",     { NULL }, 3834,  "udp"  },
+  { "spectardb",       { NULL }, 3835,  "tcp"  },
+  { "spectardb",       { NULL }, 3835,  "udp"  },
+  { "markem-dcp",      { NULL }, 3836,  "tcp"  },
+  { "markem-dcp",      { NULL }, 3836,  "udp"  },
+  { "mkm-discovery",   { NULL }, 3837,  "tcp"  },
+  { "mkm-discovery",   { NULL }, 3837,  "udp"  },
+  { "sos",             { NULL }, 3838,  "tcp"  },
+  { "sos",             { NULL }, 3838,  "udp"  },
+  { "amx-rms",         { NULL }, 3839,  "tcp"  },
+  { "amx-rms",         { NULL }, 3839,  "udp"  },
+  { "flirtmitmir",     { NULL }, 3840,  "tcp"  },
+  { "flirtmitmir",     { NULL }, 3840,  "udp"  },
+  { "zfirm-shiprush3", { NULL }, 3841,  "tcp"  },
+  { "zfirm-shiprush3", { NULL }, 3841,  "udp"  },
+  { "nhci",            { NULL }, 3842,  "tcp"  },
+  { "nhci",            { NULL }, 3842,  "udp"  },
+  { "quest-agent",     { NULL }, 3843,  "tcp"  },
+  { "quest-agent",     { NULL }, 3843,  "udp"  },
+  { "rnm",             { NULL }, 3844,  "tcp"  },
+  { "rnm",             { NULL }, 3844,  "udp"  },
+  { "v-one-spp",       { NULL }, 3845,  "tcp"  },
+  { "v-one-spp",       { NULL }, 3845,  "udp"  },
+  { "an-pcp",          { NULL }, 3846,  "tcp"  },
+  { "an-pcp",          { NULL }, 3846,  "udp"  },
+  { "msfw-control",    { NULL }, 3847,  "tcp"  },
+  { "msfw-control",    { NULL }, 3847,  "udp"  },
+  { "item",            { NULL }, 3848,  "tcp"  },
+  { "item",            { NULL }, 3848,  "udp"  },
+  { "spw-dnspreload",  { NULL }, 3849,  "tcp"  },
+  { "spw-dnspreload",  { NULL }, 3849,  "udp"  },
+  { "qtms-bootstrap",  { NULL }, 3850,  "tcp"  },
+  { "qtms-bootstrap",  { NULL }, 3850,  "udp"  },
+  { "spectraport",     { NULL }, 3851,  "tcp"  },
+  { "spectraport",     { NULL }, 3851,  "udp"  },
+  { "sse-app-config",  { NULL }, 3852,  "tcp"  },
+  { "sse-app-config",  { NULL }, 3852,  "udp"  },
+  { "sscan",           { NULL }, 3853,  "tcp"  },
+  { "sscan",           { NULL }, 3853,  "udp"  },
+  { "stryker-com",     { NULL }, 3854,  "tcp"  },
+  { "stryker-com",     { NULL }, 3854,  "udp"  },
+  { "opentrac",        { NULL }, 3855,  "tcp"  },
+  { "opentrac",        { NULL }, 3855,  "udp"  },
+  { "informer",        { NULL }, 3856,  "tcp"  },
+  { "informer",        { NULL }, 3856,  "udp"  },
+  { "trap-port",       { NULL }, 3857,  "tcp"  },
+  { "trap-port",       { NULL }, 3857,  "udp"  },
+  { "trap-port-mom",   { NULL }, 3858,  "tcp"  },
+  { "trap-port-mom",   { NULL }, 3858,  "udp"  },
+  { "nav-port",        { NULL }, 3859,  "tcp"  },
+  { "nav-port",        { NULL }, 3859,  "udp"  },
+  { "sasp",            { NULL }, 3860,  "tcp"  },
+  { "sasp",            { NULL }, 3860,  "udp"  },
+  { "winshadow-hd",    { NULL }, 3861,  "tcp"  },
+  { "winshadow-hd",    { NULL }, 3861,  "udp"  },
+  { "giga-pocket",     { NULL }, 3862,  "tcp"  },
+  { "giga-pocket",     { NULL }, 3862,  "udp"  },
+  { "asap-tcp",        { NULL }, 3863,  "tcp"  },
+  { "asap-udp",        { NULL }, 3863,  "udp"  },
+  { "asap-sctp",       { NULL }, 3863,  "sctp" },
+  { "asap-tcp-tls",    { NULL }, 3864,  "tcp"  },
+  { "asap-sctp-tls",   { NULL }, 3864,  "sctp" },
+  { "xpl",             { NULL }, 3865,  "tcp"  },
+  { "xpl",             { NULL }, 3865,  "udp"  },
+  { "dzdaemon",        { NULL }, 3866,  "tcp"  },
+  { "dzdaemon",        { NULL }, 3866,  "udp"  },
+  { "dzoglserver",     { NULL }, 3867,  "tcp"  },
+  { "dzoglserver",     { NULL }, 3867,  "udp"  },
+  { "diameter",        { NULL }, 3868,  "tcp"  },
+  { "diameter",        { NULL }, 3868,  "sctp" },
+  { "ovsam-mgmt",      { NULL }, 3869,  "tcp"  },
+  { "ovsam-mgmt",      { NULL }, 3869,  "udp"  },
+  { "ovsam-d-agent",   { NULL }, 3870,  "tcp"  },
+  { "ovsam-d-agent",   { NULL }, 3870,  "udp"  },
+  { "avocent-adsap",   { NULL }, 3871,  "tcp"  },
+  { "avocent-adsap",   { NULL }, 3871,  "udp"  },
+  { "oem-agent",       { NULL }, 3872,  "tcp"  },
+  { "oem-agent",       { NULL }, 3872,  "udp"  },
+  { "fagordnc",        { NULL }, 3873,  "tcp"  },
+  { "fagordnc",        { NULL }, 3873,  "udp"  },
+  { "sixxsconfig",     { NULL }, 3874,  "tcp"  },
+  { "sixxsconfig",     { NULL }, 3874,  "udp"  },
+  { "pnbscada",        { NULL }, 3875,  "tcp"  },
+  { "pnbscada",        { NULL }, 3875,  "udp"  },
+  { "dl_agent",        { NULL }, 3876,  "tcp"  },
+  { "dl_agent",        { NULL }, 3876,  "udp"  },
+  { "xmpcr-interface", { NULL }, 3877,  "tcp"  },
+  { "xmpcr-interface", { NULL }, 3877,  "udp"  },
+  { "fotogcad",        { NULL }, 3878,  "tcp"  },
+  { "fotogcad",        { NULL }, 3878,  "udp"  },
+  { "appss-lm",        { NULL }, 3879,  "tcp"  },
+  { "appss-lm",        { NULL }, 3879,  "udp"  },
+  { "igrs",            { NULL }, 3880,  "tcp"  },
+  { "igrs",            { NULL }, 3880,  "udp"  },
+  { "idac",            { NULL }, 3881,  "tcp"  },
+  { "idac",            { NULL }, 3881,  "udp"  },
+  { "msdts1",          { NULL }, 3882,  "tcp"  },
+  { "msdts1",          { NULL }, 3882,  "udp"  },
+  { "vrpn",            { NULL }, 3883,  "tcp"  },
+  { "vrpn",            { NULL }, 3883,  "udp"  },
+  { "softrack-meter",  { NULL }, 3884,  "tcp"  },
+  { "softrack-meter",  { NULL }, 3884,  "udp"  },
+  { "topflow-ssl",     { NULL }, 3885,  "tcp"  },
+  { "topflow-ssl",     { NULL }, 3885,  "udp"  },
+  { "nei-management",  { NULL }, 3886,  "tcp"  },
+  { "nei-management",  { NULL }, 3886,  "udp"  },
+  { "ciphire-data",    { NULL }, 3887,  "tcp"  },
+  { "ciphire-data",    { NULL }, 3887,  "udp"  },
+  { "ciphire-serv",    { NULL }, 3888,  "tcp"  },
+  { "ciphire-serv",    { NULL }, 3888,  "udp"  },
+  { "dandv-tester",    { NULL }, 3889,  "tcp"  },
+  { "dandv-tester",    { NULL }, 3889,  "udp"  },
+  { "ndsconnect",      { NULL }, 3890,  "tcp"  },
+  { "ndsconnect",      { NULL }, 3890,  "udp"  },
+  { "rtc-pm-port",     { NULL }, 3891,  "tcp"  },
+  { "rtc-pm-port",     { NULL }, 3891,  "udp"  },
+  { "pcc-image-port",  { NULL }, 3892,  "tcp"  },
+  { "pcc-image-port",  { NULL }, 3892,  "udp"  },
+  { "cgi-starapi",     { NULL }, 3893,  "tcp"  },
+  { "cgi-starapi",     { NULL }, 3893,  "udp"  },
+  { "syam-agent",      { NULL }, 3894,  "tcp"  },
+  { "syam-agent",      { NULL }, 3894,  "udp"  },
+  { "syam-smc",        { NULL }, 3895,  "tcp"  },
+  { "syam-smc",        { NULL }, 3895,  "udp"  },
+  { "sdo-tls",         { NULL }, 3896,  "tcp"  },
+  { "sdo-tls",         { NULL }, 3896,  "udp"  },
+  { "sdo-ssh",         { NULL }, 3897,  "tcp"  },
+  { "sdo-ssh",         { NULL }, 3897,  "udp"  },
+  { "senip",           { NULL }, 3898,  "tcp"  },
+  { "senip",           { NULL }, 3898,  "udp"  },
+  { "itv-control",     { NULL }, 3899,  "tcp"  },
+  { "itv-control",     { NULL }, 3899,  "udp"  },
+  { "udt_os",          { NULL }, 3900,  "tcp"  },
+  { "udt_os",          { NULL }, 3900,  "udp"  },
+  { "nimsh",           { NULL }, 3901,  "tcp"  },
+  { "nimsh",           { NULL }, 3901,  "udp"  },
+  { "nimaux",          { NULL }, 3902,  "tcp"  },
+  { "nimaux",          { NULL }, 3902,  "udp"  },
+  { "charsetmgr",      { NULL }, 3903,  "tcp"  },
+  { "charsetmgr",      { NULL }, 3903,  "udp"  },
+  { "omnilink-port",   { NULL }, 3904,  "tcp"  },
+  { "omnilink-port",   { NULL }, 3904,  "udp"  },
+  { "mupdate",         { NULL }, 3905,  "tcp"  },
+  { "mupdate",         { NULL }, 3905,  "udp"  },
+  { "topovista-data",  { NULL }, 3906,  "tcp"  },
+  { "topovista-data",  { NULL }, 3906,  "udp"  },
+  { "imoguia-port",    { NULL }, 3907,  "tcp"  },
+  { "imoguia-port",    { NULL }, 3907,  "udp"  },
+  { "hppronetman",     { NULL }, 3908,  "tcp"  },
+  { "hppronetman",     { NULL }, 3908,  "udp"  },
+  { "surfcontrolcpa",  { NULL }, 3909,  "tcp"  },
+  { "surfcontrolcpa",  { NULL }, 3909,  "udp"  },
+  { "prnrequest",      { NULL }, 3910,  "tcp"  },
+  { "prnrequest",      { NULL }, 3910,  "udp"  },
+  { "prnstatus",       { NULL }, 3911,  "tcp"  },
+  { "prnstatus",       { NULL }, 3911,  "udp"  },
+  { "gbmt-stars",      { NULL }, 3912,  "tcp"  },
+  { "gbmt-stars",      { NULL }, 3912,  "udp"  },
+  { "listcrt-port",    { NULL }, 3913,  "tcp"  },
+  { "listcrt-port",    { NULL }, 3913,  "udp"  },
+  { "listcrt-port-2",  { NULL }, 3914,  "tcp"  },
+  { "listcrt-port-2",  { NULL }, 3914,  "udp"  },
+  { "agcat",           { NULL }, 3915,  "tcp"  },
+  { "agcat",           { NULL }, 3915,  "udp"  },
+  { "wysdmc",          { NULL }, 3916,  "tcp"  },
+  { "wysdmc",          { NULL }, 3916,  "udp"  },
+  { "aftmux",          { NULL }, 3917,  "tcp"  },
+  { "aftmux",          { NULL }, 3917,  "udp"  },
+  { "pktcablemmcops",  { NULL }, 3918,  "tcp"  },
+  { "pktcablemmcops",  { NULL }, 3918,  "udp"  },
+  { "hyperip",         { NULL }, 3919,  "tcp"  },
+  { "hyperip",         { NULL }, 3919,  "udp"  },
+  { "exasoftport1",    { NULL }, 3920,  "tcp"  },
+  { "exasoftport1",    { NULL }, 3920,  "udp"  },
+  { "herodotus-net",   { NULL }, 3921,  "tcp"  },
+  { "herodotus-net",   { NULL }, 3921,  "udp"  },
+  { "sor-update",      { NULL }, 3922,  "tcp"  },
+  { "sor-update",      { NULL }, 3922,  "udp"  },
+  { "symb-sb-port",    { NULL }, 3923,  "tcp"  },
+  { "symb-sb-port",    { NULL }, 3923,  "udp"  },
+  { "mpl-gprs-port",   { NULL }, 3924,  "tcp"  },
+  { "mpl-gprs-port",   { NULL }, 3924,  "udp"  },
+  { "zmp",             { NULL }, 3925,  "tcp"  },
+  { "zmp",             { NULL }, 3925,  "udp"  },
+  { "winport",         { NULL }, 3926,  "tcp"  },
+  { "winport",         { NULL }, 3926,  "udp"  },
+  { "natdataservice",  { NULL }, 3927,  "tcp"  },
+  { "natdataservice",  { NULL }, 3927,  "udp"  },
+  { "netboot-pxe",     { NULL }, 3928,  "tcp"  },
+  { "netboot-pxe",     { NULL }, 3928,  "udp"  },
+  { "smauth-port",     { NULL }, 3929,  "tcp"  },
+  { "smauth-port",     { NULL }, 3929,  "udp"  },
+  { "syam-webserver",  { NULL }, 3930,  "tcp"  },
+  { "syam-webserver",  { NULL }, 3930,  "udp"  },
+  { "msr-plugin-port", { NULL }, 3931,  "tcp"  },
+  { "msr-plugin-port", { NULL }, 3931,  "udp"  },
+  { "dyn-site",        { NULL }, 3932,  "tcp"  },
+  { "dyn-site",        { NULL }, 3932,  "udp"  },
+  { "plbserve-port",   { NULL }, 3933,  "tcp"  },
+  { "plbserve-port",   { NULL }, 3933,  "udp"  },
+  { "sunfm-port",      { NULL }, 3934,  "tcp"  },
+  { "sunfm-port",      { NULL }, 3934,  "udp"  },
+  { "sdp-portmapper",  { NULL }, 3935,  "tcp"  },
+  { "sdp-portmapper",  { NULL }, 3935,  "udp"  },
+  { "mailprox",        { NULL }, 3936,  "tcp"  },
+  { "mailprox",        { NULL }, 3936,  "udp"  },
+  { "dvbservdsc",      { NULL }, 3937,  "tcp"  },
+  { "dvbservdsc",      { NULL }, 3937,  "udp"  },
+  { "dbcontrol_agent", { NULL }, 3938,  "tcp"  },
+  { "dbcontrol_agent", { NULL }, 3938,  "udp"  },
+  { "aamp",            { NULL }, 3939,  "tcp"  },
+  { "aamp",            { NULL }, 3939,  "udp"  },
+  { "xecp-node",       { NULL }, 3940,  "tcp"  },
+  { "xecp-node",       { NULL }, 3940,  "udp"  },
+  { "homeportal-web",  { NULL }, 3941,  "tcp"  },
+  { "homeportal-web",  { NULL }, 3941,  "udp"  },
+  { "srdp",            { NULL }, 3942,  "tcp"  },
+  { "srdp",            { NULL }, 3942,  "udp"  },
+  { "tig",             { NULL }, 3943,  "tcp"  },
+  { "tig",             { NULL }, 3943,  "udp"  },
+  { "sops",            { NULL }, 3944,  "tcp"  },
+  { "sops",            { NULL }, 3944,  "udp"  },
+  { "emcads",          { NULL }, 3945,  "tcp"  },
+  { "emcads",          { NULL }, 3945,  "udp"  },
+  { "backupedge",      { NULL }, 3946,  "tcp"  },
+  { "backupedge",      { NULL }, 3946,  "udp"  },
+  { "ccp",             { NULL }, 3947,  "tcp"  },
+  { "ccp",             { NULL }, 3947,  "udp"  },
+  { "apdap",           { NULL }, 3948,  "tcp"  },
+  { "apdap",           { NULL }, 3948,  "udp"  },
+  { "drip",            { NULL }, 3949,  "tcp"  },
+  { "drip",            { NULL }, 3949,  "udp"  },
+  { "namemunge",       { NULL }, 3950,  "tcp"  },
+  { "namemunge",       { NULL }, 3950,  "udp"  },
+  { "pwgippfax",       { NULL }, 3951,  "tcp"  },
+  { "pwgippfax",       { NULL }, 3951,  "udp"  },
+  { "i3-sessionmgr",   { NULL }, 3952,  "tcp"  },
+  { "i3-sessionmgr",   { NULL }, 3952,  "udp"  },
+  { "xmlink-connect",  { NULL }, 3953,  "tcp"  },
+  { "xmlink-connect",  { NULL }, 3953,  "udp"  },
+  { "adrep",           { NULL }, 3954,  "tcp"  },
+  { "adrep",           { NULL }, 3954,  "udp"  },
+  { "p2pcommunity",    { NULL }, 3955,  "tcp"  },
+  { "p2pcommunity",    { NULL }, 3955,  "udp"  },
+  { "gvcp",            { NULL }, 3956,  "tcp"  },
+  { "gvcp",            { NULL }, 3956,  "udp"  },
+  { "mqe-broker",      { NULL }, 3957,  "tcp"  },
+  { "mqe-broker",      { NULL }, 3957,  "udp"  },
+  { "mqe-agent",       { NULL }, 3958,  "tcp"  },
+  { "mqe-agent",       { NULL }, 3958,  "udp"  },
+  { "treehopper",      { NULL }, 3959,  "tcp"  },
+  { "treehopper",      { NULL }, 3959,  "udp"  },
+  { "bess",            { NULL }, 3960,  "tcp"  },
+  { "bess",            { NULL }, 3960,  "udp"  },
+  { "proaxess",        { NULL }, 3961,  "tcp"  },
+  { "proaxess",        { NULL }, 3961,  "udp"  },
+  { "sbi-agent",       { NULL }, 3962,  "tcp"  },
+  { "sbi-agent",       { NULL }, 3962,  "udp"  },
+  { "thrp",            { NULL }, 3963,  "tcp"  },
+  { "thrp",            { NULL }, 3963,  "udp"  },
+  { "sasggprs",        { NULL }, 3964,  "tcp"  },
+  { "sasggprs",        { NULL }, 3964,  "udp"  },
+  { "ati-ip-to-ncpe",  { NULL }, 3965,  "tcp"  },
+  { "ati-ip-to-ncpe",  { NULL }, 3965,  "udp"  },
+  { "bflckmgr",        { NULL }, 3966,  "tcp"  },
+  { "bflckmgr",        { NULL }, 3966,  "udp"  },
+  { "ppsms",           { NULL }, 3967,  "tcp"  },
+  { "ppsms",           { NULL }, 3967,  "udp"  },
+  { "ianywhere-dbns",  { NULL }, 3968,  "tcp"  },
+  { "ianywhere-dbns",  { NULL }, 3968,  "udp"  },
+  { "landmarks",       { NULL }, 3969,  "tcp"  },
+  { "landmarks",       { NULL }, 3969,  "udp"  },
+  { "lanrevagent",     { NULL }, 3970,  "tcp"  },
+  { "lanrevagent",     { NULL }, 3970,  "udp"  },
+  { "lanrevserver",    { NULL }, 3971,  "tcp"  },
+  { "lanrevserver",    { NULL }, 3971,  "udp"  },
+  { "iconp",           { NULL }, 3972,  "tcp"  },
+  { "iconp",           { NULL }, 3972,  "udp"  },
+  { "progistics",      { NULL }, 3973,  "tcp"  },
+  { "progistics",      { NULL }, 3973,  "udp"  },
+  { "citysearch",      { NULL }, 3974,  "tcp"  },
+  { "citysearch",      { NULL }, 3974,  "udp"  },
+  { "airshot",         { NULL }, 3975,  "tcp"  },
+  { "airshot",         { NULL }, 3975,  "udp"  },
+  { "opswagent",       { NULL }, 3976,  "tcp"  },
+  { "opswagent",       { NULL }, 3976,  "udp"  },
+  { "opswmanager",     { NULL }, 3977,  "tcp"  },
+  { "opswmanager",     { NULL }, 3977,  "udp"  },
+  { "secure-cfg-svr",  { NULL }, 3978,  "tcp"  },
+  { "secure-cfg-svr",  { NULL }, 3978,  "udp"  },
+  { "smwan",           { NULL }, 3979,  "tcp"  },
+  { "smwan",           { NULL }, 3979,  "udp"  },
+  { "acms",            { NULL }, 3980,  "tcp"  },
+  { "acms",            { NULL }, 3980,  "udp"  },
+  { "starfish",        { NULL }, 3981,  "tcp"  },
+  { "starfish",        { NULL }, 3981,  "udp"  },
+  { "eis",             { NULL }, 3982,  "tcp"  },
+  { "eis",             { NULL }, 3982,  "udp"  },
+  { "eisp",            { NULL }, 3983,  "tcp"  },
+  { "eisp",            { NULL }, 3983,  "udp"  },
+  { "mapper-nodemgr",  { NULL }, 3984,  "tcp"  },
+  { "mapper-nodemgr",  { NULL }, 3984,  "udp"  },
+  { "mapper-mapethd",  { NULL }, 3985,  "tcp"  },
+  { "mapper-mapethd",  { NULL }, 3985,  "udp"  },
+  { "mapper-ws_ethd",  { NULL }, 3986,  "tcp"  },
+  { "mapper-ws_ethd",  { NULL }, 3986,  "udp"  },
+  { "centerline",      { NULL }, 3987,  "tcp"  },
+  { "centerline",      { NULL }, 3987,  "udp"  },
+  { "dcs-config",      { NULL }, 3988,  "tcp"  },
+  { "dcs-config",      { NULL }, 3988,  "udp"  },
+  { "bv-queryengine",  { NULL }, 3989,  "tcp"  },
+  { "bv-queryengine",  { NULL }, 3989,  "udp"  },
+  { "bv-is",           { NULL }, 3990,  "tcp"  },
+  { "bv-is",           { NULL }, 3990,  "udp"  },
+  { "bv-smcsrv",       { NULL }, 3991,  "tcp"  },
+  { "bv-smcsrv",       { NULL }, 3991,  "udp"  },
+  { "bv-ds",           { NULL }, 3992,  "tcp"  },
+  { "bv-ds",           { NULL }, 3992,  "udp"  },
+  { "bv-agent",        { NULL }, 3993,  "tcp"  },
+  { "bv-agent",        { NULL }, 3993,  "udp"  },
+  { "iss-mgmt-ssl",    { NULL }, 3995,  "tcp"  },
+  { "iss-mgmt-ssl",    { NULL }, 3995,  "udp"  },
+  { "abcsoftware",     { NULL }, 3996,  "tcp"  },
+  { "abcsoftware",     { NULL }, 3996,  "udp"  },
+  { "agentsease-db",   { NULL }, 3997,  "tcp"  },
+  { "agentsease-db",   { NULL }, 3997,  "udp"  },
+  { "dnx",             { NULL }, 3998,  "tcp"  },
+  { "dnx",             { NULL }, 3998,  "udp"  },
+  { "nvcnet",          { NULL }, 3999,  "tcp"  },
+  { "nvcnet",          { NULL }, 3999,  "udp"  },
+  { "terabase",        { NULL }, 4000,  "tcp"  },
+  { "terabase",        { NULL }, 4000,  "udp"  },
+  { "newoak",          { NULL }, 4001,  "tcp"  },
+  { "newoak",          { NULL }, 4001,  "udp"  },
+  { "pxc-spvr-ft",     { NULL }, 4002,  "tcp"  },
+  { "pxc-spvr-ft",     { NULL }, 4002,  "udp"  },
+  { "pxc-splr-ft",     { NULL }, 4003,  "tcp"  },
+  { "pxc-splr-ft",     { NULL }, 4003,  "udp"  },
+  { "pxc-roid",        { NULL }, 4004,  "tcp"  },
+  { "pxc-roid",        { NULL }, 4004,  "udp"  },
+  { "pxc-pin",         { NULL }, 4005,  "tcp"  },
+  { "pxc-pin",         { NULL }, 4005,  "udp"  },
+  { "pxc-spvr",        { NULL }, 4006,  "tcp"  },
+  { "pxc-spvr",        { NULL }, 4006,  "udp"  },
+  { "pxc-splr",        { NULL }, 4007,  "tcp"  },
+  { "pxc-splr",        { NULL }, 4007,  "udp"  },
+  { "netcheque",       { NULL }, 4008,  "tcp"  },
+  { "netcheque",       { NULL }, 4008,  "udp"  },
+  { "chimera-hwm",     { NULL }, 4009,  "tcp"  },
+  { "chimera-hwm",     { NULL }, 4009,  "udp"  },
+  { "samsung-unidex",  { NULL }, 4010,  "tcp"  },
+  { "samsung-unidex",  { NULL }, 4010,  "udp"  },
+  { "altserviceboot",  { NULL }, 4011,  "tcp"  },
+  { "altserviceboot",  { NULL }, 4011,  "udp"  },
+  { "pda-gate",        { NULL }, 4012,  "tcp"  },
+  { "pda-gate",        { NULL }, 4012,  "udp"  },
+  { "acl-manager",     { NULL }, 4013,  "tcp"  },
+  { "acl-manager",     { NULL }, 4013,  "udp"  },
+  { "taiclock",        { NULL }, 4014,  "tcp"  },
+  { "taiclock",        { NULL }, 4014,  "udp"  },
+  { "talarian-mcast1", { NULL }, 4015,  "tcp"  },
+  { "talarian-mcast1", { NULL }, 4015,  "udp"  },
+  { "talarian-mcast2", { NULL }, 4016,  "tcp"  },
+  { "talarian-mcast2", { NULL }, 4016,  "udp"  },
+  { "talarian-mcast3", { NULL }, 4017,  "tcp"  },
+  { "talarian-mcast3", { NULL }, 4017,  "udp"  },
+  { "talarian-mcast4", { NULL }, 4018,  "tcp"  },
+  { "talarian-mcast4", { NULL }, 4018,  "udp"  },
+  { "talarian-mcast5", { NULL }, 4019,  "tcp"  },
+  { "talarian-mcast5", { NULL }, 4019,  "udp"  },
+  { "trap",            { NULL }, 4020,  "tcp"  },
+  { "trap",            { NULL }, 4020,  "udp"  },
+  { "nexus-portal",    { NULL }, 4021,  "tcp"  },
+  { "nexus-portal",    { NULL }, 4021,  "udp"  },
+  { "dnox",            { NULL }, 4022,  "tcp"  },
+  { "dnox",            { NULL }, 4022,  "udp"  },
+  { "esnm-zoning",     { NULL }, 4023,  "tcp"  },
+  { "esnm-zoning",     { NULL }, 4023,  "udp"  },
+  { "tnp1-port",       { NULL }, 4024,  "tcp"  },
+  { "tnp1-port",       { NULL }, 4024,  "udp"  },
+  { "partimage",       { NULL }, 4025,  "tcp"  },
+  { "partimage",       { NULL }, 4025,  "udp"  },
+  { "as-debug",        { NULL }, 4026,  "tcp"  },
+  { "as-debug",        { NULL }, 4026,  "udp"  },
+  { "bxp",             { NULL }, 4027,  "tcp"  },
+  { "bxp",             { NULL }, 4027,  "udp"  },
+  { "dtserver-port",   { NULL }, 4028,  "tcp"  },
+  { "dtserver-port",   { NULL }, 4028,  "udp"  },
+  { "ip-qsig",         { NULL }, 4029,  "tcp"  },
+  { "ip-qsig",         { NULL }, 4029,  "udp"  },
+  { "jdmn-port",       { NULL }, 4030,  "tcp"  },
+  { "jdmn-port",       { NULL }, 4030,  "udp"  },
+  { "suucp",           { NULL }, 4031,  "tcp"  },
+  { "suucp",           { NULL }, 4031,  "udp"  },
+  { "vrts-auth-port",  { NULL }, 4032,  "tcp"  },
+  { "vrts-auth-port",  { NULL }, 4032,  "udp"  },
+  { "sanavigator",     { NULL }, 4033,  "tcp"  },
+  { "sanavigator",     { NULL }, 4033,  "udp"  },
+  { "ubxd",            { NULL }, 4034,  "tcp"  },
+  { "ubxd",            { NULL }, 4034,  "udp"  },
+  { "wap-push-http",   { NULL }, 4035,  "tcp"  },
+  { "wap-push-http",   { NULL }, 4035,  "udp"  },
+  { "wap-push-https",  { NULL }, 4036,  "tcp"  },
+  { "wap-push-https",  { NULL }, 4036,  "udp"  },
+  { "ravehd",          { NULL }, 4037,  "tcp"  },
+  { "ravehd",          { NULL }, 4037,  "udp"  },
+  { "fazzt-ptp",       { NULL }, 4038,  "tcp"  },
+  { "fazzt-ptp",       { NULL }, 4038,  "udp"  },
+  { "fazzt-admin",     { NULL }, 4039,  "tcp"  },
+  { "fazzt-admin",     { NULL }, 4039,  "udp"  },
+  { "yo-main",         { NULL }, 4040,  "tcp"  },
+  { "yo-main",         { NULL }, 4040,  "udp"  },
+  { "houston",         { NULL }, 4041,  "tcp"  },
+  { "houston",         { NULL }, 4041,  "udp"  },
+  { "ldxp",            { NULL }, 4042,  "tcp"  },
+  { "ldxp",            { NULL }, 4042,  "udp"  },
+  { "nirp",            { NULL }, 4043,  "tcp"  },
+  { "nirp",            { NULL }, 4043,  "udp"  },
+  { "ltp",             { NULL }, 4044,  "tcp"  },
+  { "ltp",             { NULL }, 4044,  "udp"  },
+  { "npp",             { NULL }, 4045,  "tcp"  },
+  { "npp",             { NULL }, 4045,  "udp"  },
+  { "acp-proto",       { NULL }, 4046,  "tcp"  },
+  { "acp-proto",       { NULL }, 4046,  "udp"  },
+  { "ctp-state",       { NULL }, 4047,  "tcp"  },
+  { "ctp-state",       { NULL }, 4047,  "udp"  },
+  { "wafs",            { NULL }, 4049,  "tcp"  },
+  { "wafs",            { NULL }, 4049,  "udp"  },
+  { "cisco-wafs",      { NULL }, 4050,  "tcp"  },
+  { "cisco-wafs",      { NULL }, 4050,  "udp"  },
+  { "cppdp",           { NULL }, 4051,  "tcp"  },
+  { "cppdp",           { NULL }, 4051,  "udp"  },
+  { "interact",        { NULL }, 4052,  "tcp"  },
+  { "interact",        { NULL }, 4052,  "udp"  },
+  { "ccu-comm-1",      { NULL }, 4053,  "tcp"  },
+  { "ccu-comm-1",      { NULL }, 4053,  "udp"  },
+  { "ccu-comm-2",      { NULL }, 4054,  "tcp"  },
+  { "ccu-comm-2",      { NULL }, 4054,  "udp"  },
+  { "ccu-comm-3",      { NULL }, 4055,  "tcp"  },
+  { "ccu-comm-3",      { NULL }, 4055,  "udp"  },
+  { "lms",             { NULL }, 4056,  "tcp"  },
+  { "lms",             { NULL }, 4056,  "udp"  },
+  { "wfm",             { NULL }, 4057,  "tcp"  },
+  { "wfm",             { NULL }, 4057,  "udp"  },
+  { "kingfisher",      { NULL }, 4058,  "tcp"  },
+  { "kingfisher",      { NULL }, 4058,  "udp"  },
+  { "dlms-cosem",      { NULL }, 4059,  "tcp"  },
+  { "dlms-cosem",      { NULL }, 4059,  "udp"  },
+  { "dsmeter_iatc",    { NULL }, 4060,  "tcp"  },
+  { "dsmeter_iatc",    { NULL }, 4060,  "udp"  },
+  { "ice-location",    { NULL }, 4061,  "tcp"  },
+  { "ice-location",    { NULL }, 4061,  "udp"  },
+  { "ice-slocation",   { NULL }, 4062,  "tcp"  },
+  { "ice-slocation",   { NULL }, 4062,  "udp"  },
+  { "ice-router",      { NULL }, 4063,  "tcp"  },
+  { "ice-router",      { NULL }, 4063,  "udp"  },
+  { "ice-srouter",     { NULL }, 4064,  "tcp"  },
+  { "ice-srouter",     { NULL }, 4064,  "udp"  },
+  { "avanti_cdp",      { NULL }, 4065,  "tcp"  },
+  { "avanti_cdp",      { NULL }, 4065,  "udp"  },
+  { "pmas",            { NULL }, 4066,  "tcp"  },
+  { "pmas",            { NULL }, 4066,  "udp"  },
+  { "idp",             { NULL }, 4067,  "tcp"  },
+  { "idp",             { NULL }, 4067,  "udp"  },
+  { "ipfltbcst",       { NULL }, 4068,  "tcp"  },
+  { "ipfltbcst",       { NULL }, 4068,  "udp"  },
+  { "minger",          { NULL }, 4069,  "tcp"  },
+  { "minger",          { NULL }, 4069,  "udp"  },
+  { "tripe",           { NULL }, 4070,  "tcp"  },
+  { "tripe",           { NULL }, 4070,  "udp"  },
+  { "aibkup",          { NULL }, 4071,  "tcp"  },
+  { "aibkup",          { NULL }, 4071,  "udp"  },
+  { "zieto-sock",      { NULL }, 4072,  "tcp"  },
+  { "zieto-sock",      { NULL }, 4072,  "udp"  },
+  { "iRAPP",           { NULL }, 4073,  "tcp"  },
+  { "iRAPP",           { NULL }, 4073,  "udp"  },
+  { "cequint-cityid",  { NULL }, 4074,  "tcp"  },
+  { "cequint-cityid",  { NULL }, 4074,  "udp"  },
+  { "perimlan",        { NULL }, 4075,  "tcp"  },
+  { "perimlan",        { NULL }, 4075,  "udp"  },
+  { "seraph",          { NULL }, 4076,  "tcp"  },
+  { "seraph",          { NULL }, 4076,  "udp"  },
+  { "ascomalarm",      { NULL }, 4077,  "udp"  },
+  { "cssp",            { NULL }, 4078,  "tcp"  },
+  { "santools",        { NULL }, 4079,  "tcp"  },
+  { "santools",        { NULL }, 4079,  "udp"  },
+  { "lorica-in",       { NULL }, 4080,  "tcp"  },
+  { "lorica-in",       { NULL }, 4080,  "udp"  },
+  { "lorica-in-sec",   { NULL }, 4081,  "tcp"  },
+  { "lorica-in-sec",   { NULL }, 4081,  "udp"  },
+  { "lorica-out",      { NULL }, 4082,  "tcp"  },
+  { "lorica-out",      { NULL }, 4082,  "udp"  },
+  { "lorica-out-sec",  { NULL }, 4083,  "tcp"  },
+  { "lorica-out-sec",  { NULL }, 4083,  "udp"  },
+  { "fortisphere-vm",  { NULL }, 4084,  "udp"  },
+  { "ezmessagesrv",    { NULL }, 4085,  "tcp"  },
+  { "ftsync",          { NULL }, 4086,  "udp"  },
+  { "applusservice",   { NULL }, 4087,  "tcp"  },
+  { "npsp",            { NULL }, 4088,  "tcp"  },
+  { "opencore",        { NULL }, 4089,  "tcp"  },
+  { "opencore",        { NULL }, 4089,  "udp"  },
+  { "omasgport",       { NULL }, 4090,  "tcp"  },
+  { "omasgport",       { NULL }, 4090,  "udp"  },
+  { "ewinstaller",     { NULL }, 4091,  "tcp"  },
+  { "ewinstaller",     { NULL }, 4091,  "udp"  },
+  { "ewdgs",           { NULL }, 4092,  "tcp"  },
+  { "ewdgs",           { NULL }, 4092,  "udp"  },
+  { "pvxpluscs",       { NULL }, 4093,  "tcp"  },
+  { "pvxpluscs",       { NULL }, 4093,  "udp"  },
+  { "sysrqd",          { NULL }, 4094,  "tcp"  },
+  { "sysrqd",          { NULL }, 4094,  "udp"  },
+  { "xtgui",           { NULL }, 4095,  "tcp"  },
+  { "xtgui",           { NULL }, 4095,  "udp"  },
+  { "bre",             { NULL }, 4096,  "tcp"  },
+  { "bre",             { NULL }, 4096,  "udp"  },
+  { "patrolview",      { NULL }, 4097,  "tcp"  },
+  { "patrolview",      { NULL }, 4097,  "udp"  },
+  { "drmsfsd",         { NULL }, 4098,  "tcp"  },
+  { "drmsfsd",         { NULL }, 4098,  "udp"  },
+  { "dpcp",            { NULL }, 4099,  "tcp"  },
+  { "dpcp",            { NULL }, 4099,  "udp"  },
+  { "igo-incognito",   { NULL }, 4100,  "tcp"  },
+  { "igo-incognito",   { NULL }, 4100,  "udp"  },
+  { "brlp-0",          { NULL }, 4101,  "tcp"  },
+  { "brlp-0",          { NULL }, 4101,  "udp"  },
+  { "brlp-1",          { NULL }, 4102,  "tcp"  },
+  { "brlp-1",          { NULL }, 4102,  "udp"  },
+  { "brlp-2",          { NULL }, 4103,  "tcp"  },
+  { "brlp-2",          { NULL }, 4103,  "udp"  },
+  { "brlp-3",          { NULL }, 4104,  "tcp"  },
+  { "brlp-3",          { NULL }, 4104,  "udp"  },
+  { "shofarplayer",    { NULL }, 4105,  "tcp"  },
+  { "shofarplayer",    { NULL }, 4105,  "udp"  },
+  { "synchronite",     { NULL }, 4106,  "tcp"  },
+  { "synchronite",     { NULL }, 4106,  "udp"  },
+  { "j-ac",            { NULL }, 4107,  "tcp"  },
+  { "j-ac",            { NULL }, 4107,  "udp"  },
+  { "accel",           { NULL }, 4108,  "tcp"  },
+  { "accel",           { NULL }, 4108,  "udp"  },
+  { "izm",             { NULL }, 4109,  "tcp"  },
+  { "izm",             { NULL }, 4109,  "udp"  },
+  { "g2tag",           { NULL }, 4110,  "tcp"  },
+  { "g2tag",           { NULL }, 4110,  "udp"  },
+  { "xgrid",           { NULL }, 4111,  "tcp"  },
+  { "xgrid",           { NULL }, 4111,  "udp"  },
+  { "apple-vpns-rp",   { NULL }, 4112,  "tcp"  },
+  { "apple-vpns-rp",   { NULL }, 4112,  "udp"  },
+  { "aipn-reg",        { NULL }, 4113,  "tcp"  },
+  { "aipn-reg",        { NULL }, 4113,  "udp"  },
+  { "jomamqmonitor",   { NULL }, 4114,  "tcp"  },
+  { "jomamqmonitor",   { NULL }, 4114,  "udp"  },
+  { "cds",             { NULL }, 4115,  "tcp"  },
+  { "cds",             { NULL }, 4115,  "udp"  },
+  { "smartcard-tls",   { NULL }, 4116,  "tcp"  },
+  { "smartcard-tls",   { NULL }, 4116,  "udp"  },
+  { "hillrserv",       { NULL }, 4117,  "tcp"  },
+  { "hillrserv",       { NULL }, 4117,  "udp"  },
+  { "netscript",       { NULL }, 4118,  "tcp"  },
+  { "netscript",       { NULL }, 4118,  "udp"  },
+  { "assuria-slm",     { NULL }, 4119,  "tcp"  },
+  { "assuria-slm",     { NULL }, 4119,  "udp"  },
+  { "e-builder",       { NULL }, 4121,  "tcp"  },
+  { "e-builder",       { NULL }, 4121,  "udp"  },
+  { "fprams",          { NULL }, 4122,  "tcp"  },
+  { "fprams",          { NULL }, 4122,  "udp"  },
+  { "z-wave",          { NULL }, 4123,  "tcp"  },
+  { "z-wave",          { NULL }, 4123,  "udp"  },
+  { "tigv2",           { NULL }, 4124,  "tcp"  },
+  { "tigv2",           { NULL }, 4124,  "udp"  },
+  { "opsview-envoy",   { NULL }, 4125,  "tcp"  },
+  { "opsview-envoy",   { NULL }, 4125,  "udp"  },
+  { "ddrepl",          { NULL }, 4126,  "tcp"  },
+  { "ddrepl",          { NULL }, 4126,  "udp"  },
+  { "unikeypro",       { NULL }, 4127,  "tcp"  },
+  { "unikeypro",       { NULL }, 4127,  "udp"  },
+  { "nufw",            { NULL }, 4128,  "tcp"  },
+  { "nufw",            { NULL }, 4128,  "udp"  },
+  { "nuauth",          { NULL }, 4129,  "tcp"  },
+  { "nuauth",          { NULL }, 4129,  "udp"  },
+  { "fronet",          { NULL }, 4130,  "tcp"  },
+  { "fronet",          { NULL }, 4130,  "udp"  },
+  { "stars",           { NULL }, 4131,  "tcp"  },
+  { "stars",           { NULL }, 4131,  "udp"  },
+  { "nuts_dem",        { NULL }, 4132,  "tcp"  },
+  { "nuts_dem",        { NULL }, 4132,  "udp"  },
+  { "nuts_bootp",      { NULL }, 4133,  "tcp"  },
+  { "nuts_bootp",      { NULL }, 4133,  "udp"  },
+  { "nifty-hmi",       { NULL }, 4134,  "tcp"  },
+  { "nifty-hmi",       { NULL }, 4134,  "udp"  },
+  { "cl-db-attach",    { NULL }, 4135,  "tcp"  },
+  { "cl-db-attach",    { NULL }, 4135,  "udp"  },
+  { "cl-db-request",   { NULL }, 4136,  "tcp"  },
+  { "cl-db-request",   { NULL }, 4136,  "udp"  },
+  { "cl-db-remote",    { NULL }, 4137,  "tcp"  },
+  { "cl-db-remote",    { NULL }, 4137,  "udp"  },
+  { "nettest",         { NULL }, 4138,  "tcp"  },
+  { "nettest",         { NULL }, 4138,  "udp"  },
+  { "thrtx",           { NULL }, 4139,  "tcp"  },
+  { "thrtx",           { NULL }, 4139,  "udp"  },
+  { "cedros_fds",      { NULL }, 4140,  "tcp"  },
+  { "cedros_fds",      { NULL }, 4140,  "udp"  },
+  { "oirtgsvc",        { NULL }, 4141,  "tcp"  },
+  { "oirtgsvc",        { NULL }, 4141,  "udp"  },
+  { "oidocsvc",        { NULL }, 4142,  "tcp"  },
+  { "oidocsvc",        { NULL }, 4142,  "udp"  },
+  { "oidsr",           { NULL }, 4143,  "tcp"  },
+  { "oidsr",           { NULL }, 4143,  "udp"  },
+  { "vvr-control",     { NULL }, 4145,  "tcp"  },
+  { "vvr-control",     { NULL }, 4145,  "udp"  },
+  { "tgcconnect",      { NULL }, 4146,  "tcp"  },
+  { "tgcconnect",      { NULL }, 4146,  "udp"  },
+  { "vrxpservman",     { NULL }, 4147,  "tcp"  },
+  { "vrxpservman",     { NULL }, 4147,  "udp"  },
+  { "hhb-handheld",    { NULL }, 4148,  "tcp"  },
+  { "hhb-handheld",    { NULL }, 4148,  "udp"  },
+  { "agslb",           { NULL }, 4149,  "tcp"  },
+  { "agslb",           { NULL }, 4149,  "udp"  },
+  { "PowerAlert-nsa",  { NULL }, 4150,  "tcp"  },
+  { "PowerAlert-nsa",  { NULL }, 4150,  "udp"  },
+  { "menandmice_noh",  { NULL }, 4151,  "tcp"  },
+  { "menandmice_noh",  { NULL }, 4151,  "udp"  },
+  { "idig_mux",        { NULL }, 4152,  "tcp"  },
+  { "idig_mux",        { NULL }, 4152,  "udp"  },
+  { "mbl-battd",       { NULL }, 4153,  "tcp"  },
+  { "mbl-battd",       { NULL }, 4153,  "udp"  },
+  { "atlinks",         { NULL }, 4154,  "tcp"  },
+  { "atlinks",         { NULL }, 4154,  "udp"  },
+  { "bzr",             { NULL }, 4155,  "tcp"  },
+  { "bzr",             { NULL }, 4155,  "udp"  },
+  { "stat-results",    { NULL }, 4156,  "tcp"  },
+  { "stat-results",    { NULL }, 4156,  "udp"  },
+  { "stat-scanner",    { NULL }, 4157,  "tcp"  },
+  { "stat-scanner",    { NULL }, 4157,  "udp"  },
+  { "stat-cc",         { NULL }, 4158,  "tcp"  },
+  { "stat-cc",         { NULL }, 4158,  "udp"  },
+  { "nss",             { NULL }, 4159,  "tcp"  },
+  { "nss",             { NULL }, 4159,  "udp"  },
+  { "jini-discovery",  { NULL }, 4160,  "tcp"  },
+  { "jini-discovery",  { NULL }, 4160,  "udp"  },
+  { "omscontact",      { NULL }, 4161,  "tcp"  },
+  { "omscontact",      { NULL }, 4161,  "udp"  },
+  { "omstopology",     { NULL }, 4162,  "tcp"  },
+  { "omstopology",     { NULL }, 4162,  "udp"  },
+  { "silverpeakpeer",  { NULL }, 4163,  "tcp"  },
+  { "silverpeakpeer",  { NULL }, 4163,  "udp"  },
+  { "silverpeakcomm",  { NULL }, 4164,  "tcp"  },
+  { "silverpeakcomm",  { NULL }, 4164,  "udp"  },
+  { "altcp",           { NULL }, 4165,  "tcp"  },
+  { "altcp",           { NULL }, 4165,  "udp"  },
+  { "joost",           { NULL }, 4166,  "tcp"  },
+  { "joost",           { NULL }, 4166,  "udp"  },
+  { "ddgn",            { NULL }, 4167,  "tcp"  },
+  { "ddgn",            { NULL }, 4167,  "udp"  },
+  { "pslicser",        { NULL }, 4168,  "tcp"  },
+  { "pslicser",        { NULL }, 4168,  "udp"  },
+  { "iadt",            { NULL }, 4169,  "tcp"  },
+  { "iadt-disc",       { NULL }, 4169,  "udp"  },
+  { "d-cinema-csp",    { NULL }, 4170,  "tcp"  },
+  { "ml-svnet",        { NULL }, 4171,  "tcp"  },
+  { "pcoip",           { NULL }, 4172,  "tcp"  },
+  { "pcoip",           { NULL }, 4172,  "udp"  },
+  { "smcluster",       { NULL }, 4174,  "tcp"  },
+  { "bccp",            { NULL }, 4175,  "tcp"  },
+  { "tl-ipcproxy",     { NULL }, 4176,  "tcp"  },
+  { "wello",           { NULL }, 4177,  "tcp"  },
+  { "wello",           { NULL }, 4177,  "udp"  },
+  { "storman",         { NULL }, 4178,  "tcp"  },
+  { "storman",         { NULL }, 4178,  "udp"  },
+  { "MaxumSP",         { NULL }, 4179,  "tcp"  },
+  { "MaxumSP",         { NULL }, 4179,  "udp"  },
+  { "httpx",           { NULL }, 4180,  "tcp"  },
+  { "httpx",           { NULL }, 4180,  "udp"  },
+  { "macbak",          { NULL }, 4181,  "tcp"  },
+  { "macbak",          { NULL }, 4181,  "udp"  },
+  { "pcptcpservice",   { NULL }, 4182,  "tcp"  },
+  { "pcptcpservice",   { NULL }, 4182,  "udp"  },
+  { "gmmp",            { NULL }, 4183,  "tcp"  },
+  { "gmmp",            { NULL }, 4183,  "udp"  },
+  { "universe_suite",  { NULL }, 4184,  "tcp"  },
+  { "universe_suite",  { NULL }, 4184,  "udp"  },
+  { "wcpp",            { NULL }, 4185,  "tcp"  },
+  { "wcpp",            { NULL }, 4185,  "udp"  },
+  { "boxbackupstore",  { NULL }, 4186,  "tcp"  },
+  { "csc_proxy",       { NULL }, 4187,  "tcp"  },
+  { "vatata",          { NULL }, 4188,  "tcp"  },
+  { "vatata",          { NULL }, 4188,  "udp"  },
+  { "pcep",            { NULL }, 4189,  "tcp"  },
+  { "sieve",           { NULL }, 4190,  "tcp"  },
+  { "dsmipv6",         { NULL }, 4191,  "udp"  },
+  { "azeti",           { NULL }, 4192,  "tcp"  },
+  { "azeti-bd",        { NULL }, 4192,  "udp"  },
+  { "pvxplusio",       { NULL }, 4193,  "tcp"  },
+  { "eims-admin",      { NULL }, 4199,  "tcp"  },
+  { "eims-admin",      { NULL }, 4199,  "udp"  },
+  { "corelccam",       { NULL }, 4300,  "tcp"  },
+  { "corelccam",       { NULL }, 4300,  "udp"  },
+  { "d-data",          { NULL }, 4301,  "tcp"  },
+  { "d-data",          { NULL }, 4301,  "udp"  },
+  { "d-data-control",  { NULL }, 4302,  "tcp"  },
+  { "d-data-control",  { NULL }, 4302,  "udp"  },
+  { "srcp",            { NULL }, 4303,  "tcp"  },
+  { "srcp",            { NULL }, 4303,  "udp"  },
+  { "owserver",        { NULL }, 4304,  "tcp"  },
+  { "owserver",        { NULL }, 4304,  "udp"  },
+  { "batman",          { NULL }, 4305,  "tcp"  },
+  { "batman",          { NULL }, 4305,  "udp"  },
+  { "pinghgl",         { NULL }, 4306,  "tcp"  },
+  { "pinghgl",         { NULL }, 4306,  "udp"  },
+  { "visicron-vs",     { NULL }, 4307,  "tcp"  },
+  { "visicron-vs",     { NULL }, 4307,  "udp"  },
+  { "compx-lockview",  { NULL }, 4308,  "tcp"  },
+  { "compx-lockview",  { NULL }, 4308,  "udp"  },
+  { "dserver",         { NULL }, 4309,  "tcp"  },
+  { "dserver",         { NULL }, 4309,  "udp"  },
+  { "mirrtex",         { NULL }, 4310,  "tcp"  },
+  { "mirrtex",         { NULL }, 4310,  "udp"  },
+  { "p6ssmc",          { NULL }, 4311,  "tcp"  },
+  { "pscl-mgt",        { NULL }, 4312,  "tcp"  },
+  { "perrla",          { NULL }, 4313,  "tcp"  },
+  { "fdt-rcatp",       { NULL }, 4320,  "tcp"  },
+  { "fdt-rcatp",       { NULL }, 4320,  "udp"  },
+  { "rwhois",          { NULL }, 4321,  "tcp"  },
+  { "rwhois",          { NULL }, 4321,  "udp"  },
+  { "trim-event",      { NULL }, 4322,  "tcp"  },
+  { "trim-event",      { NULL }, 4322,  "udp"  },
+  { "trim-ice",        { NULL }, 4323,  "tcp"  },
+  { "trim-ice",        { NULL }, 4323,  "udp"  },
+  { "balour",          { NULL }, 4324,  "tcp"  },
+  { "balour",          { NULL }, 4324,  "udp"  },
+  { "geognosisman",    { NULL }, 4325,  "tcp"  },
+  { "geognosisman",    { NULL }, 4325,  "udp"  },
+  { "geognosis",       { NULL }, 4326,  "tcp"  },
+  { "geognosis",       { NULL }, 4326,  "udp"  },
+  { "jaxer-web",       { NULL }, 4327,  "tcp"  },
+  { "jaxer-web",       { NULL }, 4327,  "udp"  },
+  { "jaxer-manager",   { NULL }, 4328,  "tcp"  },
+  { "jaxer-manager",   { NULL }, 4328,  "udp"  },
+  { "publiqare-sync",  { NULL }, 4329,  "tcp"  },
+  { "gaia",            { NULL }, 4340,  "tcp"  },
+  { "gaia",            { NULL }, 4340,  "udp"  },
+  { "lisp-data",       { NULL }, 4341,  "tcp"  },
+  { "lisp-data",       { NULL }, 4341,  "udp"  },
+  { "lisp-cons",       { NULL }, 4342,  "tcp"  },
+  { "lisp-control",    { NULL }, 4342,  "udp"  },
+  { "unicall",         { NULL }, 4343,  "tcp"  },
+  { "unicall",         { NULL }, 4343,  "udp"  },
+  { "vinainstall",     { NULL }, 4344,  "tcp"  },
+  { "vinainstall",     { NULL }, 4344,  "udp"  },
+  { "m4-network-as",   { NULL }, 4345,  "tcp"  },
+  { "m4-network-as",   { NULL }, 4345,  "udp"  },
+  { "elanlm",          { NULL }, 4346,  "tcp"  },
+  { "elanlm",          { NULL }, 4346,  "udp"  },
+  { "lansurveyor",     { NULL }, 4347,  "tcp"  },
+  { "lansurveyor",     { NULL }, 4347,  "udp"  },
+  { "itose",           { NULL }, 4348,  "tcp"  },
+  { "itose",           { NULL }, 4348,  "udp"  },
+  { "fsportmap",       { NULL }, 4349,  "tcp"  },
+  { "fsportmap",       { NULL }, 4349,  "udp"  },
+  { "net-device",      { NULL }, 4350,  "tcp"  },
+  { "net-device",      { NULL }, 4350,  "udp"  },
+  { "plcy-net-svcs",   { NULL }, 4351,  "tcp"  },
+  { "plcy-net-svcs",   { NULL }, 4351,  "udp"  },
+  { "pjlink",          { NULL }, 4352,  "tcp"  },
+  { "pjlink",          { NULL }, 4352,  "udp"  },
+  { "f5-iquery",       { NULL }, 4353,  "tcp"  },
+  { "f5-iquery",       { NULL }, 4353,  "udp"  },
+  { "qsnet-trans",     { NULL }, 4354,  "tcp"  },
+  { "qsnet-trans",     { NULL }, 4354,  "udp"  },
+  { "qsnet-workst",    { NULL }, 4355,  "tcp"  },
+  { "qsnet-workst",    { NULL }, 4355,  "udp"  },
+  { "qsnet-assist",    { NULL }, 4356,  "tcp"  },
+  { "qsnet-assist",    { NULL }, 4356,  "udp"  },
+  { "qsnet-cond",      { NULL }, 4357,  "tcp"  },
+  { "qsnet-cond",      { NULL }, 4357,  "udp"  },
+  { "qsnet-nucl",      { NULL }, 4358,  "tcp"  },
+  { "qsnet-nucl",      { NULL }, 4358,  "udp"  },
+  { "omabcastltkm",    { NULL }, 4359,  "tcp"  },
+  { "omabcastltkm",    { NULL }, 4359,  "udp"  },
+  { "matrix_vnet",     { NULL }, 4360,  "tcp"  },
+  { "nacnl",           { NULL }, 4361,  "udp"  },
+  { "afore-vdp-disc",  { NULL }, 4362,  "udp"  },
+  { "wxbrief",         { NULL }, 4368,  "tcp"  },
+  { "wxbrief",         { NULL }, 4368,  "udp"  },
+  { "epmd",            { NULL }, 4369,  "tcp"  },
+  { "epmd",            { NULL }, 4369,  "udp"  },
+  { "elpro_tunnel",    { NULL }, 4370,  "tcp"  },
+  { "elpro_tunnel",    { NULL }, 4370,  "udp"  },
+  { "l2c-control",     { NULL }, 4371,  "tcp"  },
+  { "l2c-disc",        { NULL }, 4371,  "udp"  },
+  { "l2c-data",        { NULL }, 4372,  "tcp"  },
+  { "l2c-data",        { NULL }, 4372,  "udp"  },
+  { "remctl",          { NULL }, 4373,  "tcp"  },
+  { "remctl",          { NULL }, 4373,  "udp"  },
+  { "psi-ptt",         { NULL }, 4374,  "tcp"  },
+  { "tolteces",        { NULL }, 4375,  "tcp"  },
+  { "tolteces",        { NULL }, 4375,  "udp"  },
+  { "bip",             { NULL }, 4376,  "tcp"  },
+  { "bip",             { NULL }, 4376,  "udp"  },
+  { "cp-spxsvr",       { NULL }, 4377,  "tcp"  },
+  { "cp-spxsvr",       { NULL }, 4377,  "udp"  },
+  { "cp-spxdpy",       { NULL }, 4378,  "tcp"  },
+  { "cp-spxdpy",       { NULL }, 4378,  "udp"  },
+  { "ctdb",            { NULL }, 4379,  "tcp"  },
+  { "ctdb",            { NULL }, 4379,  "udp"  },
+  { "xandros-cms",     { NULL }, 4389,  "tcp"  },
+  { "xandros-cms",     { NULL }, 4389,  "udp"  },
+  { "wiegand",         { NULL }, 4390,  "tcp"  },
+  { "wiegand",         { NULL }, 4390,  "udp"  },
+  { "apwi-imserver",   { NULL }, 4391,  "tcp"  },
+  { "apwi-rxserver",   { NULL }, 4392,  "tcp"  },
+  { "apwi-rxspooler",  { NULL }, 4393,  "tcp"  },
+  { "apwi-disc",       { NULL }, 4394,  "udp"  },
+  { "omnivisionesx",   { NULL }, 4395,  "tcp"  },
+  { "omnivisionesx",   { NULL }, 4395,  "udp"  },
+  { "fly",             { NULL }, 4396,  "tcp"  },
+  { "ds-srv",          { NULL }, 4400,  "tcp"  },
+  { "ds-srv",          { NULL }, 4400,  "udp"  },
+  { "ds-srvr",         { NULL }, 4401,  "tcp"  },
+  { "ds-srvr",         { NULL }, 4401,  "udp"  },
+  { "ds-clnt",         { NULL }, 4402,  "tcp"  },
+  { "ds-clnt",         { NULL }, 4402,  "udp"  },
+  { "ds-user",         { NULL }, 4403,  "tcp"  },
+  { "ds-user",         { NULL }, 4403,  "udp"  },
+  { "ds-admin",        { NULL }, 4404,  "tcp"  },
+  { "ds-admin",        { NULL }, 4404,  "udp"  },
+  { "ds-mail",         { NULL }, 4405,  "tcp"  },
+  { "ds-mail",         { NULL }, 4405,  "udp"  },
+  { "ds-slp",          { NULL }, 4406,  "tcp"  },
+  { "ds-slp",          { NULL }, 4406,  "udp"  },
+  { "nacagent",        { NULL }, 4407,  "tcp"  },
+  { "slscc",           { NULL }, 4408,  "tcp"  },
+  { "netcabinet-com",  { NULL }, 4409,  "tcp"  },
+  { "itwo-server",     { NULL }, 4410,  "tcp"  },
+  { "netrockey6",      { NULL }, 4425,  "tcp"  },
+  { "netrockey6",      { NULL }, 4425,  "udp"  },
+  { "beacon-port-2",   { NULL }, 4426,  "tcp"  },
+  { "beacon-port-2",   { NULL }, 4426,  "udp"  },
+  { "drizzle",         { NULL }, 4427,  "tcp"  },
+  { "omviserver",      { NULL }, 4428,  "tcp"  },
+  { "omviagent",       { NULL }, 4429,  "tcp"  },
+  { "rsqlserver",      { NULL }, 4430,  "tcp"  },
+  { "rsqlserver",      { NULL }, 4430,  "udp"  },
+  { "wspipe",          { NULL }, 4431,  "tcp"  },
+  { "netblox",         { NULL }, 4441,  "udp"  },
+  { "saris",           { NULL }, 4442,  "tcp"  },
+  { "saris",           { NULL }, 4442,  "udp"  },
+  { "pharos",          { NULL }, 4443,  "tcp"  },
+  { "pharos",          { NULL }, 4443,  "udp"  },
+  { "krb524",          { NULL }, 4444,  "tcp"  },
+  { "krb524",          { NULL }, 4444,  "udp"  },
+  { "nv-video",        { NULL }, 4444,  "tcp"  },
+  { "nv-video",        { NULL }, 4444,  "udp"  },
+  { "upnotifyp",       { NULL }, 4445,  "tcp"  },
+  { "upnotifyp",       { NULL }, 4445,  "udp"  },
+  { "n1-fwp",          { NULL }, 4446,  "tcp"  },
+  { "n1-fwp",          { NULL }, 4446,  "udp"  },
+  { "n1-rmgmt",        { NULL }, 4447,  "tcp"  },
+  { "n1-rmgmt",        { NULL }, 4447,  "udp"  },
+  { "asc-slmd",        { NULL }, 4448,  "tcp"  },
+  { "asc-slmd",        { NULL }, 4448,  "udp"  },
+  { "privatewire",     { NULL }, 4449,  "tcp"  },
+  { "privatewire",     { NULL }, 4449,  "udp"  },
+  { "camp",            { NULL }, 4450,  "tcp"  },
+  { "camp",            { NULL }, 4450,  "udp"  },
+  { "ctisystemmsg",    { NULL }, 4451,  "tcp"  },
+  { "ctisystemmsg",    { NULL }, 4451,  "udp"  },
+  { "ctiprogramload",  { NULL }, 4452,  "tcp"  },
+  { "ctiprogramload",  { NULL }, 4452,  "udp"  },
+  { "nssalertmgr",     { NULL }, 4453,  "tcp"  },
+  { "nssalertmgr",     { NULL }, 4453,  "udp"  },
+  { "nssagentmgr",     { NULL }, 4454,  "tcp"  },
+  { "nssagentmgr",     { NULL }, 4454,  "udp"  },
+  { "prchat-user",     { NULL }, 4455,  "tcp"  },
+  { "prchat-user",     { NULL }, 4455,  "udp"  },
+  { "prchat-server",   { NULL }, 4456,  "tcp"  },
+  { "prchat-server",   { NULL }, 4456,  "udp"  },
+  { "prRegister",      { NULL }, 4457,  "tcp"  },
+  { "prRegister",      { NULL }, 4457,  "udp"  },
+  { "mcp",             { NULL }, 4458,  "tcp"  },
+  { "mcp",             { NULL }, 4458,  "udp"  },
+  { "hpssmgmt",        { NULL }, 4484,  "tcp"  },
+  { "hpssmgmt",        { NULL }, 4484,  "udp"  },
+  { "assyst-dr",       { NULL }, 4485,  "tcp"  },
+  { "icms",            { NULL }, 4486,  "tcp"  },
+  { "icms",            { NULL }, 4486,  "udp"  },
+  { "prex-tcp",        { NULL }, 4487,  "tcp"  },
+  { "awacs-ice",       { NULL }, 4488,  "tcp"  },
+  { "awacs-ice",       { NULL }, 4488,  "udp"  },
+  { "ipsec-nat-t",     { NULL }, 4500,  "tcp"  },
+  { "ipsec-nat-t",     { NULL }, 4500,  "udp"  },
+  { "ehs",             { NULL }, 4535,  "tcp"  },
+  { "ehs",             { NULL }, 4535,  "udp"  },
+  { "ehs-ssl",         { NULL }, 4536,  "tcp"  },
+  { "ehs-ssl",         { NULL }, 4536,  "udp"  },
+  { "wssauthsvc",      { NULL }, 4537,  "tcp"  },
+  { "wssauthsvc",      { NULL }, 4537,  "udp"  },
+  { "swx-gate",        { NULL }, 4538,  "tcp"  },
+  { "swx-gate",        { NULL }, 4538,  "udp"  },
+  { "worldscores",     { NULL }, 4545,  "tcp"  },
+  { "worldscores",     { NULL }, 4545,  "udp"  },
+  { "sf-lm",           { NULL }, 4546,  "tcp"  },
+  { "sf-lm",           { NULL }, 4546,  "udp"  },
+  { "lanner-lm",       { NULL }, 4547,  "tcp"  },
+  { "lanner-lm",       { NULL }, 4547,  "udp"  },
+  { "synchromesh",     { NULL }, 4548,  "tcp"  },
+  { "synchromesh",     { NULL }, 4548,  "udp"  },
+  { "aegate",          { NULL }, 4549,  "tcp"  },
+  { "aegate",          { NULL }, 4549,  "udp"  },
+  { "gds-adppiw-db",   { NULL }, 4550,  "tcp"  },
+  { "gds-adppiw-db",   { NULL }, 4550,  "udp"  },
+  { "ieee-mih",        { NULL }, 4551,  "tcp"  },
+  { "ieee-mih",        { NULL }, 4551,  "udp"  },
+  { "menandmice-mon",  { NULL }, 4552,  "tcp"  },
+  { "menandmice-mon",  { NULL }, 4552,  "udp"  },
+  { "icshostsvc",      { NULL }, 4553,  "tcp"  },
+  { "msfrs",           { NULL }, 4554,  "tcp"  },
+  { "msfrs",           { NULL }, 4554,  "udp"  },
+  { "rsip",            { NULL }, 4555,  "tcp"  },
+  { "rsip",            { NULL }, 4555,  "udp"  },
+  { "dtn-bundle-tcp",  { NULL }, 4556,  "tcp"  },
+  { "dtn-bundle-udp",  { NULL }, 4556,  "udp"  },
+  { "mtcevrunqss",     { NULL }, 4557,  "udp"  },
+  { "mtcevrunqman",    { NULL }, 4558,  "udp"  },
+  { "hylafax",         { NULL }, 4559,  "tcp"  },
+  { "hylafax",         { NULL }, 4559,  "udp"  },
+  { "kwtc",            { NULL }, 4566,  "tcp"  },
+  { "kwtc",            { NULL }, 4566,  "udp"  },
+  { "tram",            { NULL }, 4567,  "tcp"  },
+  { "tram",            { NULL }, 4567,  "udp"  },
+  { "bmc-reporting",   { NULL }, 4568,  "tcp"  },
+  { "bmc-reporting",   { NULL }, 4568,  "udp"  },
+  { "iax",             { NULL }, 4569,  "tcp"  },
+  { "iax",             { NULL }, 4569,  "udp"  },
+  { "rid",             { NULL }, 4590,  "tcp"  },
+  { "l3t-at-an",       { NULL }, 4591,  "tcp"  },
+  { "l3t-at-an",       { NULL }, 4591,  "udp"  },
+  { "hrpd-ith-at-an",  { NULL }, 4592,  "udp"  },
+  { "ipt-anri-anri",   { NULL }, 4593,  "tcp"  },
+  { "ipt-anri-anri",   { NULL }, 4593,  "udp"  },
+  { "ias-session",     { NULL }, 4594,  "tcp"  },
+  { "ias-session",     { NULL }, 4594,  "udp"  },
+  { "ias-paging",      { NULL }, 4595,  "tcp"  },
+  { "ias-paging",      { NULL }, 4595,  "udp"  },
+  { "ias-neighbor",    { NULL }, 4596,  "tcp"  },
+  { "ias-neighbor",    { NULL }, 4596,  "udp"  },
+  { "a21-an-1xbs",     { NULL }, 4597,  "tcp"  },
+  { "a21-an-1xbs",     { NULL }, 4597,  "udp"  },
+  { "a16-an-an",       { NULL }, 4598,  "tcp"  },
+  { "a16-an-an",       { NULL }, 4598,  "udp"  },
+  { "a17-an-an",       { NULL }, 4599,  "tcp"  },
+  { "a17-an-an",       { NULL }, 4599,  "udp"  },
+  { "piranha1",        { NULL }, 4600,  "tcp"  },
+  { "piranha1",        { NULL }, 4600,  "udp"  },
+  { "piranha2",        { NULL }, 4601,  "tcp"  },
+  { "piranha2",        { NULL }, 4601,  "udp"  },
+  { "mtsserver",       { NULL }, 4602,  "tcp"  },
+  { "menandmice-upg",  { NULL }, 4603,  "tcp"  },
+  { "playsta2-app",    { NULL }, 4658,  "tcp"  },
+  { "playsta2-app",    { NULL }, 4658,  "udp"  },
+  { "playsta2-lob",    { NULL }, 4659,  "tcp"  },
+  { "playsta2-lob",    { NULL }, 4659,  "udp"  },
+  { "smaclmgr",        { NULL }, 4660,  "tcp"  },
+  { "smaclmgr",        { NULL }, 4660,  "udp"  },
+  { "kar2ouche",       { NULL }, 4661,  "tcp"  },
+  { "kar2ouche",       { NULL }, 4661,  "udp"  },
+  { "oms",             { NULL }, 4662,  "tcp"  },
+  { "oms",             { NULL }, 4662,  "udp"  },
+  { "noteit",          { NULL }, 4663,  "tcp"  },
+  { "noteit",          { NULL }, 4663,  "udp"  },
+  { "ems",             { NULL }, 4664,  "tcp"  },
+  { "ems",             { NULL }, 4664,  "udp"  },
+  { "contclientms",    { NULL }, 4665,  "tcp"  },
+  { "contclientms",    { NULL }, 4665,  "udp"  },
+  { "eportcomm",       { NULL }, 4666,  "tcp"  },
+  { "eportcomm",       { NULL }, 4666,  "udp"  },
+  { "mmacomm",         { NULL }, 4667,  "tcp"  },
+  { "mmacomm",         { NULL }, 4667,  "udp"  },
+  { "mmaeds",          { NULL }, 4668,  "tcp"  },
+  { "mmaeds",          { NULL }, 4668,  "udp"  },
+  { "eportcommdata",   { NULL }, 4669,  "tcp"  },
+  { "eportcommdata",   { NULL }, 4669,  "udp"  },
+  { "light",           { NULL }, 4670,  "tcp"  },
+  { "light",           { NULL }, 4670,  "udp"  },
+  { "acter",           { NULL }, 4671,  "tcp"  },
+  { "acter",           { NULL }, 4671,  "udp"  },
+  { "rfa",             { NULL }, 4672,  "tcp"  },
+  { "rfa",             { NULL }, 4672,  "udp"  },
+  { "cxws",            { NULL }, 4673,  "tcp"  },
+  { "cxws",            { NULL }, 4673,  "udp"  },
+  { "appiq-mgmt",      { NULL }, 4674,  "tcp"  },
+  { "appiq-mgmt",      { NULL }, 4674,  "udp"  },
+  { "dhct-status",     { NULL }, 4675,  "tcp"  },
+  { "dhct-status",     { NULL }, 4675,  "udp"  },
+  { "dhct-alerts",     { NULL }, 4676,  "tcp"  },
+  { "dhct-alerts",     { NULL }, 4676,  "udp"  },
+  { "bcs",             { NULL }, 4677,  "tcp"  },
+  { "bcs",             { NULL }, 4677,  "udp"  },
+  { "traversal",       { NULL }, 4678,  "tcp"  },
+  { "traversal",       { NULL }, 4678,  "udp"  },
+  { "mgesupervision",  { NULL }, 4679,  "tcp"  },
+  { "mgesupervision",  { NULL }, 4679,  "udp"  },
+  { "mgemanagement",   { NULL }, 4680,  "tcp"  },
+  { "mgemanagement",   { NULL }, 4680,  "udp"  },
+  { "parliant",        { NULL }, 4681,  "tcp"  },
+  { "parliant",        { NULL }, 4681,  "udp"  },
+  { "finisar",         { NULL }, 4682,  "tcp"  },
+  { "finisar",         { NULL }, 4682,  "udp"  },
+  { "spike",           { NULL }, 4683,  "tcp"  },
+  { "spike",           { NULL }, 4683,  "udp"  },
+  { "rfid-rp1",        { NULL }, 4684,  "tcp"  },
+  { "rfid-rp1",        { NULL }, 4684,  "udp"  },
+  { "autopac",         { NULL }, 4685,  "tcp"  },
+  { "autopac",         { NULL }, 4685,  "udp"  },
+  { "msp-os",          { NULL }, 4686,  "tcp"  },
+  { "msp-os",          { NULL }, 4686,  "udp"  },
+  { "nst",             { NULL }, 4687,  "tcp"  },
+  { "nst",             { NULL }, 4687,  "udp"  },
+  { "mobile-p2p",      { NULL }, 4688,  "tcp"  },
+  { "mobile-p2p",      { NULL }, 4688,  "udp"  },
+  { "altovacentral",   { NULL }, 4689,  "tcp"  },
+  { "altovacentral",   { NULL }, 4689,  "udp"  },
+  { "prelude",         { NULL }, 4690,  "tcp"  },
+  { "prelude",         { NULL }, 4690,  "udp"  },
+  { "mtn",             { NULL }, 4691,  "tcp"  },
+  { "mtn",             { NULL }, 4691,  "udp"  },
+  { "conspiracy",      { NULL }, 4692,  "tcp"  },
+  { "conspiracy",      { NULL }, 4692,  "udp"  },
+  { "netxms-agent",    { NULL }, 4700,  "tcp"  },
+  { "netxms-agent",    { NULL }, 4700,  "udp"  },
+  { "netxms-mgmt",     { NULL }, 4701,  "tcp"  },
+  { "netxms-mgmt",     { NULL }, 4701,  "udp"  },
+  { "netxms-sync",     { NULL }, 4702,  "tcp"  },
+  { "netxms-sync",     { NULL }, 4702,  "udp"  },
+  { "npqes-test",      { NULL }, 4703,  "tcp"  },
+  { "assuria-ins",     { NULL }, 4704,  "tcp"  },
+  { "truckstar",       { NULL }, 4725,  "tcp"  },
+  { "truckstar",       { NULL }, 4725,  "udp"  },
+  { "a26-fap-fgw",     { NULL }, 4726,  "udp"  },
+  { "fcis",            { NULL }, 4727,  "tcp"  },
+  { "fcis-disc",       { NULL }, 4727,  "udp"  },
+  { "capmux",          { NULL }, 4728,  "tcp"  },
+  { "capmux",          { NULL }, 4728,  "udp"  },
+  { "gsmtap",          { NULL }, 4729,  "udp"  },
+  { "gearman",         { NULL }, 4730,  "tcp"  },
+  { "gearman",         { NULL }, 4730,  "udp"  },
+  { "remcap",          { NULL }, 4731,  "tcp"  },
+  { "ohmtrigger",      { NULL }, 4732,  "udp"  },
+  { "resorcs",         { NULL }, 4733,  "tcp"  },
+  { "ipdr-sp",         { NULL }, 4737,  "tcp"  },
+  { "ipdr-sp",         { NULL }, 4737,  "udp"  },
+  { "solera-lpn",      { NULL }, 4738,  "tcp"  },
+  { "solera-lpn",      { NULL }, 4738,  "udp"  },
+  { "ipfix",           { NULL }, 4739,  "tcp"  },
+  { "ipfix",           { NULL }, 4739,  "udp"  },
+  { "ipfix",           { NULL }, 4739,  "sctp" },
+  { "ipfixs",          { NULL }, 4740,  "tcp"  },
+  { "ipfixs",          { NULL }, 4740,  "sctp" },
+  { "ipfixs",          { NULL }, 4740,  "udp"  },
+  { "lumimgrd",        { NULL }, 4741,  "tcp"  },
+  { "lumimgrd",        { NULL }, 4741,  "udp"  },
+  { "sicct",           { NULL }, 4742,  "tcp"  },
+  { "sicct-sdp",       { NULL }, 4742,  "udp"  },
+  { "openhpid",        { NULL }, 4743,  "tcp"  },
+  { "openhpid",        { NULL }, 4743,  "udp"  },
+  { "ifsp",            { NULL }, 4744,  "tcp"  },
+  { "ifsp",            { NULL }, 4744,  "udp"  },
+  { "fmp",             { NULL }, 4745,  "tcp"  },
+  { "fmp",             { NULL }, 4745,  "udp"  },
+  { "profilemac",      { NULL }, 4749,  "tcp"  },
+  { "profilemac",      { NULL }, 4749,  "udp"  },
+  { "ssad",            { NULL }, 4750,  "tcp"  },
+  { "ssad",            { NULL }, 4750,  "udp"  },
+  { "spocp",           { NULL }, 4751,  "tcp"  },
+  { "spocp",           { NULL }, 4751,  "udp"  },
+  { "snap",            { NULL }, 4752,  "tcp"  },
+  { "snap",            { NULL }, 4752,  "udp"  },
+  { "bfd-multi-ctl",   { NULL }, 4784,  "tcp"  },
+  { "bfd-multi-ctl",   { NULL }, 4784,  "udp"  },
+  { "cncp",            { NULL }, 4785,  "udp"  },
+  { "smart-install",   { NULL }, 4786,  "tcp"  },
+  { "sia-ctrl-plane",  { NULL }, 4787,  "tcp"  },
+  { "iims",            { NULL }, 4800,  "tcp"  },
+  { "iims",            { NULL }, 4800,  "udp"  },
+  { "iwec",            { NULL }, 4801,  "tcp"  },
+  { "iwec",            { NULL }, 4801,  "udp"  },
+  { "ilss",            { NULL }, 4802,  "tcp"  },
+  { "ilss",            { NULL }, 4802,  "udp"  },
+  { "notateit",        { NULL }, 4803,  "tcp"  },
+  { "notateit-disc",   { NULL }, 4803,  "udp"  },
+  { "aja-ntv4-disc",   { NULL }, 4804,  "udp"  },
+  { "htcp",            { NULL }, 4827,  "tcp"  },
+  { "htcp",            { NULL }, 4827,  "udp"  },
+  { "varadero-0",      { NULL }, 4837,  "tcp"  },
+  { "varadero-0",      { NULL }, 4837,  "udp"  },
+  { "varadero-1",      { NULL }, 4838,  "tcp"  },
+  { "varadero-1",      { NULL }, 4838,  "udp"  },
+  { "varadero-2",      { NULL }, 4839,  "tcp"  },
+  { "varadero-2",      { NULL }, 4839,  "udp"  },
+  { "opcua-tcp",       { NULL }, 4840,  "tcp"  },
+  { "opcua-udp",       { NULL }, 4840,  "udp"  },
+  { "quosa",           { NULL }, 4841,  "tcp"  },
+  { "quosa",           { NULL }, 4841,  "udp"  },
+  { "gw-asv",          { NULL }, 4842,  "tcp"  },
+  { "gw-asv",          { NULL }, 4842,  "udp"  },
+  { "opcua-tls",       { NULL }, 4843,  "tcp"  },
+  { "opcua-tls",       { NULL }, 4843,  "udp"  },
+  { "gw-log",          { NULL }, 4844,  "tcp"  },
+  { "gw-log",          { NULL }, 4844,  "udp"  },
+  { "wcr-remlib",      { NULL }, 4845,  "tcp"  },
+  { "wcr-remlib",      { NULL }, 4845,  "udp"  },
+  { "contamac_icm",    { NULL }, 4846,  "tcp"  },
+  { "contamac_icm",    { NULL }, 4846,  "udp"  },
+  { "wfc",             { NULL }, 4847,  "tcp"  },
+  { "wfc",             { NULL }, 4847,  "udp"  },
+  { "appserv-http",    { NULL }, 4848,  "tcp"  },
+  { "appserv-http",    { NULL }, 4848,  "udp"  },
+  { "appserv-https",   { NULL }, 4849,  "tcp"  },
+  { "appserv-https",   { NULL }, 4849,  "udp"  },
+  { "sun-as-nodeagt",  { NULL }, 4850,  "tcp"  },
+  { "sun-as-nodeagt",  { NULL }, 4850,  "udp"  },
+  { "derby-repli",     { NULL }, 4851,  "tcp"  },
+  { "derby-repli",     { NULL }, 4851,  "udp"  },
+  { "unify-debug",     { NULL }, 4867,  "tcp"  },
+  { "unify-debug",     { NULL }, 4867,  "udp"  },
+  { "phrelay",         { NULL }, 4868,  "tcp"  },
+  { "phrelay",         { NULL }, 4868,  "udp"  },
+  { "phrelaydbg",      { NULL }, 4869,  "tcp"  },
+  { "phrelaydbg",      { NULL }, 4869,  "udp"  },
+  { "cc-tracking",     { NULL }, 4870,  "tcp"  },
+  { "cc-tracking",     { NULL }, 4870,  "udp"  },
+  { "wired",           { NULL }, 4871,  "tcp"  },
+  { "wired",           { NULL }, 4871,  "udp"  },
+  { "tritium-can",     { NULL }, 4876,  "tcp"  },
+  { "tritium-can",     { NULL }, 4876,  "udp"  },
+  { "lmcs",            { NULL }, 4877,  "tcp"  },
+  { "lmcs",            { NULL }, 4877,  "udp"  },
+  { "inst-discovery",  { NULL }, 4878,  "udp"  },
+  { "wsdl-event",      { NULL }, 4879,  "tcp"  },
+  { "hislip",          { NULL }, 4880,  "tcp"  },
+  { "socp-t",          { NULL }, 4881,  "udp"  },
+  { "socp-c",          { NULL }, 4882,  "udp"  },
+  { "wmlserver",       { NULL }, 4883,  "tcp"  },
+  { "hivestor",        { NULL }, 4884,  "tcp"  },
+  { "hivestor",        { NULL }, 4884,  "udp"  },
+  { "abbs",            { NULL }, 4885,  "tcp"  },
+  { "abbs",            { NULL }, 4885,  "udp"  },
+  { "lyskom",          { NULL }, 4894,  "tcp"  },
+  { "lyskom",          { NULL }, 4894,  "udp"  },
+  { "radmin-port",     { NULL }, 4899,  "tcp"  },
+  { "radmin-port",     { NULL }, 4899,  "udp"  },
+  { "hfcs",            { NULL }, 4900,  "tcp"  },
+  { "hfcs",            { NULL }, 4900,  "udp"  },
+  { "flr_agent",       { NULL }, 4901,  "tcp"  },
+  { "magiccontrol",    { NULL }, 4902,  "tcp"  },
+  { "lutap",           { NULL }, 4912,  "tcp"  },
+  { "lutcp",           { NULL }, 4913,  "tcp"  },
+  { "bones",           { NULL }, 4914,  "tcp"  },
+  { "bones",           { NULL }, 4914,  "udp"  },
+  { "frcs",            { NULL }, 4915,  "tcp"  },
+  { "atsc-mh-ssc",     { NULL }, 4937,  "udp"  },
+  { "eq-office-4940",  { NULL }, 4940,  "tcp"  },
+  { "eq-office-4940",  { NULL }, 4940,  "udp"  },
+  { "eq-office-4941",  { NULL }, 4941,  "tcp"  },
+  { "eq-office-4941",  { NULL }, 4941,  "udp"  },
+  { "eq-office-4942",  { NULL }, 4942,  "tcp"  },
+  { "eq-office-4942",  { NULL }, 4942,  "udp"  },
+  { "munin",           { NULL }, 4949,  "tcp"  },
+  { "munin",           { NULL }, 4949,  "udp"  },
+  { "sybasesrvmon",    { NULL }, 4950,  "tcp"  },
+  { "sybasesrvmon",    { NULL }, 4950,  "udp"  },
+  { "pwgwims",         { NULL }, 4951,  "tcp"  },
+  { "pwgwims",         { NULL }, 4951,  "udp"  },
+  { "sagxtsds",        { NULL }, 4952,  "tcp"  },
+  { "sagxtsds",        { NULL }, 4952,  "udp"  },
+  { "dbsyncarbiter",   { NULL }, 4953,  "tcp"  },
+  { "ccss-qmm",        { NULL }, 4969,  "tcp"  },
+  { "ccss-qmm",        { NULL }, 4969,  "udp"  },
+  { "ccss-qsm",        { NULL }, 4970,  "tcp"  },
+  { "ccss-qsm",        { NULL }, 4970,  "udp"  },
+  { "webyast",         { NULL }, 4984,  "tcp"  },
+  { "gerhcs",          { NULL }, 4985,  "tcp"  },
+  { "mrip",            { NULL }, 4986,  "tcp"  },
+  { "mrip",            { NULL }, 4986,  "udp"  },
+  { "smar-se-port1",   { NULL }, 4987,  "tcp"  },
+  { "smar-se-port1",   { NULL }, 4987,  "udp"  },
+  { "smar-se-port2",   { NULL }, 4988,  "tcp"  },
+  { "smar-se-port2",   { NULL }, 4988,  "udp"  },
+  { "parallel",        { NULL }, 4989,  "tcp"  },
+  { "parallel",        { NULL }, 4989,  "udp"  },
+  { "busycal",         { NULL }, 4990,  "tcp"  },
+  { "busycal",         { NULL }, 4990,  "udp"  },
+  { "vrt",             { NULL }, 4991,  "tcp"  },
+  { "vrt",             { NULL }, 4991,  "udp"  },
+  { "hfcs-manager",    { NULL }, 4999,  "tcp"  },
+  { "hfcs-manager",    { NULL }, 4999,  "udp"  },
+  { "commplex-main",   { NULL }, 5000,  "tcp"  },
+  { "commplex-main",   { NULL }, 5000,  "udp"  },
+  { "commplex-link",   { NULL }, 5001,  "tcp"  },
+  { "commplex-link",   { NULL }, 5001,  "udp"  },
+  { "rfe",             { NULL }, 5002,  "tcp"  },
+  { "rfe",             { NULL }, 5002,  "udp"  },
+  { "fmpro-internal",  { NULL }, 5003,  "tcp"  },
+  { "fmpro-internal",  { NULL }, 5003,  "udp"  },
+  { "avt-profile-1",   { NULL }, 5004,  "tcp"  },
+  { "avt-profile-1",   { NULL }, 5004,  "udp"  },
+  { "avt-profile-1",   { NULL }, 5004,  "dccp" },
+  { "avt-profile-2",   { NULL }, 5005,  "tcp"  },
+  { "avt-profile-2",   { NULL }, 5005,  "udp"  },
+  { "avt-profile-2",   { NULL }, 5005,  "dccp" },
+  { "wsm-server",      { NULL }, 5006,  "tcp"  },
+  { "wsm-server",      { NULL }, 5006,  "udp"  },
+  { "wsm-server-ssl",  { NULL }, 5007,  "tcp"  },
+  { "wsm-server-ssl",  { NULL }, 5007,  "udp"  },
+  { "synapsis-edge",   { NULL }, 5008,  "tcp"  },
+  { "synapsis-edge",   { NULL }, 5008,  "udp"  },
+  { "winfs",           { NULL }, 5009,  "tcp"  },
+  { "winfs",           { NULL }, 5009,  "udp"  },
+  { "telelpathstart",  { NULL }, 5010,  "tcp"  },
+  { "telelpathstart",  { NULL }, 5010,  "udp"  },
+  { "telelpathattack", { NULL }, 5011,  "tcp"  },
+  { "telelpathattack", { NULL }, 5011,  "udp"  },
+  { "nsp",             { NULL }, 5012,  "tcp"  },
+  { "nsp",             { NULL }, 5012,  "udp"  },
+  { "fmpro-v6",        { NULL }, 5013,  "tcp"  },
+  { "fmpro-v6",        { NULL }, 5013,  "udp"  },
+  { "onpsocket",       { NULL }, 5014,  "udp"  },
+  { "fmwp",            { NULL }, 5015,  "tcp"  },
+  { "zenginkyo-1",     { NULL }, 5020,  "tcp"  },
+  { "zenginkyo-1",     { NULL }, 5020,  "udp"  },
+  { "zenginkyo-2",     { NULL }, 5021,  "tcp"  },
+  { "zenginkyo-2",     { NULL }, 5021,  "udp"  },
+  { "mice",            { NULL }, 5022,  "tcp"  },
+  { "mice",            { NULL }, 5022,  "udp"  },
+  { "htuilsrv",        { NULL }, 5023,  "tcp"  },
+  { "htuilsrv",        { NULL }, 5023,  "udp"  },
+  { "scpi-telnet",     { NULL }, 5024,  "tcp"  },
+  { "scpi-telnet",     { NULL }, 5024,  "udp"  },
+  { "scpi-raw",        { NULL }, 5025,  "tcp"  },
+  { "scpi-raw",        { NULL }, 5025,  "udp"  },
+  { "strexec-d",       { NULL }, 5026,  "tcp"  },
+  { "strexec-d",       { NULL }, 5026,  "udp"  },
+  { "strexec-s",       { NULL }, 5027,  "tcp"  },
+  { "strexec-s",       { NULL }, 5027,  "udp"  },
+  { "qvr",             { NULL }, 5028,  "tcp"  },
+  { "infobright",      { NULL }, 5029,  "tcp"  },
+  { "infobright",      { NULL }, 5029,  "udp"  },
+  { "surfpass",        { NULL }, 5030,  "tcp"  },
+  { "surfpass",        { NULL }, 5030,  "udp"  },
+  { "dmp",             { NULL }, 5031,  "udp"  },
+  { "asnaacceler8db",  { NULL }, 5042,  "tcp"  },
+  { "asnaacceler8db",  { NULL }, 5042,  "udp"  },
+  { "swxadmin",        { NULL }, 5043,  "tcp"  },
+  { "swxadmin",        { NULL }, 5043,  "udp"  },
+  { "lxi-evntsvc",     { NULL }, 5044,  "tcp"  },
+  { "lxi-evntsvc",     { NULL }, 5044,  "udp"  },
+  { "osp",             { NULL }, 5045,  "tcp"  },
+  { "vpm-udp",         { NULL }, 5046,  "udp"  },
+  { "iscape",          { NULL }, 5047,  "udp"  },
+  { "texai",           { NULL }, 5048,  "tcp"  },
+  { "ivocalize",       { NULL }, 5049,  "tcp"  },
+  { "ivocalize",       { NULL }, 5049,  "udp"  },
+  { "mmcc",            { NULL }, 5050,  "tcp"  },
+  { "mmcc",            { NULL }, 5050,  "udp"  },
+  { "ita-agent",       { NULL }, 5051,  "tcp"  },
+  { "ita-agent",       { NULL }, 5051,  "udp"  },
+  { "ita-manager",     { NULL }, 5052,  "tcp"  },
+  { "ita-manager",     { NULL }, 5052,  "udp"  },
+  { "rlm",             { NULL }, 5053,  "tcp"  },
+  { "rlm-admin",       { NULL }, 5054,  "tcp"  },
+  { "unot",            { NULL }, 5055,  "tcp"  },
+  { "unot",            { NULL }, 5055,  "udp"  },
+  { "intecom-ps1",     { NULL }, 5056,  "tcp"  },
+  { "intecom-ps1",     { NULL }, 5056,  "udp"  },
+  { "intecom-ps2",     { NULL }, 5057,  "tcp"  },
+  { "intecom-ps2",     { NULL }, 5057,  "udp"  },
+  { "locus-disc",      { NULL }, 5058,  "udp"  },
+  { "sds",             { NULL }, 5059,  "tcp"  },
+  { "sds",             { NULL }, 5059,  "udp"  },
+  { "sip",             { NULL }, 5060,  "tcp"  },
+  { "sip",             { NULL }, 5060,  "udp"  },
+  { "sip-tls",         { NULL }, 5061,  "tcp"  },
+  { "sip-tls",         { NULL }, 5061,  "udp"  },
+  { "na-localise",     { NULL }, 5062,  "tcp"  },
+  { "na-localise",     { NULL }, 5062,  "udp"  },
+  { "csrpc",           { NULL }, 5063,  "tcp"  },
+  { "ca-1",            { NULL }, 5064,  "tcp"  },
+  { "ca-1",            { NULL }, 5064,  "udp"  },
+  { "ca-2",            { NULL }, 5065,  "tcp"  },
+  { "ca-2",            { NULL }, 5065,  "udp"  },
+  { "stanag-5066",     { NULL }, 5066,  "tcp"  },
+  { "stanag-5066",     { NULL }, 5066,  "udp"  },
+  { "authentx",        { NULL }, 5067,  "tcp"  },
+  { "authentx",        { NULL }, 5067,  "udp"  },
+  { "bitforestsrv",    { NULL }, 5068,  "tcp"  },
+  { "i-net-2000-npr",  { NULL }, 5069,  "tcp"  },
+  { "i-net-2000-npr",  { NULL }, 5069,  "udp"  },
+  { "vtsas",           { NULL }, 5070,  "tcp"  },
+  { "vtsas",           { NULL }, 5070,  "udp"  },
+  { "powerschool",     { NULL }, 5071,  "tcp"  },
+  { "powerschool",     { NULL }, 5071,  "udp"  },
+  { "ayiya",           { NULL }, 5072,  "tcp"  },
+  { "ayiya",           { NULL }, 5072,  "udp"  },
+  { "tag-pm",          { NULL }, 5073,  "tcp"  },
+  { "tag-pm",          { NULL }, 5073,  "udp"  },
+  { "alesquery",       { NULL }, 5074,  "tcp"  },
+  { "alesquery",       { NULL }, 5074,  "udp"  },
+  { "cp-spxrpts",      { NULL }, 5079,  "udp"  },
+  { "onscreen",        { NULL }, 5080,  "tcp"  },
+  { "onscreen",        { NULL }, 5080,  "udp"  },
+  { "sdl-ets",         { NULL }, 5081,  "tcp"  },
+  { "sdl-ets",         { NULL }, 5081,  "udp"  },
+  { "qcp",             { NULL }, 5082,  "tcp"  },
+  { "qcp",             { NULL }, 5082,  "udp"  },
+  { "qfp",             { NULL }, 5083,  "tcp"  },
+  { "qfp",             { NULL }, 5083,  "udp"  },
+  { "llrp",            { NULL }, 5084,  "tcp"  },
+  { "llrp",            { NULL }, 5084,  "udp"  },
+  { "encrypted-llrp",  { NULL }, 5085,  "tcp"  },
+  { "encrypted-llrp",  { NULL }, 5085,  "udp"  },
+  { "aprigo-cs",       { NULL }, 5086,  "tcp"  },
+  { "car",             { NULL }, 5090,  "sctp" },
+  { "cxtp",            { NULL }, 5091,  "sctp" },
+  { "magpie",          { NULL }, 5092,  "udp"  },
+  { "sentinel-lm",     { NULL }, 5093,  "tcp"  },
+  { "sentinel-lm",     { NULL }, 5093,  "udp"  },
+  { "hart-ip",         { NULL }, 5094,  "tcp"  },
+  { "hart-ip",         { NULL }, 5094,  "udp"  },
+  { "sentlm-srv2srv",  { NULL }, 5099,  "tcp"  },
+  { "sentlm-srv2srv",  { NULL }, 5099,  "udp"  },
+  { "socalia",         { NULL }, 5100,  "tcp"  },
+  { "socalia",         { NULL }, 5100,  "udp"  },
+  { "talarian-tcp",    { NULL }, 5101,  "tcp"  },
+  { "talarian-udp",    { NULL }, 5101,  "udp"  },
+  { "oms-nonsecure",   { NULL }, 5102,  "tcp"  },
+  { "oms-nonsecure",   { NULL }, 5102,  "udp"  },
+  { "actifio-c2c",     { NULL }, 5103,  "tcp"  },
+  { "tinymessage",     { NULL }, 5104,  "udp"  },
+  { "hughes-ap",       { NULL }, 5105,  "udp"  },
+  { "taep-as-svc",     { NULL }, 5111,  "tcp"  },
+  { "taep-as-svc",     { NULL }, 5111,  "udp"  },
+  { "pm-cmdsvr",       { NULL }, 5112,  "tcp"  },
+  { "pm-cmdsvr",       { NULL }, 5112,  "udp"  },
+  { "ev-services",     { NULL }, 5114,  "tcp"  },
+  { "autobuild",       { NULL }, 5115,  "tcp"  },
+  { "emb-proj-cmd",    { NULL }, 5116,  "udp"  },
+  { "gradecam",        { NULL }, 5117,  "tcp"  },
+  { "nbt-pc",          { NULL }, 5133,  "tcp"  },
+  { "nbt-pc",          { NULL }, 5133,  "udp"  },
+  { "ppactivation",    { NULL }, 5134,  "tcp"  },
+  { "erp-scale",       { NULL }, 5135,  "tcp"  },
+  { "minotaur-sa",     { NULL }, 5136,  "udp"  },
+  { "ctsd",            { NULL }, 5137,  "tcp"  },
+  { "ctsd",            { NULL }, 5137,  "udp"  },
+  { "rmonitor_secure", { NULL }, 5145,  "tcp"  },
+  { "rmonitor_secure", { NULL }, 5145,  "udp"  },
+  { "social-alarm",    { NULL }, 5146,  "tcp"  },
+  { "atmp",            { NULL }, 5150,  "tcp"  },
+  { "atmp",            { NULL }, 5150,  "udp"  },
+  { "esri_sde",        { NULL }, 5151,  "tcp"  },
+  { "esri_sde",        { NULL }, 5151,  "udp"  },
+  { "sde-discovery",   { NULL }, 5152,  "tcp"  },
+  { "sde-discovery",   { NULL }, 5152,  "udp"  },
+  { "toruxserver",     { NULL }, 5153,  "tcp"  },
+  { "bzflag",          { NULL }, 5154,  "tcp"  },
+  { "bzflag",          { NULL }, 5154,  "udp"  },
+  { "asctrl-agent",    { NULL }, 5155,  "tcp"  },
+  { "asctrl-agent",    { NULL }, 5155,  "udp"  },
+  { "rugameonline",    { NULL }, 5156,  "tcp"  },
+  { "mediat",          { NULL }, 5157,  "tcp"  },
+  { "snmpssh",         { NULL }, 5161,  "tcp"  },
+  { "snmpssh-trap",    { NULL }, 5162,  "tcp"  },
+  { "sbackup",         { NULL }, 5163,  "tcp"  },
+  { "vpa",             { NULL }, 5164,  "tcp"  },
+  { "vpa-disc",        { NULL }, 5164,  "udp"  },
+  { "ife_icorp",       { NULL }, 5165,  "tcp"  },
+  { "ife_icorp",       { NULL }, 5165,  "udp"  },
+  { "winpcs",          { NULL }, 5166,  "tcp"  },
+  { "winpcs",          { NULL }, 5166,  "udp"  },
+  { "scte104",         { NULL }, 5167,  "tcp"  },
+  { "scte104",         { NULL }, 5167,  "udp"  },
+  { "scte30",          { NULL }, 5168,  "tcp"  },
+  { "scte30",          { NULL }, 5168,  "udp"  },
+  { "aol",             { NULL }, 5190,  "tcp"  },
+  { "aol",             { NULL }, 5190,  "udp"  },
+  { "aol-1",           { NULL }, 5191,  "tcp"  },
+  { "aol-1",           { NULL }, 5191,  "udp"  },
+  { "aol-2",           { NULL }, 5192,  "tcp"  },
+  { "aol-2",           { NULL }, 5192,  "udp"  },
+  { "aol-3",           { NULL }, 5193,  "tcp"  },
+  { "aol-3",           { NULL }, 5193,  "udp"  },
+  { "cpscomm",         { NULL }, 5194,  "tcp"  },
+  { "targus-getdata",  { NULL }, 5200,  "tcp"  },
+  { "targus-getdata",  { NULL }, 5200,  "udp"  },
+  { "targus-getdata1", { NULL }, 5201,  "tcp"  },
+  { "targus-getdata1", { NULL }, 5201,  "udp"  },
+  { "targus-getdata2", { NULL }, 5202,  "tcp"  },
+  { "targus-getdata2", { NULL }, 5202,  "udp"  },
+  { "targus-getdata3", { NULL }, 5203,  "tcp"  },
+  { "targus-getdata3", { NULL }, 5203,  "udp"  },
+  { "3exmp",           { NULL }, 5221,  "tcp"  },
+  { "xmpp-client",     { NULL }, 5222,  "tcp"  },
+  { "hpvirtgrp",       { NULL }, 5223,  "tcp"  },
+  { "hpvirtgrp",       { NULL }, 5223,  "udp"  },
+  { "hpvirtctrl",      { NULL }, 5224,  "tcp"  },
+  { "hpvirtctrl",      { NULL }, 5224,  "udp"  },
+  { "hp-server",       { NULL }, 5225,  "tcp"  },
+  { "hp-server",       { NULL }, 5225,  "udp"  },
+  { "hp-status",       { NULL }, 5226,  "tcp"  },
+  { "hp-status",       { NULL }, 5226,  "udp"  },
+  { "perfd",           { NULL }, 5227,  "tcp"  },
+  { "perfd",           { NULL }, 5227,  "udp"  },
+  { "hpvroom",         { NULL }, 5228,  "tcp"  },
+  { "csedaemon",       { NULL }, 5232,  "tcp"  },
+  { "enfs",            { NULL }, 5233,  "tcp"  },
+  { "eenet",           { NULL }, 5234,  "tcp"  },
+  { "eenet",           { NULL }, 5234,  "udp"  },
+  { "galaxy-network",  { NULL }, 5235,  "tcp"  },
+  { "galaxy-network",  { NULL }, 5235,  "udp"  },
+  { "padl2sim",        { NULL }, 5236,  "tcp"  },
+  { "padl2sim",        { NULL }, 5236,  "udp"  },
+  { "mnet-discovery",  { NULL }, 5237,  "tcp"  },
+  { "mnet-discovery",  { NULL }, 5237,  "udp"  },
+  { "downtools",       { NULL }, 5245,  "tcp"  },
+  { "downtools-disc",  { NULL }, 5245,  "udp"  },
+  { "capwap-control",  { NULL }, 5246,  "udp"  },
+  { "capwap-data",     { NULL }, 5247,  "udp"  },
+  { "caacws",          { NULL }, 5248,  "tcp"  },
+  { "caacws",          { NULL }, 5248,  "udp"  },
+  { "caaclang2",       { NULL }, 5249,  "tcp"  },
+  { "caaclang2",       { NULL }, 5249,  "udp"  },
+  { "soagateway",      { NULL }, 5250,  "tcp"  },
+  { "soagateway",      { NULL }, 5250,  "udp"  },
+  { "caevms",          { NULL }, 5251,  "tcp"  },
+  { "caevms",          { NULL }, 5251,  "udp"  },
+  { "movaz-ssc",       { NULL }, 5252,  "tcp"  },
+  { "movaz-ssc",       { NULL }, 5252,  "udp"  },
+  { "kpdp",            { NULL }, 5253,  "tcp"  },
+  { "3com-njack-1",    { NULL }, 5264,  "tcp"  },
+  { "3com-njack-1",    { NULL }, 5264,  "udp"  },
+  { "3com-njack-2",    { NULL }, 5265,  "tcp"  },
+  { "3com-njack-2",    { NULL }, 5265,  "udp"  },
+  { "xmpp-server",     { NULL }, 5269,  "tcp"  },
+  { "xmp",             { NULL }, 5270,  "tcp"  },
+  { "xmp",             { NULL }, 5270,  "udp"  },
+  { "cuelink",         { NULL }, 5271,  "tcp"  },
+  { "cuelink-disc",    { NULL }, 5271,  "udp"  },
+  { "pk",              { NULL }, 5272,  "tcp"  },
+  { "pk",              { NULL }, 5272,  "udp"  },
+  { "xmpp-bosh",       { NULL }, 5280,  "tcp"  },
+  { "undo-lm",         { NULL }, 5281,  "tcp"  },
+  { "transmit-port",   { NULL }, 5282,  "tcp"  },
+  { "transmit-port",   { NULL }, 5282,  "udp"  },
+  { "presence",        { NULL }, 5298,  "tcp"  },
+  { "presence",        { NULL }, 5298,  "udp"  },
+  { "nlg-data",        { NULL }, 5299,  "tcp"  },
+  { "nlg-data",        { NULL }, 5299,  "udp"  },
+  { "hacl-hb",         { NULL }, 5300,  "tcp"  },
+  { "hacl-hb",         { NULL }, 5300,  "udp"  },
+  { "hacl-gs",         { NULL }, 5301,  "tcp"  },
+  { "hacl-gs",         { NULL }, 5301,  "udp"  },
+  { "hacl-cfg",        { NULL }, 5302,  "tcp"  },
+  { "hacl-cfg",        { NULL }, 5302,  "udp"  },
+  { "hacl-probe",      { NULL }, 5303,  "tcp"  },
+  { "hacl-probe",      { NULL }, 5303,  "udp"  },
+  { "hacl-local",      { NULL }, 5304,  "tcp"  },
+  { "hacl-local",      { NULL }, 5304,  "udp"  },
+  { "hacl-test",       { NULL }, 5305,  "tcp"  },
+  { "hacl-test",       { NULL }, 5305,  "udp"  },
+  { "sun-mc-grp",      { NULL }, 5306,  "tcp"  },
+  { "sun-mc-grp",      { NULL }, 5306,  "udp"  },
+  { "sco-aip",         { NULL }, 5307,  "tcp"  },
+  { "sco-aip",         { NULL }, 5307,  "udp"  },
+  { "cfengine",        { NULL }, 5308,  "tcp"  },
+  { "cfengine",        { NULL }, 5308,  "udp"  },
+  { "jprinter",        { NULL }, 5309,  "tcp"  },
+  { "jprinter",        { NULL }, 5309,  "udp"  },
+  { "outlaws",         { NULL }, 5310,  "tcp"  },
+  { "outlaws",         { NULL }, 5310,  "udp"  },
+  { "permabit-cs",     { NULL }, 5312,  "tcp"  },
+  { "permabit-cs",     { NULL }, 5312,  "udp"  },
+  { "rrdp",            { NULL }, 5313,  "tcp"  },
+  { "rrdp",            { NULL }, 5313,  "udp"  },
+  { "opalis-rbt-ipc",  { NULL }, 5314,  "tcp"  },
+  { "opalis-rbt-ipc",  { NULL }, 5314,  "udp"  },
+  { "hacl-poll",       { NULL }, 5315,  "tcp"  },
+  { "hacl-poll",       { NULL }, 5315,  "udp"  },
+  { "hpdevms",         { NULL }, 5316,  "tcp"  },
+  { "hpdevms",         { NULL }, 5316,  "udp"  },
+  { "bsfserver-zn",    { NULL }, 5320,  "tcp"  },
+  { "bsfsvr-zn-ssl",   { NULL }, 5321,  "tcp"  },
+  { "kfserver",        { NULL }, 5343,  "tcp"  },
+  { "kfserver",        { NULL }, 5343,  "udp"  },
+  { "xkotodrcp",       { NULL }, 5344,  "tcp"  },
+  { "xkotodrcp",       { NULL }, 5344,  "udp"  },
+  { "stuns",           { NULL }, 5349,  "tcp"  },
+  { "stuns",           { NULL }, 5349,  "udp"  },
+  { "turns",           { NULL }, 5349,  "tcp"  },
+  { "turns",           { NULL }, 5349,  "udp"  },
+  { "stun-behaviors",  { NULL }, 5349,  "tcp"  },
+  { "stun-behaviors",  { NULL }, 5349,  "udp"  },
+  { "nat-pmp-status",  { NULL }, 5350,  "tcp"  },
+  { "nat-pmp-status",  { NULL }, 5350,  "udp"  },
+  { "nat-pmp",         { NULL }, 5351,  "tcp"  },
+  { "nat-pmp",         { NULL }, 5351,  "udp"  },
+  { "dns-llq",         { NULL }, 5352,  "tcp"  },
+  { "dns-llq",         { NULL }, 5352,  "udp"  },
+  { "mdns",            { NULL }, 5353,  "tcp"  },
+  { "mdns",            { NULL }, 5353,  "udp"  },
+  { "mdnsresponder",   { NULL }, 5354,  "tcp"  },
+  { "mdnsresponder",   { NULL }, 5354,  "udp"  },
+  { "llmnr",           { NULL }, 5355,  "tcp"  },
+  { "llmnr",           { NULL }, 5355,  "udp"  },
+  { "ms-smlbiz",       { NULL }, 5356,  "tcp"  },
+  { "ms-smlbiz",       { NULL }, 5356,  "udp"  },
+  { "wsdapi",          { NULL }, 5357,  "tcp"  },
+  { "wsdapi",          { NULL }, 5357,  "udp"  },
+  { "wsdapi-s",        { NULL }, 5358,  "tcp"  },
+  { "wsdapi-s",        { NULL }, 5358,  "udp"  },
+  { "ms-alerter",      { NULL }, 5359,  "tcp"  },
+  { "ms-alerter",      { NULL }, 5359,  "udp"  },
+  { "ms-sideshow",     { NULL }, 5360,  "tcp"  },
+  { "ms-sideshow",     { NULL }, 5360,  "udp"  },
+  { "ms-s-sideshow",   { NULL }, 5361,  "tcp"  },
+  { "ms-s-sideshow",   { NULL }, 5361,  "udp"  },
+  { "serverwsd2",      { NULL }, 5362,  "tcp"  },
+  { "serverwsd2",      { NULL }, 5362,  "udp"  },
+  { "net-projection",  { NULL }, 5363,  "tcp"  },
+  { "net-projection",  { NULL }, 5363,  "udp"  },
+  { "stresstester",    { NULL }, 5397,  "tcp"  },
+  { "stresstester",    { NULL }, 5397,  "udp"  },
+  { "elektron-admin",  { NULL }, 5398,  "tcp"  },
+  { "elektron-admin",  { NULL }, 5398,  "udp"  },
+  { "securitychase",   { NULL }, 5399,  "tcp"  },
+  { "securitychase",   { NULL }, 5399,  "udp"  },
+  { "excerpt",         { NULL }, 5400,  "tcp"  },
+  { "excerpt",         { NULL }, 5400,  "udp"  },
+  { "excerpts",        { NULL }, 5401,  "tcp"  },
+  { "excerpts",        { NULL }, 5401,  "udp"  },
+  { "mftp",            { NULL }, 5402,  "tcp"  },
+  { "mftp",            { NULL }, 5402,  "udp"  },
+  { "hpoms-ci-lstn",   { NULL }, 5403,  "tcp"  },
+  { "hpoms-ci-lstn",   { NULL }, 5403,  "udp"  },
+  { "hpoms-dps-lstn",  { NULL }, 5404,  "tcp"  },
+  { "hpoms-dps-lstn",  { NULL }, 5404,  "udp"  },
+  { "netsupport",      { NULL }, 5405,  "tcp"  },
+  { "netsupport",      { NULL }, 5405,  "udp"  },
+  { "systemics-sox",   { NULL }, 5406,  "tcp"  },
+  { "systemics-sox",   { NULL }, 5406,  "udp"  },
+  { "foresyte-clear",  { NULL }, 5407,  "tcp"  },
+  { "foresyte-clear",  { NULL }, 5407,  "udp"  },
+  { "foresyte-sec",    { NULL }, 5408,  "tcp"  },
+  { "foresyte-sec",    { NULL }, 5408,  "udp"  },
+  { "salient-dtasrv",  { NULL }, 5409,  "tcp"  },
+  { "salient-dtasrv",  { NULL }, 5409,  "udp"  },
+  { "salient-usrmgr",  { NULL }, 5410,  "tcp"  },
+  { "salient-usrmgr",  { NULL }, 5410,  "udp"  },
+  { "actnet",          { NULL }, 5411,  "tcp"  },
+  { "actnet",          { NULL }, 5411,  "udp"  },
+  { "continuus",       { NULL }, 5412,  "tcp"  },
+  { "continuus",       { NULL }, 5412,  "udp"  },
+  { "wwiotalk",        { NULL }, 5413,  "tcp"  },
+  { "wwiotalk",        { NULL }, 5413,  "udp"  },
+  { "statusd",         { NULL }, 5414,  "tcp"  },
+  { "statusd",         { NULL }, 5414,  "udp"  },
+  { "ns-server",       { NULL }, 5415,  "tcp"  },
+  { "ns-server",       { NULL }, 5415,  "udp"  },
+  { "sns-gateway",     { NULL }, 5416,  "tcp"  },
+  { "sns-gateway",     { NULL }, 5416,  "udp"  },
+  { "sns-agent",       { NULL }, 5417,  "tcp"  },
+  { "sns-agent",       { NULL }, 5417,  "udp"  },
+  { "mcntp",           { NULL }, 5418,  "tcp"  },
+  { "mcntp",           { NULL }, 5418,  "udp"  },
+  { "dj-ice",          { NULL }, 5419,  "tcp"  },
+  { "dj-ice",          { NULL }, 5419,  "udp"  },
+  { "cylink-c",        { NULL }, 5420,  "tcp"  },
+  { "cylink-c",        { NULL }, 5420,  "udp"  },
+  { "netsupport2",     { NULL }, 5421,  "tcp"  },
+  { "netsupport2",     { NULL }, 5421,  "udp"  },
+  { "salient-mux",     { NULL }, 5422,  "tcp"  },
+  { "salient-mux",     { NULL }, 5422,  "udp"  },
+  { "virtualuser",     { NULL }, 5423,  "tcp"  },
+  { "virtualuser",     { NULL }, 5423,  "udp"  },
+  { "beyond-remote",   { NULL }, 5424,  "tcp"  },
+  { "beyond-remote",   { NULL }, 5424,  "udp"  },
+  { "br-channel",      { NULL }, 5425,  "tcp"  },
+  { "br-channel",      { NULL }, 5425,  "udp"  },
+  { "devbasic",        { NULL }, 5426,  "tcp"  },
+  { "devbasic",        { NULL }, 5426,  "udp"  },
+  { "sco-peer-tta",    { NULL }, 5427,  "tcp"  },
+  { "sco-peer-tta",    { NULL }, 5427,  "udp"  },
+  { "telaconsole",     { NULL }, 5428,  "tcp"  },
+  { "telaconsole",     { NULL }, 5428,  "udp"  },
+  { "base",            { NULL }, 5429,  "tcp"  },
+  { "base",            { NULL }, 5429,  "udp"  },
+  { "radec-corp",      { NULL }, 5430,  "tcp"  },
+  { "radec-corp",      { NULL }, 5430,  "udp"  },
+  { "park-agent",      { NULL }, 5431,  "tcp"  },
+  { "park-agent",      { NULL }, 5431,  "udp"  },
+  { "postgresql",      { NULL }, 5432,  "tcp"  },
+  { "postgresql",      { NULL }, 5432,  "udp"  },
+  { "pyrrho",          { NULL }, 5433,  "tcp"  },
+  { "pyrrho",          { NULL }, 5433,  "udp"  },
+  { "sgi-arrayd",      { NULL }, 5434,  "tcp"  },
+  { "sgi-arrayd",      { NULL }, 5434,  "udp"  },
+  { "sceanics",        { NULL }, 5435,  "tcp"  },
+  { "sceanics",        { NULL }, 5435,  "udp"  },
+  { "pmip6-cntl",      { NULL }, 5436,  "udp"  },
+  { "pmip6-data",      { NULL }, 5437,  "udp"  },
+  { "spss",            { NULL }, 5443,  "tcp"  },
+  { "spss",            { NULL }, 5443,  "udp"  },
+  { "surebox",         { NULL }, 5453,  "tcp"  },
+  { "surebox",         { NULL }, 5453,  "udp"  },
+  { "apc-5454",        { NULL }, 5454,  "tcp"  },
+  { "apc-5454",        { NULL }, 5454,  "udp"  },
+  { "apc-5455",        { NULL }, 5455,  "tcp"  },
+  { "apc-5455",        { NULL }, 5455,  "udp"  },
+  { "apc-5456",        { NULL }, 5456,  "tcp"  },
+  { "apc-5456",        { NULL }, 5456,  "udp"  },
+  { "silkmeter",       { NULL }, 5461,  "tcp"  },
+  { "silkmeter",       { NULL }, 5461,  "udp"  },
+  { "ttl-publisher",   { NULL }, 5462,  "tcp"  },
+  { "ttl-publisher",   { NULL }, 5462,  "udp"  },
+  { "ttlpriceproxy",   { NULL }, 5463,  "tcp"  },
+  { "ttlpriceproxy",   { NULL }, 5463,  "udp"  },
+  { "quailnet",        { NULL }, 5464,  "tcp"  },
+  { "quailnet",        { NULL }, 5464,  "udp"  },
+  { "netops-broker",   { NULL }, 5465,  "tcp"  },
+  { "netops-broker",   { NULL }, 5465,  "udp"  },
+  { "fcp-addr-srvr1",  { NULL }, 5500,  "tcp"  },
+  { "fcp-addr-srvr1",  { NULL }, 5500,  "udp"  },
+  { "fcp-addr-srvr2",  { NULL }, 5501,  "tcp"  },
+  { "fcp-addr-srvr2",  { NULL }, 5501,  "udp"  },
+  { "fcp-srvr-inst1",  { NULL }, 5502,  "tcp"  },
+  { "fcp-srvr-inst1",  { NULL }, 5502,  "udp"  },
+  { "fcp-srvr-inst2",  { NULL }, 5503,  "tcp"  },
+  { "fcp-srvr-inst2",  { NULL }, 5503,  "udp"  },
+  { "fcp-cics-gw1",    { NULL }, 5504,  "tcp"  },
+  { "fcp-cics-gw1",    { NULL }, 5504,  "udp"  },
+  { "checkoutdb",      { NULL }, 5505,  "tcp"  },
+  { "checkoutdb",      { NULL }, 5505,  "udp"  },
+  { "amc",             { NULL }, 5506,  "tcp"  },
+  { "amc",             { NULL }, 5506,  "udp"  },
+  { "sgi-eventmond",   { NULL }, 5553,  "tcp"  },
+  { "sgi-eventmond",   { NULL }, 5553,  "udp"  },
+  { "sgi-esphttp",     { NULL }, 5554,  "tcp"  },
+  { "sgi-esphttp",     { NULL }, 5554,  "udp"  },
+  { "personal-agent",  { NULL }, 5555,  "tcp"  },
+  { "personal-agent",  { NULL }, 5555,  "udp"  },
+  { "freeciv",         { NULL }, 5556,  "tcp"  },
+  { "freeciv",         { NULL }, 5556,  "udp"  },
+  { "farenet",         { NULL }, 5557,  "tcp"  },
+  { "westec-connect",  { NULL }, 5566,  "tcp"  },
+  { "m-oap",           { NULL }, 5567,  "tcp"  },
+  { "m-oap",           { NULL }, 5567,  "udp"  },
+  { "sdt",             { NULL }, 5568,  "tcp"  },
+  { "sdt",             { NULL }, 5568,  "udp"  },
+  { "sdmmp",           { NULL }, 5573,  "tcp"  },
+  { "sdmmp",           { NULL }, 5573,  "udp"  },
+  { "lsi-bobcat",      { NULL }, 5574,  "tcp"  },
+  { "ora-oap",         { NULL }, 5575,  "tcp"  },
+  { "fdtracks",        { NULL }, 5579,  "tcp"  },
+  { "tmosms0",         { NULL }, 5580,  "tcp"  },
+  { "tmosms0",         { NULL }, 5580,  "udp"  },
+  { "tmosms1",         { NULL }, 5581,  "tcp"  },
+  { "tmosms1",         { NULL }, 5581,  "udp"  },
+  { "fac-restore",     { NULL }, 5582,  "tcp"  },
+  { "fac-restore",     { NULL }, 5582,  "udp"  },
+  { "tmo-icon-sync",   { NULL }, 5583,  "tcp"  },
+  { "tmo-icon-sync",   { NULL }, 5583,  "udp"  },
+  { "bis-web",         { NULL }, 5584,  "tcp"  },
+  { "bis-web",         { NULL }, 5584,  "udp"  },
+  { "bis-sync",        { NULL }, 5585,  "tcp"  },
+  { "bis-sync",        { NULL }, 5585,  "udp"  },
+  { "ininmessaging",   { NULL }, 5597,  "tcp"  },
+  { "ininmessaging",   { NULL }, 5597,  "udp"  },
+  { "mctfeed",         { NULL }, 5598,  "tcp"  },
+  { "mctfeed",         { NULL }, 5598,  "udp"  },
+  { "esinstall",       { NULL }, 5599,  "tcp"  },
+  { "esinstall",       { NULL }, 5599,  "udp"  },
+  { "esmmanager",      { NULL }, 5600,  "tcp"  },
+  { "esmmanager",      { NULL }, 5600,  "udp"  },
+  { "esmagent",        { NULL }, 5601,  "tcp"  },
+  { "esmagent",        { NULL }, 5601,  "udp"  },
+  { "a1-msc",          { NULL }, 5602,  "tcp"  },
+  { "a1-msc",          { NULL }, 5602,  "udp"  },
+  { "a1-bs",           { NULL }, 5603,  "tcp"  },
+  { "a1-bs",           { NULL }, 5603,  "udp"  },
+  { "a3-sdunode",      { NULL }, 5604,  "tcp"  },
+  { "a3-sdunode",      { NULL }, 5604,  "udp"  },
+  { "a4-sdunode",      { NULL }, 5605,  "tcp"  },
+  { "a4-sdunode",      { NULL }, 5605,  "udp"  },
+  { "ninaf",           { NULL }, 5627,  "tcp"  },
+  { "ninaf",           { NULL }, 5627,  "udp"  },
+  { "htrust",          { NULL }, 5628,  "tcp"  },
+  { "htrust",          { NULL }, 5628,  "udp"  },
+  { "symantec-sfdb",   { NULL }, 5629,  "tcp"  },
+  { "symantec-sfdb",   { NULL }, 5629,  "udp"  },
+  { "precise-comm",    { NULL }, 5630,  "tcp"  },
+  { "precise-comm",    { NULL }, 5630,  "udp"  },
+  { "pcanywheredata",  { NULL }, 5631,  "tcp"  },
+  { "pcanywheredata",  { NULL }, 5631,  "udp"  },
+  { "pcanywherestat",  { NULL }, 5632,  "tcp"  },
+  { "pcanywherestat",  { NULL }, 5632,  "udp"  },
+  { "beorl",           { NULL }, 5633,  "tcp"  },
+  { "beorl",           { NULL }, 5633,  "udp"  },
+  { "xprtld",          { NULL }, 5634,  "tcp"  },
+  { "xprtld",          { NULL }, 5634,  "udp"  },
+  { "sfmsso",          { NULL }, 5635,  "tcp"  },
+  { "sfm-db-server",   { NULL }, 5636,  "tcp"  },
+  { "cssc",            { NULL }, 5637,  "tcp"  },
+  { "amqps",           { NULL }, 5671,  "tcp"  },
+  { "amqps",           { NULL }, 5671,  "udp"  },
+  { "amqp",            { NULL }, 5672,  "tcp"  },
+  { "amqp",            { NULL }, 5672,  "udp"  },
+  { "amqp",            { NULL }, 5672,  "sctp" },
+  { "jms",             { NULL }, 5673,  "tcp"  },
+  { "jms",             { NULL }, 5673,  "udp"  },
+  { "hyperscsi-port",  { NULL }, 5674,  "tcp"  },
+  { "hyperscsi-port",  { NULL }, 5674,  "udp"  },
+  { "v5ua",            { NULL }, 5675,  "tcp"  },
+  { "v5ua",            { NULL }, 5675,  "udp"  },
+  { "v5ua",            { NULL }, 5675,  "sctp" },
+  { "raadmin",         { NULL }, 5676,  "tcp"  },
+  { "raadmin",         { NULL }, 5676,  "udp"  },
+  { "questdb2-lnchr",  { NULL }, 5677,  "tcp"  },
+  { "questdb2-lnchr",  { NULL }, 5677,  "udp"  },
+  { "rrac",            { NULL }, 5678,  "tcp"  },
+  { "rrac",            { NULL }, 5678,  "udp"  },
+  { "dccm",            { NULL }, 5679,  "tcp"  },
+  { "dccm",            { NULL }, 5679,  "udp"  },
+  { "auriga-router",   { NULL }, 5680,  "tcp"  },
+  { "auriga-router",   { NULL }, 5680,  "udp"  },
+  { "ncxcp",           { NULL }, 5681,  "tcp"  },
+  { "ncxcp",           { NULL }, 5681,  "udp"  },
+  { "brightcore",      { NULL }, 5682,  "udp"  },
+  { "ggz",             { NULL }, 5688,  "tcp"  },
+  { "ggz",             { NULL }, 5688,  "udp"  },
+  { "qmvideo",         { NULL }, 5689,  "tcp"  },
+  { "qmvideo",         { NULL }, 5689,  "udp"  },
+  { "proshareaudio",   { NULL }, 5713,  "tcp"  },
+  { "proshareaudio",   { NULL }, 5713,  "udp"  },
+  { "prosharevideo",   { NULL }, 5714,  "tcp"  },
+  { "prosharevideo",   { NULL }, 5714,  "udp"  },
+  { "prosharedata",    { NULL }, 5715,  "tcp"  },
+  { "prosharedata",    { NULL }, 5715,  "udp"  },
+  { "prosharerequest", { NULL }, 5716,  "tcp"  },
+  { "prosharerequest", { NULL }, 5716,  "udp"  },
+  { "prosharenotify",  { NULL }, 5717,  "tcp"  },
+  { "prosharenotify",  { NULL }, 5717,  "udp"  },
+  { "dpm",             { NULL }, 5718,  "tcp"  },
+  { "dpm",             { NULL }, 5718,  "udp"  },
+  { "dpm-agent",       { NULL }, 5719,  "tcp"  },
+  { "dpm-agent",       { NULL }, 5719,  "udp"  },
+  { "ms-licensing",    { NULL }, 5720,  "tcp"  },
+  { "ms-licensing",    { NULL }, 5720,  "udp"  },
+  { "dtpt",            { NULL }, 5721,  "tcp"  },
+  { "dtpt",            { NULL }, 5721,  "udp"  },
+  { "msdfsr",          { NULL }, 5722,  "tcp"  },
+  { "msdfsr",          { NULL }, 5722,  "udp"  },
+  { "omhs",            { NULL }, 5723,  "tcp"  },
+  { "omhs",            { NULL }, 5723,  "udp"  },
+  { "omsdk",           { NULL }, 5724,  "tcp"  },
+  { "omsdk",           { NULL }, 5724,  "udp"  },
+  { "ms-ilm",          { NULL }, 5725,  "tcp"  },
+  { "ms-ilm-sts",      { NULL }, 5726,  "tcp"  },
+  { "asgenf",          { NULL }, 5727,  "tcp"  },
+  { "io-dist-data",    { NULL }, 5728,  "tcp"  },
+  { "io-dist-group",   { NULL }, 5728,  "udp"  },
+  { "openmail",        { NULL }, 5729,  "tcp"  },
+  { "openmail",        { NULL }, 5729,  "udp"  },
+  { "unieng",          { NULL }, 5730,  "tcp"  },
+  { "unieng",          { NULL }, 5730,  "udp"  },
+  { "ida-discover1",   { NULL }, 5741,  "tcp"  },
+  { "ida-discover1",   { NULL }, 5741,  "udp"  },
+  { "ida-discover2",   { NULL }, 5742,  "tcp"  },
+  { "ida-discover2",   { NULL }, 5742,  "udp"  },
+  { "watchdoc-pod",    { NULL }, 5743,  "tcp"  },
+  { "watchdoc-pod",    { NULL }, 5743,  "udp"  },
+  { "watchdoc",        { NULL }, 5744,  "tcp"  },
+  { "watchdoc",        { NULL }, 5744,  "udp"  },
+  { "fcopy-server",    { NULL }, 5745,  "tcp"  },
+  { "fcopy-server",    { NULL }, 5745,  "udp"  },
+  { "fcopys-server",   { NULL }, 5746,  "tcp"  },
+  { "fcopys-server",   { NULL }, 5746,  "udp"  },
+  { "tunatic",         { NULL }, 5747,  "tcp"  },
+  { "tunatic",         { NULL }, 5747,  "udp"  },
+  { "tunalyzer",       { NULL }, 5748,  "tcp"  },
+  { "tunalyzer",       { NULL }, 5748,  "udp"  },
+  { "rscd",            { NULL }, 5750,  "tcp"  },
+  { "rscd",            { NULL }, 5750,  "udp"  },
+  { "openmailg",       { NULL }, 5755,  "tcp"  },
+  { "openmailg",       { NULL }, 5755,  "udp"  },
+  { "x500ms",          { NULL }, 5757,  "tcp"  },
+  { "x500ms",          { NULL }, 5757,  "udp"  },
+  { "openmailns",      { NULL }, 5766,  "tcp"  },
+  { "openmailns",      { NULL }, 5766,  "udp"  },
+  { "s-openmail",      { NULL }, 5767,  "tcp"  },
+  { "s-openmail",      { NULL }, 5767,  "udp"  },
+  { "openmailpxy",     { NULL }, 5768,  "tcp"  },
+  { "openmailpxy",     { NULL }, 5768,  "udp"  },
+  { "spramsca",        { NULL }, 5769,  "tcp"  },
+  { "spramsca",        { NULL }, 5769,  "udp"  },
+  { "spramsd",         { NULL }, 5770,  "tcp"  },
+  { "spramsd",         { NULL }, 5770,  "udp"  },
+  { "netagent",        { NULL }, 5771,  "tcp"  },
+  { "netagent",        { NULL }, 5771,  "udp"  },
+  { "dali-port",       { NULL }, 5777,  "tcp"  },
+  { "dali-port",       { NULL }, 5777,  "udp"  },
+  { "vts-rpc",         { NULL }, 5780,  "tcp"  },
+  { "3par-evts",       { NULL }, 5781,  "tcp"  },
+  { "3par-evts",       { NULL }, 5781,  "udp"  },
+  { "3par-mgmt",       { NULL }, 5782,  "tcp"  },
+  { "3par-mgmt",       { NULL }, 5782,  "udp"  },
+  { "3par-mgmt-ssl",   { NULL }, 5783,  "tcp"  },
+  { "3par-mgmt-ssl",   { NULL }, 5783,  "udp"  },
+  { "ibar",            { NULL }, 5784,  "udp"  },
+  { "3par-rcopy",      { NULL }, 5785,  "tcp"  },
+  { "3par-rcopy",      { NULL }, 5785,  "udp"  },
+  { "cisco-redu",      { NULL }, 5786,  "udp"  },
+  { "waascluster",     { NULL }, 5787,  "udp"  },
+  { "xtreamx",         { NULL }, 5793,  "tcp"  },
+  { "xtreamx",         { NULL }, 5793,  "udp"  },
+  { "spdp",            { NULL }, 5794,  "udp"  },
+  { "icmpd",           { NULL }, 5813,  "tcp"  },
+  { "icmpd",           { NULL }, 5813,  "udp"  },
+  { "spt-automation",  { NULL }, 5814,  "tcp"  },
+  { "spt-automation",  { NULL }, 5814,  "udp"  },
+  { "wherehoo",        { NULL }, 5859,  "tcp"  },
+  { "wherehoo",        { NULL }, 5859,  "udp"  },
+  { "ppsuitemsg",      { NULL }, 5863,  "tcp"  },
+  { "ppsuitemsg",      { NULL }, 5863,  "udp"  },
+  { "rfb",             { NULL }, 5900,  "tcp"  },
+  { "rfb",             { NULL }, 5900,  "udp"  },
+  { "cm",              { NULL }, 5910,  "tcp"  },
+  { "cm",              { NULL }, 5910,  "udp"  },
+  { "cpdlc",           { NULL }, 5911,  "tcp"  },
+  { "cpdlc",           { NULL }, 5911,  "udp"  },
+  { "fis",             { NULL }, 5912,  "tcp"  },
+  { "fis",             { NULL }, 5912,  "udp"  },
+  { "ads-c",           { NULL }, 5913,  "tcp"  },
+  { "ads-c",           { NULL }, 5913,  "udp"  },
+  { "indy",            { NULL }, 5963,  "tcp"  },
+  { "indy",            { NULL }, 5963,  "udp"  },
+  { "mppolicy-v5",     { NULL }, 5968,  "tcp"  },
+  { "mppolicy-v5",     { NULL }, 5968,  "udp"  },
+  { "mppolicy-mgr",    { NULL }, 5969,  "tcp"  },
+  { "mppolicy-mgr",    { NULL }, 5969,  "udp"  },
+  { "couchdb",         { NULL }, 5984,  "tcp"  },
+  { "couchdb",         { NULL }, 5984,  "udp"  },
+  { "wsman",           { NULL }, 5985,  "tcp"  },
+  { "wsman",           { NULL }, 5985,  "udp"  },
+  { "wsmans",          { NULL }, 5986,  "tcp"  },
+  { "wsmans",          { NULL }, 5986,  "udp"  },
+  { "wbem-rmi",        { NULL }, 5987,  "tcp"  },
+  { "wbem-rmi",        { NULL }, 5987,  "udp"  },
+  { "wbem-http",       { NULL }, 5988,  "tcp"  },
+  { "wbem-http",       { NULL }, 5988,  "udp"  },
+  { "wbem-https",      { NULL }, 5989,  "tcp"  },
+  { "wbem-https",      { NULL }, 5989,  "udp"  },
+  { "wbem-exp-https",  { NULL }, 5990,  "tcp"  },
+  { "wbem-exp-https",  { NULL }, 5990,  "udp"  },
+  { "nuxsl",           { NULL }, 5991,  "tcp"  },
+  { "nuxsl",           { NULL }, 5991,  "udp"  },
+  { "consul-insight",  { NULL }, 5992,  "tcp"  },
+  { "consul-insight",  { NULL }, 5992,  "udp"  },
+  { "cvsup",           { NULL }, 5999,  "tcp"  },
+  { "cvsup",           { NULL }, 5999,  "udp"  },
+  { "ndl-ahp-svc",     { NULL }, 6064,  "tcp"  },
+  { "ndl-ahp-svc",     { NULL }, 6064,  "udp"  },
+  { "winpharaoh",      { NULL }, 6065,  "tcp"  },
+  { "winpharaoh",      { NULL }, 6065,  "udp"  },
+  { "ewctsp",          { NULL }, 6066,  "tcp"  },
+  { "ewctsp",          { NULL }, 6066,  "udp"  },
+  { "gsmp",            { NULL }, 6068,  "tcp"  },
+  { "gsmp",            { NULL }, 6068,  "udp"  },
+  { "trip",            { NULL }, 6069,  "tcp"  },
+  { "trip",            { NULL }, 6069,  "udp"  },
+  { "messageasap",     { NULL }, 6070,  "tcp"  },
+  { "messageasap",     { NULL }, 6070,  "udp"  },
+  { "ssdtp",           { NULL }, 6071,  "tcp"  },
+  { "ssdtp",           { NULL }, 6071,  "udp"  },
+  { "diagnose-proc",   { NULL }, 6072,  "tcp"  },
+  { "diagnose-proc",   { NULL }, 6072,  "udp"  },
+  { "directplay8",     { NULL }, 6073,  "tcp"  },
+  { "directplay8",     { NULL }, 6073,  "udp"  },
+  { "max",             { NULL }, 6074,  "tcp"  },
+  { "max",             { NULL }, 6074,  "udp"  },
+  { "dpm-acm",         { NULL }, 6075,  "tcp"  },
+  { "miami-bcast",     { NULL }, 6083,  "udp"  },
+  { "p2p-sip",         { NULL }, 6084,  "tcp"  },
+  { "konspire2b",      { NULL }, 6085,  "tcp"  },
+  { "konspire2b",      { NULL }, 6085,  "udp"  },
+  { "pdtp",            { NULL }, 6086,  "tcp"  },
+  { "pdtp",            { NULL }, 6086,  "udp"  },
+  { "ldss",            { NULL }, 6087,  "tcp"  },
+  { "ldss",            { NULL }, 6087,  "udp"  },
+  { "raxa-mgmt",       { NULL }, 6099,  "tcp"  },
+  { "synchronet-db",   { NULL }, 6100,  "tcp"  },
+  { "synchronet-db",   { NULL }, 6100,  "udp"  },
+  { "synchronet-rtc",  { NULL }, 6101,  "tcp"  },
+  { "synchronet-rtc",  { NULL }, 6101,  "udp"  },
+  { "synchronet-upd",  { NULL }, 6102,  "tcp"  },
+  { "synchronet-upd",  { NULL }, 6102,  "udp"  },
+  { "rets",            { NULL }, 6103,  "tcp"  },
+  { "rets",            { NULL }, 6103,  "udp"  },
+  { "dbdb",            { NULL }, 6104,  "tcp"  },
+  { "dbdb",            { NULL }, 6104,  "udp"  },
+  { "primaserver",     { NULL }, 6105,  "tcp"  },
+  { "primaserver",     { NULL }, 6105,  "udp"  },
+  { "mpsserver",       { NULL }, 6106,  "tcp"  },
+  { "mpsserver",       { NULL }, 6106,  "udp"  },
+  { "etc-control",     { NULL }, 6107,  "tcp"  },
+  { "etc-control",     { NULL }, 6107,  "udp"  },
+  { "sercomm-scadmin", { NULL }, 6108,  "tcp"  },
+  { "sercomm-scadmin", { NULL }, 6108,  "udp"  },
+  { "globecast-id",    { NULL }, 6109,  "tcp"  },
+  { "globecast-id",    { NULL }, 6109,  "udp"  },
+  { "softcm",          { NULL }, 6110,  "tcp"  },
+  { "softcm",          { NULL }, 6110,  "udp"  },
+  { "spc",             { NULL }, 6111,  "tcp"  },
+  { "spc",             { NULL }, 6111,  "udp"  },
+  { "dtspcd",          { NULL }, 6112,  "tcp"  },
+  { "dtspcd",          { NULL }, 6112,  "udp"  },
+  { "dayliteserver",   { NULL }, 6113,  "tcp"  },
+  { "wrspice",         { NULL }, 6114,  "tcp"  },
+  { "xic",             { NULL }, 6115,  "tcp"  },
+  { "xtlserv",         { NULL }, 6116,  "tcp"  },
+  { "daylitetouch",    { NULL }, 6117,  "tcp"  },
+  { "spdy",            { NULL }, 6121,  "tcp"  },
+  { "bex-webadmin",    { NULL }, 6122,  "tcp"  },
+  { "bex-webadmin",    { NULL }, 6122,  "udp"  },
+  { "backup-express",  { NULL }, 6123,  "tcp"  },
+  { "backup-express",  { NULL }, 6123,  "udp"  },
+  { "pnbs",            { NULL }, 6124,  "tcp"  },
+  { "pnbs",            { NULL }, 6124,  "udp"  },
+  { "nbt-wol",         { NULL }, 6133,  "tcp"  },
+  { "nbt-wol",         { NULL }, 6133,  "udp"  },
+  { "pulsonixnls",     { NULL }, 6140,  "tcp"  },
+  { "pulsonixnls",     { NULL }, 6140,  "udp"  },
+  { "meta-corp",       { NULL }, 6141,  "tcp"  },
+  { "meta-corp",       { NULL }, 6141,  "udp"  },
+  { "aspentec-lm",     { NULL }, 6142,  "tcp"  },
+  { "aspentec-lm",     { NULL }, 6142,  "udp"  },
+  { "watershed-lm",    { NULL }, 6143,  "tcp"  },
+  { "watershed-lm",    { NULL }, 6143,  "udp"  },
+  { "statsci1-lm",     { NULL }, 6144,  "tcp"  },
+  { "statsci1-lm",     { NULL }, 6144,  "udp"  },
+  { "statsci2-lm",     { NULL }, 6145,  "tcp"  },
+  { "statsci2-lm",     { NULL }, 6145,  "udp"  },
+  { "lonewolf-lm",     { NULL }, 6146,  "tcp"  },
+  { "lonewolf-lm",     { NULL }, 6146,  "udp"  },
+  { "montage-lm",      { NULL }, 6147,  "tcp"  },
+  { "montage-lm",      { NULL }, 6147,  "udp"  },
+  { "ricardo-lm",      { NULL }, 6148,  "tcp"  },
+  { "ricardo-lm",      { NULL }, 6148,  "udp"  },
+  { "tal-pod",         { NULL }, 6149,  "tcp"  },
+  { "tal-pod",         { NULL }, 6149,  "udp"  },
+  { "efb-aci",         { NULL }, 6159,  "tcp"  },
+  { "patrol-ism",      { NULL }, 6161,  "tcp"  },
+  { "patrol-ism",      { NULL }, 6161,  "udp"  },
+  { "patrol-coll",     { NULL }, 6162,  "tcp"  },
+  { "patrol-coll",     { NULL }, 6162,  "udp"  },
+  { "pscribe",         { NULL }, 6163,  "tcp"  },
+  { "pscribe",         { NULL }, 6163,  "udp"  },
+  { "lm-x",            { NULL }, 6200,  "tcp"  },
+  { "lm-x",            { NULL }, 6200,  "udp"  },
+  { "radmind",         { NULL }, 6222,  "tcp"  },
+  { "radmind",         { NULL }, 6222,  "udp"  },
+  { "jeol-nsdtp-1",    { NULL }, 6241,  "tcp"  },
+  { "jeol-nsddp-1",    { NULL }, 6241,  "udp"  },
+  { "jeol-nsdtp-2",    { NULL }, 6242,  "tcp"  },
+  { "jeol-nsddp-2",    { NULL }, 6242,  "udp"  },
+  { "jeol-nsdtp-3",    { NULL }, 6243,  "tcp"  },
+  { "jeol-nsddp-3",    { NULL }, 6243,  "udp"  },
+  { "jeol-nsdtp-4",    { NULL }, 6244,  "tcp"  },
+  { "jeol-nsddp-4",    { NULL }, 6244,  "udp"  },
+  { "tl1-raw-ssl",     { NULL }, 6251,  "tcp"  },
+  { "tl1-raw-ssl",     { NULL }, 6251,  "udp"  },
+  { "tl1-ssh",         { NULL }, 6252,  "tcp"  },
+  { "tl1-ssh",         { NULL }, 6252,  "udp"  },
+  { "crip",            { NULL }, 6253,  "tcp"  },
+  { "crip",            { NULL }, 6253,  "udp"  },
+  { "gld",             { NULL }, 6267,  "tcp"  },
+  { "grid",            { NULL }, 6268,  "tcp"  },
+  { "grid",            { NULL }, 6268,  "udp"  },
+  { "grid-alt",        { NULL }, 6269,  "tcp"  },
+  { "grid-alt",        { NULL }, 6269,  "udp"  },
+  { "bmc-grx",         { NULL }, 6300,  "tcp"  },
+  { "bmc-grx",         { NULL }, 6300,  "udp"  },
+  { "bmc_ctd_ldap",    { NULL }, 6301,  "tcp"  },
+  { "bmc_ctd_ldap",    { NULL }, 6301,  "udp"  },
+  { "ufmp",            { NULL }, 6306,  "tcp"  },
+  { "ufmp",            { NULL }, 6306,  "udp"  },
+  { "scup",            { NULL }, 6315,  "tcp"  },
+  { "scup-disc",       { NULL }, 6315,  "udp"  },
+  { "abb-escp",        { NULL }, 6316,  "tcp"  },
+  { "abb-escp",        { NULL }, 6316,  "udp"  },
+  { "repsvc",          { NULL }, 6320,  "tcp"  },
+  { "repsvc",          { NULL }, 6320,  "udp"  },
+  { "emp-server1",     { NULL }, 6321,  "tcp"  },
+  { "emp-server1",     { NULL }, 6321,  "udp"  },
+  { "emp-server2",     { NULL }, 6322,  "tcp"  },
+  { "emp-server2",     { NULL }, 6322,  "udp"  },
+  { "sflow",           { NULL }, 6343,  "tcp"  },
+  { "sflow",           { NULL }, 6343,  "udp"  },
+  { "gnutella-svc",    { NULL }, 6346,  "tcp"  },
+  { "gnutella-svc",    { NULL }, 6346,  "udp"  },
+  { "gnutella-rtr",    { NULL }, 6347,  "tcp"  },
+  { "gnutella-rtr",    { NULL }, 6347,  "udp"  },
+  { "adap",            { NULL }, 6350,  "tcp"  },
+  { "adap",            { NULL }, 6350,  "udp"  },
+  { "pmcs",            { NULL }, 6355,  "tcp"  },
+  { "pmcs",            { NULL }, 6355,  "udp"  },
+  { "metaedit-mu",     { NULL }, 6360,  "tcp"  },
+  { "metaedit-mu",     { NULL }, 6360,  "udp"  },
+  { "metaedit-se",     { NULL }, 6370,  "tcp"  },
+  { "metaedit-se",     { NULL }, 6370,  "udp"  },
+  { "metatude-mds",    { NULL }, 6382,  "tcp"  },
+  { "metatude-mds",    { NULL }, 6382,  "udp"  },
+  { "clariion-evr01",  { NULL }, 6389,  "tcp"  },
+  { "clariion-evr01",  { NULL }, 6389,  "udp"  },
+  { "metaedit-ws",     { NULL }, 6390,  "tcp"  },
+  { "metaedit-ws",     { NULL }, 6390,  "udp"  },
+  { "faxcomservice",   { NULL }, 6417,  "tcp"  },
+  { "faxcomservice",   { NULL }, 6417,  "udp"  },
+  { "syserverremote",  { NULL }, 6418,  "tcp"  },
+  { "svdrp",           { NULL }, 6419,  "tcp"  },
+  { "nim-vdrshell",    { NULL }, 6420,  "tcp"  },
+  { "nim-vdrshell",    { NULL }, 6420,  "udp"  },
+  { "nim-wan",         { NULL }, 6421,  "tcp"  },
+  { "nim-wan",         { NULL }, 6421,  "udp"  },
+  { "pgbouncer",       { NULL }, 6432,  "tcp"  },
+  { "sun-sr-https",    { NULL }, 6443,  "tcp"  },
+  { "sun-sr-https",    { NULL }, 6443,  "udp"  },
+  { "sge_qmaster",     { NULL }, 6444,  "tcp"  },
+  { "sge_qmaster",     { NULL }, 6444,  "udp"  },
+  { "sge_execd",       { NULL }, 6445,  "tcp"  },
+  { "sge_execd",       { NULL }, 6445,  "udp"  },
+  { "mysql-proxy",     { NULL }, 6446,  "tcp"  },
+  { "mysql-proxy",     { NULL }, 6446,  "udp"  },
+  { "skip-cert-recv",  { NULL }, 6455,  "tcp"  },
+  { "skip-cert-send",  { NULL }, 6456,  "udp"  },
+  { "lvision-lm",      { NULL }, 6471,  "tcp"  },
+  { "lvision-lm",      { NULL }, 6471,  "udp"  },
+  { "sun-sr-http",     { NULL }, 6480,  "tcp"  },
+  { "sun-sr-http",     { NULL }, 6480,  "udp"  },
+  { "servicetags",     { NULL }, 6481,  "tcp"  },
+  { "servicetags",     { NULL }, 6481,  "udp"  },
+  { "ldoms-mgmt",      { NULL }, 6482,  "tcp"  },
+  { "ldoms-mgmt",      { NULL }, 6482,  "udp"  },
+  { "SunVTS-RMI",      { NULL }, 6483,  "tcp"  },
+  { "SunVTS-RMI",      { NULL }, 6483,  "udp"  },
+  { "sun-sr-jms",      { NULL }, 6484,  "tcp"  },
+  { "sun-sr-jms",      { NULL }, 6484,  "udp"  },
+  { "sun-sr-iiop",     { NULL }, 6485,  "tcp"  },
+  { "sun-sr-iiop",     { NULL }, 6485,  "udp"  },
+  { "sun-sr-iiops",    { NULL }, 6486,  "tcp"  },
+  { "sun-sr-iiops",    { NULL }, 6486,  "udp"  },
+  { "sun-sr-iiop-aut", { NULL }, 6487,  "tcp"  },
+  { "sun-sr-iiop-aut", { NULL }, 6487,  "udp"  },
+  { "sun-sr-jmx",      { NULL }, 6488,  "tcp"  },
+  { "sun-sr-jmx",      { NULL }, 6488,  "udp"  },
+  { "sun-sr-admin",    { NULL }, 6489,  "tcp"  },
+  { "sun-sr-admin",    { NULL }, 6489,  "udp"  },
+  { "boks",            { NULL }, 6500,  "tcp"  },
+  { "boks",            { NULL }, 6500,  "udp"  },
+  { "boks_servc",      { NULL }, 6501,  "tcp"  },
+  { "boks_servc",      { NULL }, 6501,  "udp"  },
+  { "boks_servm",      { NULL }, 6502,  "tcp"  },
+  { "boks_servm",      { NULL }, 6502,  "udp"  },
+  { "boks_clntd",      { NULL }, 6503,  "tcp"  },
+  { "boks_clntd",      { NULL }, 6503,  "udp"  },
+  { "badm_priv",       { NULL }, 6505,  "tcp"  },
+  { "badm_priv",       { NULL }, 6505,  "udp"  },
+  { "badm_pub",        { NULL }, 6506,  "tcp"  },
+  { "badm_pub",        { NULL }, 6506,  "udp"  },
+  { "bdir_priv",       { NULL }, 6507,  "tcp"  },
+  { "bdir_priv",       { NULL }, 6507,  "udp"  },
+  { "bdir_pub",        { NULL }, 6508,  "tcp"  },
+  { "bdir_pub",        { NULL }, 6508,  "udp"  },
+  { "mgcs-mfp-port",   { NULL }, 6509,  "tcp"  },
+  { "mgcs-mfp-port",   { NULL }, 6509,  "udp"  },
+  { "mcer-port",       { NULL }, 6510,  "tcp"  },
+  { "mcer-port",       { NULL }, 6510,  "udp"  },
+  { "netconf-tls",     { NULL }, 6513,  "tcp"  },
+  { "syslog-tls",      { NULL }, 6514,  "tcp"  },
+  { "syslog-tls",      { NULL }, 6514,  "udp"  },
+  { "syslog-tls",      { NULL }, 6514,  "dccp" },
+  { "elipse-rec",      { NULL }, 6515,  "tcp"  },
+  { "elipse-rec",      { NULL }, 6515,  "udp"  },
+  { "lds-distrib",     { NULL }, 6543,  "tcp"  },
+  { "lds-distrib",     { NULL }, 6543,  "udp"  },
+  { "lds-dump",        { NULL }, 6544,  "tcp"  },
+  { "lds-dump",        { NULL }, 6544,  "udp"  },
+  { "apc-6547",        { NULL }, 6547,  "tcp"  },
+  { "apc-6547",        { NULL }, 6547,  "udp"  },
+  { "apc-6548",        { NULL }, 6548,  "tcp"  },
+  { "apc-6548",        { NULL }, 6548,  "udp"  },
+  { "apc-6549",        { NULL }, 6549,  "tcp"  },
+  { "apc-6549",        { NULL }, 6549,  "udp"  },
+  { "fg-sysupdate",    { NULL }, 6550,  "tcp"  },
+  { "fg-sysupdate",    { NULL }, 6550,  "udp"  },
+  { "sum",             { NULL }, 6551,  "tcp"  },
+  { "sum",             { NULL }, 6551,  "udp"  },
+  { "xdsxdm",          { NULL }, 6558,  "tcp"  },
+  { "xdsxdm",          { NULL }, 6558,  "udp"  },
+  { "sane-port",       { NULL }, 6566,  "tcp"  },
+  { "sane-port",       { NULL }, 6566,  "udp"  },
+  { "esp",             { NULL }, 6567,  "tcp"  },
+  { "esp",             { NULL }, 6567,  "udp"  },
+  { "canit_store",     { NULL }, 6568,  "tcp"  },
+  { "rp-reputation",   { NULL }, 6568,  "udp"  },
+  { "affiliate",       { NULL }, 6579,  "tcp"  },
+  { "affiliate",       { NULL }, 6579,  "udp"  },
+  { "parsec-master",   { NULL }, 6580,  "tcp"  },
+  { "parsec-master",   { NULL }, 6580,  "udp"  },
+  { "parsec-peer",     { NULL }, 6581,  "tcp"  },
+  { "parsec-peer",     { NULL }, 6581,  "udp"  },
+  { "parsec-game",     { NULL }, 6582,  "tcp"  },
+  { "parsec-game",     { NULL }, 6582,  "udp"  },
+  { "joaJewelSuite",   { NULL }, 6583,  "tcp"  },
+  { "joaJewelSuite",   { NULL }, 6583,  "udp"  },
+  { "mshvlm",          { NULL }, 6600,  "tcp"  },
+  { "mstmg-sstp",      { NULL }, 6601,  "tcp"  },
+  { "wsscomfrmwk",     { NULL }, 6602,  "tcp"  },
+  { "odette-ftps",     { NULL }, 6619,  "tcp"  },
+  { "odette-ftps",     { NULL }, 6619,  "udp"  },
+  { "kftp-data",       { NULL }, 6620,  "tcp"  },
+  { "kftp-data",       { NULL }, 6620,  "udp"  },
+  { "kftp",            { NULL }, 6621,  "tcp"  },
+  { "kftp",            { NULL }, 6621,  "udp"  },
+  { "mcftp",           { NULL }, 6622,  "tcp"  },
+  { "mcftp",           { NULL }, 6622,  "udp"  },
+  { "ktelnet",         { NULL }, 6623,  "tcp"  },
+  { "ktelnet",         { NULL }, 6623,  "udp"  },
+  { "datascaler-db",   { NULL }, 6624,  "tcp"  },
+  { "datascaler-ctl",  { NULL }, 6625,  "tcp"  },
+  { "wago-service",    { NULL }, 6626,  "tcp"  },
+  { "wago-service",    { NULL }, 6626,  "udp"  },
+  { "nexgen",          { NULL }, 6627,  "tcp"  },
+  { "nexgen",          { NULL }, 6627,  "udp"  },
+  { "afesc-mc",        { NULL }, 6628,  "tcp"  },
+  { "afesc-mc",        { NULL }, 6628,  "udp"  },
+  { "mxodbc-connect",  { NULL }, 6632,  "tcp"  },
+  { "pcs-sf-ui-man",   { NULL }, 6655,  "tcp"  },
+  { "emgmsg",          { NULL }, 6656,  "tcp"  },
+  { "palcom-disc",     { NULL }, 6657,  "udp"  },
+  { "vocaltec-gold",   { NULL }, 6670,  "tcp"  },
+  { "vocaltec-gold",   { NULL }, 6670,  "udp"  },
+  { "p4p-portal",      { NULL }, 6671,  "tcp"  },
+  { "p4p-portal",      { NULL }, 6671,  "udp"  },
+  { "vision_server",   { NULL }, 6672,  "tcp"  },
+  { "vision_server",   { NULL }, 6672,  "udp"  },
+  { "vision_elmd",     { NULL }, 6673,  "tcp"  },
+  { "vision_elmd",     { NULL }, 6673,  "udp"  },
+  { "vfbp",            { NULL }, 6678,  "tcp"  },
+  { "vfbp-disc",       { NULL }, 6678,  "udp"  },
+  { "osaut",           { NULL }, 6679,  "tcp"  },
+  { "osaut",           { NULL }, 6679,  "udp"  },
+  { "clever-ctrace",   { NULL }, 6687,  "tcp"  },
+  { "clever-tcpip",    { NULL }, 6688,  "tcp"  },
+  { "tsa",             { NULL }, 6689,  "tcp"  },
+  { "tsa",             { NULL }, 6689,  "udp"  },
+  { "babel",           { NULL }, 6697,  "udp"  },
+  { "kti-icad-srvr",   { NULL }, 6701,  "tcp"  },
+  { "kti-icad-srvr",   { NULL }, 6701,  "udp"  },
+  { "e-design-net",    { NULL }, 6702,  "tcp"  },
+  { "e-design-net",    { NULL }, 6702,  "udp"  },
+  { "e-design-web",    { NULL }, 6703,  "tcp"  },
+  { "e-design-web",    { NULL }, 6703,  "udp"  },
+  { "frc-hp",          { NULL }, 6704,  "sctp" },
+  { "frc-mp",          { NULL }, 6705,  "sctp" },
+  { "frc-lp",          { NULL }, 6706,  "sctp" },
+  { "ibprotocol",      { NULL }, 6714,  "tcp"  },
+  { "ibprotocol",      { NULL }, 6714,  "udp"  },
+  { "fibotrader-com",  { NULL }, 6715,  "tcp"  },
+  { "fibotrader-com",  { NULL }, 6715,  "udp"  },
+  { "bmc-perf-agent",  { NULL }, 6767,  "tcp"  },
+  { "bmc-perf-agent",  { NULL }, 6767,  "udp"  },
+  { "bmc-perf-mgrd",   { NULL }, 6768,  "tcp"  },
+  { "bmc-perf-mgrd",   { NULL }, 6768,  "udp"  },
+  { "adi-gxp-srvprt",  { NULL }, 6769,  "tcp"  },
+  { "adi-gxp-srvprt",  { NULL }, 6769,  "udp"  },
+  { "plysrv-http",     { NULL }, 6770,  "tcp"  },
+  { "plysrv-http",     { NULL }, 6770,  "udp"  },
+  { "plysrv-https",    { NULL }, 6771,  "tcp"  },
+  { "plysrv-https",    { NULL }, 6771,  "udp"  },
+  { "dgpf-exchg",      { NULL }, 6785,  "tcp"  },
+  { "dgpf-exchg",      { NULL }, 6785,  "udp"  },
+  { "smc-jmx",         { NULL }, 6786,  "tcp"  },
+  { "smc-jmx",         { NULL }, 6786,  "udp"  },
+  { "smc-admin",       { NULL }, 6787,  "tcp"  },
+  { "smc-admin",       { NULL }, 6787,  "udp"  },
+  { "smc-http",        { NULL }, 6788,  "tcp"  },
+  { "smc-http",        { NULL }, 6788,  "udp"  },
+  { "smc-https",       { NULL }, 6789,  "tcp"  },
+  { "smc-https",       { NULL }, 6789,  "udp"  },
+  { "hnmp",            { NULL }, 6790,  "tcp"  },
+  { "hnmp",            { NULL }, 6790,  "udp"  },
+  { "hnm",             { NULL }, 6791,  "tcp"  },
+  { "hnm",             { NULL }, 6791,  "udp"  },
+  { "acnet",           { NULL }, 6801,  "tcp"  },
+  { "acnet",           { NULL }, 6801,  "udp"  },
+  { "pentbox-sim",     { NULL }, 6817,  "tcp"  },
+  { "ambit-lm",        { NULL }, 6831,  "tcp"  },
+  { "ambit-lm",        { NULL }, 6831,  "udp"  },
+  { "netmo-default",   { NULL }, 6841,  "tcp"  },
+  { "netmo-default",   { NULL }, 6841,  "udp"  },
+  { "netmo-http",      { NULL }, 6842,  "tcp"  },
+  { "netmo-http",      { NULL }, 6842,  "udp"  },
+  { "iccrushmore",     { NULL }, 6850,  "tcp"  },
+  { "iccrushmore",     { NULL }, 6850,  "udp"  },
+  { "acctopus-cc",     { NULL }, 6868,  "tcp"  },
+  { "acctopus-st",     { NULL }, 6868,  "udp"  },
+  { "muse",            { NULL }, 6888,  "tcp"  },
+  { "muse",            { NULL }, 6888,  "udp"  },
+  { "jetstream",       { NULL }, 6901,  "tcp"  },
+  { "xsmsvc",          { NULL }, 6936,  "tcp"  },
+  { "xsmsvc",          { NULL }, 6936,  "udp"  },
+  { "bioserver",       { NULL }, 6946,  "tcp"  },
+  { "bioserver",       { NULL }, 6946,  "udp"  },
+  { "otlp",            { NULL }, 6951,  "tcp"  },
+  { "otlp",            { NULL }, 6951,  "udp"  },
+  { "jmact3",          { NULL }, 6961,  "tcp"  },
+  { "jmact3",          { NULL }, 6961,  "udp"  },
+  { "jmevt2",          { NULL }, 6962,  "tcp"  },
+  { "jmevt2",          { NULL }, 6962,  "udp"  },
+  { "swismgr1",        { NULL }, 6963,  "tcp"  },
+  { "swismgr1",        { NULL }, 6963,  "udp"  },
+  { "swismgr2",        { NULL }, 6964,  "tcp"  },
+  { "swismgr2",        { NULL }, 6964,  "udp"  },
+  { "swistrap",        { NULL }, 6965,  "tcp"  },
+  { "swistrap",        { NULL }, 6965,  "udp"  },
+  { "swispol",         { NULL }, 6966,  "tcp"  },
+  { "swispol",         { NULL }, 6966,  "udp"  },
+  { "acmsoda",         { NULL }, 6969,  "tcp"  },
+  { "acmsoda",         { NULL }, 6969,  "udp"  },
+  { "MobilitySrv",     { NULL }, 6997,  "tcp"  },
+  { "MobilitySrv",     { NULL }, 6997,  "udp"  },
+  { "iatp-highpri",    { NULL }, 6998,  "tcp"  },
+  { "iatp-highpri",    { NULL }, 6998,  "udp"  },
+  { "iatp-normalpri",  { NULL }, 6999,  "tcp"  },
+  { "iatp-normalpri",  { NULL }, 6999,  "udp"  },
+  { "afs3-fileserver", { NULL }, 7000,  "tcp"  },
+  { "afs3-fileserver", { NULL }, 7000,  "udp"  },
+  { "afs3-callback",   { NULL }, 7001,  "tcp"  },
+  { "afs3-callback",   { NULL }, 7001,  "udp"  },
+  { "afs3-prserver",   { NULL }, 7002,  "tcp"  },
+  { "afs3-prserver",   { NULL }, 7002,  "udp"  },
+  { "afs3-vlserver",   { NULL }, 7003,  "tcp"  },
+  { "afs3-vlserver",   { NULL }, 7003,  "udp"  },
+  { "afs3-kaserver",   { NULL }, 7004,  "tcp"  },
+  { "afs3-kaserver",   { NULL }, 7004,  "udp"  },
+  { "afs3-volser",     { NULL }, 7005,  "tcp"  },
+  { "afs3-volser",     { NULL }, 7005,  "udp"  },
+  { "afs3-errors",     { NULL }, 7006,  "tcp"  },
+  { "afs3-errors",     { NULL }, 7006,  "udp"  },
+  { "afs3-bos",        { NULL }, 7007,  "tcp"  },
+  { "afs3-bos",        { NULL }, 7007,  "udp"  },
+  { "afs3-update",     { NULL }, 7008,  "tcp"  },
+  { "afs3-update",     { NULL }, 7008,  "udp"  },
+  { "afs3-rmtsys",     { NULL }, 7009,  "tcp"  },
+  { "afs3-rmtsys",     { NULL }, 7009,  "udp"  },
+  { "ups-onlinet",     { NULL }, 7010,  "tcp"  },
+  { "ups-onlinet",     { NULL }, 7010,  "udp"  },
+  { "talon-disc",      { NULL }, 7011,  "tcp"  },
+  { "talon-disc",      { NULL }, 7011,  "udp"  },
+  { "talon-engine",    { NULL }, 7012,  "tcp"  },
+  { "talon-engine",    { NULL }, 7012,  "udp"  },
+  { "microtalon-dis",  { NULL }, 7013,  "tcp"  },
+  { "microtalon-dis",  { NULL }, 7013,  "udp"  },
+  { "microtalon-com",  { NULL }, 7014,  "tcp"  },
+  { "microtalon-com",  { NULL }, 7014,  "udp"  },
+  { "talon-webserver", { NULL }, 7015,  "tcp"  },
+  { "talon-webserver", { NULL }, 7015,  "udp"  },
+  { "dpserve",         { NULL }, 7020,  "tcp"  },
+  { "dpserve",         { NULL }, 7020,  "udp"  },
+  { "dpserveadmin",    { NULL }, 7021,  "tcp"  },
+  { "dpserveadmin",    { NULL }, 7021,  "udp"  },
+  { "ctdp",            { NULL }, 7022,  "tcp"  },
+  { "ctdp",            { NULL }, 7022,  "udp"  },
+  { "ct2nmcs",         { NULL }, 7023,  "tcp"  },
+  { "ct2nmcs",         { NULL }, 7023,  "udp"  },
+  { "vmsvc",           { NULL }, 7024,  "tcp"  },
+  { "vmsvc",           { NULL }, 7024,  "udp"  },
+  { "vmsvc-2",         { NULL }, 7025,  "tcp"  },
+  { "vmsvc-2",         { NULL }, 7025,  "udp"  },
+  { "op-probe",        { NULL }, 7030,  "tcp"  },
+  { "op-probe",        { NULL }, 7030,  "udp"  },
+  { "arcp",            { NULL }, 7070,  "tcp"  },
+  { "arcp",            { NULL }, 7070,  "udp"  },
+  { "iwg1",            { NULL }, 7071,  "tcp"  },
+  { "iwg1",            { NULL }, 7071,  "udp"  },
+  { "empowerid",       { NULL }, 7080,  "tcp"  },
+  { "empowerid",       { NULL }, 7080,  "udp"  },
+  { "lazy-ptop",       { NULL }, 7099,  "tcp"  },
+  { "lazy-ptop",       { NULL }, 7099,  "udp"  },
+  { "font-service",    { NULL }, 7100,  "tcp"  },
+  { "font-service",    { NULL }, 7100,  "udp"  },
+  { "elcn",            { NULL }, 7101,  "tcp"  },
+  { "elcn",            { NULL }, 7101,  "udp"  },
+  { "aes-x170",        { NULL }, 7107,  "udp"  },
+  { "virprot-lm",      { NULL }, 7121,  "tcp"  },
+  { "virprot-lm",      { NULL }, 7121,  "udp"  },
+  { "scenidm",         { NULL }, 7128,  "tcp"  },
+  { "scenidm",         { NULL }, 7128,  "udp"  },
+  { "scenccs",         { NULL }, 7129,  "tcp"  },
+  { "scenccs",         { NULL }, 7129,  "udp"  },
+  { "cabsm-comm",      { NULL }, 7161,  "tcp"  },
+  { "cabsm-comm",      { NULL }, 7161,  "udp"  },
+  { "caistoragemgr",   { NULL }, 7162,  "tcp"  },
+  { "caistoragemgr",   { NULL }, 7162,  "udp"  },
+  { "cacsambroker",    { NULL }, 7163,  "tcp"  },
+  { "cacsambroker",    { NULL }, 7163,  "udp"  },
+  { "fsr",             { NULL }, 7164,  "tcp"  },
+  { "fsr",             { NULL }, 7164,  "udp"  },
+  { "doc-server",      { NULL }, 7165,  "tcp"  },
+  { "doc-server",      { NULL }, 7165,  "udp"  },
+  { "aruba-server",    { NULL }, 7166,  "tcp"  },
+  { "aruba-server",    { NULL }, 7166,  "udp"  },
+  { "casrmagent",      { NULL }, 7167,  "tcp"  },
+  { "cnckadserver",    { NULL }, 7168,  "tcp"  },
+  { "ccag-pib",        { NULL }, 7169,  "tcp"  },
+  { "ccag-pib",        { NULL }, 7169,  "udp"  },
+  { "nsrp",            { NULL }, 7170,  "tcp"  },
+  { "nsrp",            { NULL }, 7170,  "udp"  },
+  { "drm-production",  { NULL }, 7171,  "tcp"  },
+  { "drm-production",  { NULL }, 7171,  "udp"  },
+  { "zsecure",         { NULL }, 7173,  "tcp"  },
+  { "clutild",         { NULL }, 7174,  "tcp"  },
+  { "clutild",         { NULL }, 7174,  "udp"  },
+  { "fodms",           { NULL }, 7200,  "tcp"  },
+  { "fodms",           { NULL }, 7200,  "udp"  },
+  { "dlip",            { NULL }, 7201,  "tcp"  },
+  { "dlip",            { NULL }, 7201,  "udp"  },
+  { "ramp",            { NULL }, 7227,  "tcp"  },
+  { "ramp",            { NULL }, 7227,  "udp"  },
+  { "citrixupp",       { NULL }, 7228,  "tcp"  },
+  { "citrixuppg",      { NULL }, 7229,  "tcp"  },
+  { "pads",            { NULL }, 7237,  "tcp"  },
+  { "cnap",            { NULL }, 7262,  "tcp"  },
+  { "cnap",            { NULL }, 7262,  "udp"  },
+  { "watchme-7272",    { NULL }, 7272,  "tcp"  },
+  { "watchme-7272",    { NULL }, 7272,  "udp"  },
+  { "oma-rlp",         { NULL }, 7273,  "tcp"  },
+  { "oma-rlp",         { NULL }, 7273,  "udp"  },
+  { "oma-rlp-s",       { NULL }, 7274,  "tcp"  },
+  { "oma-rlp-s",       { NULL }, 7274,  "udp"  },
+  { "oma-ulp",         { NULL }, 7275,  "tcp"  },
+  { "oma-ulp",         { NULL }, 7275,  "udp"  },
+  { "oma-ilp",         { NULL }, 7276,  "tcp"  },
+  { "oma-ilp",         { NULL }, 7276,  "udp"  },
+  { "oma-ilp-s",       { NULL }, 7277,  "tcp"  },
+  { "oma-ilp-s",       { NULL }, 7277,  "udp"  },
+  { "oma-dcdocbs",     { NULL }, 7278,  "tcp"  },
+  { "oma-dcdocbs",     { NULL }, 7278,  "udp"  },
+  { "ctxlic",          { NULL }, 7279,  "tcp"  },
+  { "ctxlic",          { NULL }, 7279,  "udp"  },
+  { "itactionserver1", { NULL }, 7280,  "tcp"  },
+  { "itactionserver1", { NULL }, 7280,  "udp"  },
+  { "itactionserver2", { NULL }, 7281,  "tcp"  },
+  { "itactionserver2", { NULL }, 7281,  "udp"  },
+  { "mzca-action",     { NULL }, 7282,  "tcp"  },
+  { "mzca-alert",      { NULL }, 7282,  "udp"  },
+  { "lcm-server",      { NULL }, 7365,  "tcp"  },
+  { "lcm-server",      { NULL }, 7365,  "udp"  },
+  { "mindfilesys",     { NULL }, 7391,  "tcp"  },
+  { "mindfilesys",     { NULL }, 7391,  "udp"  },
+  { "mrssrendezvous",  { NULL }, 7392,  "tcp"  },
+  { "mrssrendezvous",  { NULL }, 7392,  "udp"  },
+  { "nfoldman",        { NULL }, 7393,  "tcp"  },
+  { "nfoldman",        { NULL }, 7393,  "udp"  },
+  { "fse",             { NULL }, 7394,  "tcp"  },
+  { "fse",             { NULL }, 7394,  "udp"  },
+  { "winqedit",        { NULL }, 7395,  "tcp"  },
+  { "winqedit",        { NULL }, 7395,  "udp"  },
+  { "hexarc",          { NULL }, 7397,  "tcp"  },
+  { "hexarc",          { NULL }, 7397,  "udp"  },
+  { "rtps-discovery",  { NULL }, 7400,  "tcp"  },
+  { "rtps-discovery",  { NULL }, 7400,  "udp"  },
+  { "rtps-dd-ut",      { NULL }, 7401,  "tcp"  },
+  { "rtps-dd-ut",      { NULL }, 7401,  "udp"  },
+  { "rtps-dd-mt",      { NULL }, 7402,  "tcp"  },
+  { "rtps-dd-mt",      { NULL }, 7402,  "udp"  },
+  { "ionixnetmon",     { NULL }, 7410,  "tcp"  },
+  { "ionixnetmon",     { NULL }, 7410,  "udp"  },
+  { "mtportmon",       { NULL }, 7421,  "tcp"  },
+  { "mtportmon",       { NULL }, 7421,  "udp"  },
+  { "pmdmgr",          { NULL }, 7426,  "tcp"  },
+  { "pmdmgr",          { NULL }, 7426,  "udp"  },
+  { "oveadmgr",        { NULL }, 7427,  "tcp"  },
+  { "oveadmgr",        { NULL }, 7427,  "udp"  },
+  { "ovladmgr",        { NULL }, 7428,  "tcp"  },
+  { "ovladmgr",        { NULL }, 7428,  "udp"  },
+  { "opi-sock",        { NULL }, 7429,  "tcp"  },
+  { "opi-sock",        { NULL }, 7429,  "udp"  },
+  { "xmpv7",           { NULL }, 7430,  "tcp"  },
+  { "xmpv7",           { NULL }, 7430,  "udp"  },
+  { "pmd",             { NULL }, 7431,  "tcp"  },
+  { "pmd",             { NULL }, 7431,  "udp"  },
+  { "faximum",         { NULL }, 7437,  "tcp"  },
+  { "faximum",         { NULL }, 7437,  "udp"  },
+  { "oracleas-https",  { NULL }, 7443,  "tcp"  },
+  { "oracleas-https",  { NULL }, 7443,  "udp"  },
+  { "rise",            { NULL }, 7473,  "tcp"  },
+  { "rise",            { NULL }, 7473,  "udp"  },
+  { "telops-lmd",      { NULL }, 7491,  "tcp"  },
+  { "telops-lmd",      { NULL }, 7491,  "udp"  },
+  { "silhouette",      { NULL }, 7500,  "tcp"  },
+  { "silhouette",      { NULL }, 7500,  "udp"  },
+  { "ovbus",           { NULL }, 7501,  "tcp"  },
+  { "ovbus",           { NULL }, 7501,  "udp"  },
+  { "acplt",           { NULL }, 7509,  "tcp"  },
+  { "ovhpas",          { NULL }, 7510,  "tcp"  },
+  { "ovhpas",          { NULL }, 7510,  "udp"  },
+  { "pafec-lm",        { NULL }, 7511,  "tcp"  },
+  { "pafec-lm",        { NULL }, 7511,  "udp"  },
+  { "saratoga",        { NULL }, 7542,  "tcp"  },
+  { "saratoga",        { NULL }, 7542,  "udp"  },
+  { "atul",            { NULL }, 7543,  "tcp"  },
+  { "atul",            { NULL }, 7543,  "udp"  },
+  { "nta-ds",          { NULL }, 7544,  "tcp"  },
+  { "nta-ds",          { NULL }, 7544,  "udp"  },
+  { "nta-us",          { NULL }, 7545,  "tcp"  },
+  { "nta-us",          { NULL }, 7545,  "udp"  },
+  { "cfs",             { NULL }, 7546,  "tcp"  },
+  { "cfs",             { NULL }, 7546,  "udp"  },
+  { "cwmp",            { NULL }, 7547,  "tcp"  },
+  { "cwmp",            { NULL }, 7547,  "udp"  },
+  { "tidp",            { NULL }, 7548,  "tcp"  },
+  { "tidp",            { NULL }, 7548,  "udp"  },
+  { "nls-tl",          { NULL }, 7549,  "tcp"  },
+  { "nls-tl",          { NULL }, 7549,  "udp"  },
+  { "sncp",            { NULL }, 7560,  "tcp"  },
+  { "sncp",            { NULL }, 7560,  "udp"  },
+  { "cfw",             { NULL }, 7563,  "tcp"  },
+  { "vsi-omega",       { NULL }, 7566,  "tcp"  },
+  { "vsi-omega",       { NULL }, 7566,  "udp"  },
+  { "dell-eql-asm",    { NULL }, 7569,  "tcp"  },
+  { "aries-kfinder",   { NULL }, 7570,  "tcp"  },
+  { "aries-kfinder",   { NULL }, 7570,  "udp"  },
+  { "sun-lm",          { NULL }, 7588,  "tcp"  },
+  { "sun-lm",          { NULL }, 7588,  "udp"  },
+  { "indi",            { NULL }, 7624,  "tcp"  },
+  { "indi",            { NULL }, 7624,  "udp"  },
+  { "simco",           { NULL }, 7626,  "tcp"  },
+  { "simco",           { NULL }, 7626,  "sctp" },
+  { "soap-http",       { NULL }, 7627,  "tcp"  },
+  { "soap-http",       { NULL }, 7627,  "udp"  },
+  { "zen-pawn",        { NULL }, 7628,  "tcp"  },
+  { "zen-pawn",        { NULL }, 7628,  "udp"  },
+  { "xdas",            { NULL }, 7629,  "tcp"  },
+  { "xdas",            { NULL }, 7629,  "udp"  },
+  { "hawk",            { NULL }, 7630,  "tcp"  },
+  { "tesla-sys-msg",   { NULL }, 7631,  "tcp"  },
+  { "pmdfmgt",         { NULL }, 7633,  "tcp"  },
+  { "pmdfmgt",         { NULL }, 7633,  "udp"  },
+  { "cuseeme",         { NULL }, 7648,  "tcp"  },
+  { "cuseeme",         { NULL }, 7648,  "udp"  },
+  { "imqstomp",        { NULL }, 7672,  "tcp"  },
+  { "imqstomps",       { NULL }, 7673,  "tcp"  },
+  { "imqtunnels",      { NULL }, 7674,  "tcp"  },
+  { "imqtunnels",      { NULL }, 7674,  "udp"  },
+  { "imqtunnel",       { NULL }, 7675,  "tcp"  },
+  { "imqtunnel",       { NULL }, 7675,  "udp"  },
+  { "imqbrokerd",      { NULL }, 7676,  "tcp"  },
+  { "imqbrokerd",      { NULL }, 7676,  "udp"  },
+  { "sun-user-https",  { NULL }, 7677,  "tcp"  },
+  { "sun-user-https",  { NULL }, 7677,  "udp"  },
+  { "pando-pub",       { NULL }, 7680,  "tcp"  },
+  { "pando-pub",       { NULL }, 7680,  "udp"  },
+  { "collaber",        { NULL }, 7689,  "tcp"  },
+  { "collaber",        { NULL }, 7689,  "udp"  },
+  { "klio",            { NULL }, 7697,  "tcp"  },
+  { "klio",            { NULL }, 7697,  "udp"  },
+  { "em7-secom",       { NULL }, 7700,  "tcp"  },
+  { "sync-em7",        { NULL }, 7707,  "tcp"  },
+  { "sync-em7",        { NULL }, 7707,  "udp"  },
+  { "scinet",          { NULL }, 7708,  "tcp"  },
+  { "scinet",          { NULL }, 7708,  "udp"  },
+  { "medimageportal",  { NULL }, 7720,  "tcp"  },
+  { "medimageportal",  { NULL }, 7720,  "udp"  },
+  { "nsdeepfreezectl", { NULL }, 7724,  "tcp"  },
+  { "nsdeepfreezectl", { NULL }, 7724,  "udp"  },
+  { "nitrogen",        { NULL }, 7725,  "tcp"  },
+  { "nitrogen",        { NULL }, 7725,  "udp"  },
+  { "freezexservice",  { NULL }, 7726,  "tcp"  },
+  { "freezexservice",  { NULL }, 7726,  "udp"  },
+  { "trident-data",    { NULL }, 7727,  "tcp"  },
+  { "trident-data",    { NULL }, 7727,  "udp"  },
+  { "smip",            { NULL }, 7734,  "tcp"  },
+  { "smip",            { NULL }, 7734,  "udp"  },
+  { "aiagent",         { NULL }, 7738,  "tcp"  },
+  { "aiagent",         { NULL }, 7738,  "udp"  },
+  { "scriptview",      { NULL }, 7741,  "tcp"  },
+  { "scriptview",      { NULL }, 7741,  "udp"  },
+  { "msss",            { NULL }, 7742,  "tcp"  },
+  { "sstp-1",          { NULL }, 7743,  "tcp"  },
+  { "sstp-1",          { NULL }, 7743,  "udp"  },
+  { "raqmon-pdu",      { NULL }, 7744,  "tcp"  },
+  { "raqmon-pdu",      { NULL }, 7744,  "udp"  },
+  { "prgp",            { NULL }, 7747,  "tcp"  },
+  { "prgp",            { NULL }, 7747,  "udp"  },
+  { "cbt",             { NULL }, 7777,  "tcp"  },
+  { "cbt",             { NULL }, 7777,  "udp"  },
+  { "interwise",       { NULL }, 7778,  "tcp"  },
+  { "interwise",       { NULL }, 7778,  "udp"  },
+  { "vstat",           { NULL }, 7779,  "tcp"  },
+  { "vstat",           { NULL }, 7779,  "udp"  },
+  { "accu-lmgr",       { NULL }, 7781,  "tcp"  },
+  { "accu-lmgr",       { NULL }, 7781,  "udp"  },
+  { "minivend",        { NULL }, 7786,  "tcp"  },
+  { "minivend",        { NULL }, 7786,  "udp"  },
+  { "popup-reminders", { NULL }, 7787,  "tcp"  },
+  { "popup-reminders", { NULL }, 7787,  "udp"  },
+  { "office-tools",    { NULL }, 7789,  "tcp"  },
+  { "office-tools",    { NULL }, 7789,  "udp"  },
+  { "q3ade",           { NULL }, 7794,  "tcp"  },
+  { "q3ade",           { NULL }, 7794,  "udp"  },
+  { "pnet-conn",       { NULL }, 7797,  "tcp"  },
+  { "pnet-conn",       { NULL }, 7797,  "udp"  },
+  { "pnet-enc",        { NULL }, 7798,  "tcp"  },
+  { "pnet-enc",        { NULL }, 7798,  "udp"  },
+  { "altbsdp",         { NULL }, 7799,  "tcp"  },
+  { "altbsdp",         { NULL }, 7799,  "udp"  },
+  { "asr",             { NULL }, 7800,  "tcp"  },
+  { "asr",             { NULL }, 7800,  "udp"  },
+  { "ssp-client",      { NULL }, 7801,  "tcp"  },
+  { "ssp-client",      { NULL }, 7801,  "udp"  },
+  { "rbt-wanopt",      { NULL }, 7810,  "tcp"  },
+  { "rbt-wanopt",      { NULL }, 7810,  "udp"  },
+  { "apc-7845",        { NULL }, 7845,  "tcp"  },
+  { "apc-7845",        { NULL }, 7845,  "udp"  },
+  { "apc-7846",        { NULL }, 7846,  "tcp"  },
+  { "apc-7846",        { NULL }, 7846,  "udp"  },
+  { "mobileanalyzer",  { NULL }, 7869,  "tcp"  },
+  { "rbt-smc",         { NULL }, 7870,  "tcp"  },
+  { "pss",             { NULL }, 7880,  "tcp"  },
+  { "pss",             { NULL }, 7880,  "udp"  },
+  { "ubroker",         { NULL }, 7887,  "tcp"  },
+  { "ubroker",         { NULL }, 7887,  "udp"  },
+  { "mevent",          { NULL }, 7900,  "tcp"  },
+  { "mevent",          { NULL }, 7900,  "udp"  },
+  { "tnos-sp",         { NULL }, 7901,  "tcp"  },
+  { "tnos-sp",         { NULL }, 7901,  "udp"  },
+  { "tnos-dp",         { NULL }, 7902,  "tcp"  },
+  { "tnos-dp",         { NULL }, 7902,  "udp"  },
+  { "tnos-dps",        { NULL }, 7903,  "tcp"  },
+  { "tnos-dps",        { NULL }, 7903,  "udp"  },
+  { "qo-secure",       { NULL }, 7913,  "tcp"  },
+  { "qo-secure",       { NULL }, 7913,  "udp"  },
+  { "t2-drm",          { NULL }, 7932,  "tcp"  },
+  { "t2-drm",          { NULL }, 7932,  "udp"  },
+  { "t2-brm",          { NULL }, 7933,  "tcp"  },
+  { "t2-brm",          { NULL }, 7933,  "udp"  },
+  { "supercell",       { NULL }, 7967,  "tcp"  },
+  { "supercell",       { NULL }, 7967,  "udp"  },
+  { "micromuse-ncps",  { NULL }, 7979,  "tcp"  },
+  { "micromuse-ncps",  { NULL }, 7979,  "udp"  },
+  { "quest-vista",     { NULL }, 7980,  "tcp"  },
+  { "quest-vista",     { NULL }, 7980,  "udp"  },
+  { "sossd-collect",   { NULL }, 7981,  "tcp"  },
+  { "sossd-agent",     { NULL }, 7982,  "tcp"  },
+  { "sossd-disc",      { NULL }, 7982,  "udp"  },
+  { "pushns",          { NULL }, 7997,  "tcp"  },
+  { "usicontentpush",  { NULL }, 7998,  "udp"  },
+  { "irdmi2",          { NULL }, 7999,  "tcp"  },
+  { "irdmi2",          { NULL }, 7999,  "udp"  },
+  { "irdmi",           { NULL }, 8000,  "tcp"  },
+  { "irdmi",           { NULL }, 8000,  "udp"  },
+  { "vcom-tunnel",     { NULL }, 8001,  "tcp"  },
+  { "vcom-tunnel",     { NULL }, 8001,  "udp"  },
+  { "teradataordbms",  { NULL }, 8002,  "tcp"  },
+  { "teradataordbms",  { NULL }, 8002,  "udp"  },
+  { "mcreport",        { NULL }, 8003,  "tcp"  },
+  { "mcreport",        { NULL }, 8003,  "udp"  },
+  { "mxi",             { NULL }, 8005,  "tcp"  },
+  { "mxi",             { NULL }, 8005,  "udp"  },
+  { "http-alt",        { NULL }, 8008,  "tcp"  },
+  { "http-alt",        { NULL }, 8008,  "udp"  },
+  { "qbdb",            { NULL }, 8019,  "tcp"  },
+  { "qbdb",            { NULL }, 8019,  "udp"  },
+  { "intu-ec-svcdisc", { NULL }, 8020,  "tcp"  },
+  { "intu-ec-svcdisc", { NULL }, 8020,  "udp"  },
+  { "intu-ec-client",  { NULL }, 8021,  "tcp"  },
+  { "intu-ec-client",  { NULL }, 8021,  "udp"  },
+  { "oa-system",       { NULL }, 8022,  "tcp"  },
+  { "oa-system",       { NULL }, 8022,  "udp"  },
+  { "ca-audit-da",     { NULL }, 8025,  "tcp"  },
+  { "ca-audit-da",     { NULL }, 8025,  "udp"  },
+  { "ca-audit-ds",     { NULL }, 8026,  "tcp"  },
+  { "ca-audit-ds",     { NULL }, 8026,  "udp"  },
+  { "pro-ed",          { NULL }, 8032,  "tcp"  },
+  { "pro-ed",          { NULL }, 8032,  "udp"  },
+  { "mindprint",       { NULL }, 8033,  "tcp"  },
+  { "mindprint",       { NULL }, 8033,  "udp"  },
+  { "vantronix-mgmt",  { NULL }, 8034,  "tcp"  },
+  { "vantronix-mgmt",  { NULL }, 8034,  "udp"  },
+  { "ampify",          { NULL }, 8040,  "tcp"  },
+  { "ampify",          { NULL }, 8040,  "udp"  },
+  { "fs-agent",        { NULL }, 8042,  "tcp"  },
+  { "fs-server",       { NULL }, 8043,  "tcp"  },
+  { "fs-mgmt",         { NULL }, 8044,  "tcp"  },
+  { "senomix01",       { NULL }, 8052,  "tcp"  },
+  { "senomix01",       { NULL }, 8052,  "udp"  },
+  { "senomix02",       { NULL }, 8053,  "tcp"  },
+  { "senomix02",       { NULL }, 8053,  "udp"  },
+  { "senomix03",       { NULL }, 8054,  "tcp"  },
+  { "senomix03",       { NULL }, 8054,  "udp"  },
+  { "senomix04",       { NULL }, 8055,  "tcp"  },
+  { "senomix04",       { NULL }, 8055,  "udp"  },
+  { "senomix05",       { NULL }, 8056,  "tcp"  },
+  { "senomix05",       { NULL }, 8056,  "udp"  },
+  { "senomix06",       { NULL }, 8057,  "tcp"  },
+  { "senomix06",       { NULL }, 8057,  "udp"  },
+  { "senomix07",       { NULL }, 8058,  "tcp"  },
+  { "senomix07",       { NULL }, 8058,  "udp"  },
+  { "senomix08",       { NULL }, 8059,  "tcp"  },
+  { "senomix08",       { NULL }, 8059,  "udp"  },
+  { "gadugadu",        { NULL }, 8074,  "tcp"  },
+  { "gadugadu",        { NULL }, 8074,  "udp"  },
+  { "http-alt",        { NULL }, 8080,  "tcp"  },
+  { "http-alt",        { NULL }, 8080,  "udp"  },
+  { "sunproxyadmin",   { NULL }, 8081,  "tcp"  },
+  { "sunproxyadmin",   { NULL }, 8081,  "udp"  },
+  { "us-cli",          { NULL }, 8082,  "tcp"  },
+  { "us-cli",          { NULL }, 8082,  "udp"  },
+  { "us-srv",          { NULL }, 8083,  "tcp"  },
+  { "us-srv",          { NULL }, 8083,  "udp"  },
+  { "d-s-n",           { NULL }, 8086,  "tcp"  },
+  { "d-s-n",           { NULL }, 8086,  "udp"  },
+  { "simplifymedia",   { NULL }, 8087,  "tcp"  },
+  { "simplifymedia",   { NULL }, 8087,  "udp"  },
+  { "radan-http",      { NULL }, 8088,  "tcp"  },
+  { "radan-http",      { NULL }, 8088,  "udp"  },
+  { "jamlink",         { NULL }, 8091,  "tcp"  },
+  { "sac",             { NULL }, 8097,  "tcp"  },
+  { "sac",             { NULL }, 8097,  "udp"  },
+  { "xprint-server",   { NULL }, 8100,  "tcp"  },
+  { "xprint-server",   { NULL }, 8100,  "udp"  },
+  { "ldoms-migr",      { NULL }, 8101,  "tcp"  },
+  { "mtl8000-matrix",  { NULL }, 8115,  "tcp"  },
+  { "mtl8000-matrix",  { NULL }, 8115,  "udp"  },
+  { "cp-cluster",      { NULL }, 8116,  "tcp"  },
+  { "cp-cluster",      { NULL }, 8116,  "udp"  },
+  { "privoxy",         { NULL }, 8118,  "tcp"  },
+  { "privoxy",         { NULL }, 8118,  "udp"  },
+  { "apollo-data",     { NULL }, 8121,  "tcp"  },
+  { "apollo-data",     { NULL }, 8121,  "udp"  },
+  { "apollo-admin",    { NULL }, 8122,  "tcp"  },
+  { "apollo-admin",    { NULL }, 8122,  "udp"  },
+  { "paycash-online",  { NULL }, 8128,  "tcp"  },
+  { "paycash-online",  { NULL }, 8128,  "udp"  },
+  { "paycash-wbp",     { NULL }, 8129,  "tcp"  },
+  { "paycash-wbp",     { NULL }, 8129,  "udp"  },
+  { "indigo-vrmi",     { NULL }, 8130,  "tcp"  },
+  { "indigo-vrmi",     { NULL }, 8130,  "udp"  },
+  { "indigo-vbcp",     { NULL }, 8131,  "tcp"  },
+  { "indigo-vbcp",     { NULL }, 8131,  "udp"  },
+  { "dbabble",         { NULL }, 8132,  "tcp"  },
+  { "dbabble",         { NULL }, 8132,  "udp"  },
+  { "isdd",            { NULL }, 8148,  "tcp"  },
+  { "isdd",            { NULL }, 8148,  "udp"  },
+  { "patrol",          { NULL }, 8160,  "tcp"  },
+  { "patrol",          { NULL }, 8160,  "udp"  },
+  { "patrol-snmp",     { NULL }, 8161,  "tcp"  },
+  { "patrol-snmp",     { NULL }, 8161,  "udp"  },
+  { "vmware-fdm",      { NULL }, 8182,  "tcp"  },
+  { "vmware-fdm",      { NULL }, 8182,  "udp"  },
+  { "proremote",       { NULL }, 8183,  "tcp"  },
+  { "itach",           { NULL }, 8184,  "tcp"  },
+  { "itach",           { NULL }, 8184,  "udp"  },
+  { "spytechphone",    { NULL }, 8192,  "tcp"  },
+  { "spytechphone",    { NULL }, 8192,  "udp"  },
+  { "blp1",            { NULL }, 8194,  "tcp"  },
+  { "blp1",            { NULL }, 8194,  "udp"  },
+  { "blp2",            { NULL }, 8195,  "tcp"  },
+  { "blp2",            { NULL }, 8195,  "udp"  },
+  { "vvr-data",        { NULL }, 8199,  "tcp"  },
+  { "vvr-data",        { NULL }, 8199,  "udp"  },
+  { "trivnet1",        { NULL }, 8200,  "tcp"  },
+  { "trivnet1",        { NULL }, 8200,  "udp"  },
+  { "trivnet2",        { NULL }, 8201,  "tcp"  },
+  { "trivnet2",        { NULL }, 8201,  "udp"  },
+  { "lm-perfworks",    { NULL }, 8204,  "tcp"  },
+  { "lm-perfworks",    { NULL }, 8204,  "udp"  },
+  { "lm-instmgr",      { NULL }, 8205,  "tcp"  },
+  { "lm-instmgr",      { NULL }, 8205,  "udp"  },
+  { "lm-dta",          { NULL }, 8206,  "tcp"  },
+  { "lm-dta",          { NULL }, 8206,  "udp"  },
+  { "lm-sserver",      { NULL }, 8207,  "tcp"  },
+  { "lm-sserver",      { NULL }, 8207,  "udp"  },
+  { "lm-webwatcher",   { NULL }, 8208,  "tcp"  },
+  { "lm-webwatcher",   { NULL }, 8208,  "udp"  },
+  { "rexecj",          { NULL }, 8230,  "tcp"  },
+  { "rexecj",          { NULL }, 8230,  "udp"  },
+  { "synapse-nhttps",  { NULL }, 8243,  "tcp"  },
+  { "synapse-nhttps",  { NULL }, 8243,  "udp"  },
+  { "pando-sec",       { NULL }, 8276,  "tcp"  },
+  { "pando-sec",       { NULL }, 8276,  "udp"  },
+  { "synapse-nhttp",   { NULL }, 8280,  "tcp"  },
+  { "synapse-nhttp",   { NULL }, 8280,  "udp"  },
+  { "blp3",            { NULL }, 8292,  "tcp"  },
+  { "blp3",            { NULL }, 8292,  "udp"  },
+  { "hiperscan-id",    { NULL }, 8293,  "tcp"  },
+  { "blp4",            { NULL }, 8294,  "tcp"  },
+  { "blp4",            { NULL }, 8294,  "udp"  },
+  { "tmi",             { NULL }, 8300,  "tcp"  },
+  { "tmi",             { NULL }, 8300,  "udp"  },
+  { "amberon",         { NULL }, 8301,  "tcp"  },
+  { "amberon",         { NULL }, 8301,  "udp"  },
+  { "tnp-discover",    { NULL }, 8320,  "tcp"  },
+  { "tnp-discover",    { NULL }, 8320,  "udp"  },
+  { "tnp",             { NULL }, 8321,  "tcp"  },
+  { "tnp",             { NULL }, 8321,  "udp"  },
+  { "server-find",     { NULL }, 8351,  "tcp"  },
+  { "server-find",     { NULL }, 8351,  "udp"  },
+  { "cruise-enum",     { NULL }, 8376,  "tcp"  },
+  { "cruise-enum",     { NULL }, 8376,  "udp"  },
+  { "cruise-swroute",  { NULL }, 8377,  "tcp"  },
+  { "cruise-swroute",  { NULL }, 8377,  "udp"  },
+  { "cruise-config",   { NULL }, 8378,  "tcp"  },
+  { "cruise-config",   { NULL }, 8378,  "udp"  },
+  { "cruise-diags",    { NULL }, 8379,  "tcp"  },
+  { "cruise-diags",    { NULL }, 8379,  "udp"  },
+  { "cruise-update",   { NULL }, 8380,  "tcp"  },
+  { "cruise-update",   { NULL }, 8380,  "udp"  },
+  { "m2mservices",     { NULL }, 8383,  "tcp"  },
+  { "m2mservices",     { NULL }, 8383,  "udp"  },
+  { "cvd",             { NULL }, 8400,  "tcp"  },
+  { "cvd",             { NULL }, 8400,  "udp"  },
+  { "sabarsd",         { NULL }, 8401,  "tcp"  },
+  { "sabarsd",         { NULL }, 8401,  "udp"  },
+  { "abarsd",          { NULL }, 8402,  "tcp"  },
+  { "abarsd",          { NULL }, 8402,  "udp"  },
+  { "admind",          { NULL }, 8403,  "tcp"  },
+  { "admind",          { NULL }, 8403,  "udp"  },
+  { "svcloud",         { NULL }, 8404,  "tcp"  },
+  { "svbackup",        { NULL }, 8405,  "tcp"  },
+  { "espeech",         { NULL }, 8416,  "tcp"  },
+  { "espeech",         { NULL }, 8416,  "udp"  },
+  { "espeech-rtp",     { NULL }, 8417,  "tcp"  },
+  { "espeech-rtp",     { NULL }, 8417,  "udp"  },
+  { "cybro-a-bus",     { NULL }, 8442,  "tcp"  },
+  { "cybro-a-bus",     { NULL }, 8442,  "udp"  },
+  { "pcsync-https",    { NULL }, 8443,  "tcp"  },
+  { "pcsync-https",    { NULL }, 8443,  "udp"  },
+  { "pcsync-http",     { NULL }, 8444,  "tcp"  },
+  { "pcsync-http",     { NULL }, 8444,  "udp"  },
+  { "npmp",            { NULL }, 8450,  "tcp"  },
+  { "npmp",            { NULL }, 8450,  "udp"  },
+  { "cisco-avp",       { NULL }, 8470,  "tcp"  },
+  { "pim-port",        { NULL }, 8471,  "tcp"  },
+  { "pim-port",        { NULL }, 8471,  "sctp" },
+  { "otv",             { NULL }, 8472,  "tcp"  },
+  { "otv",             { NULL }, 8472,  "udp"  },
+  { "vp2p",            { NULL }, 8473,  "tcp"  },
+  { "vp2p",            { NULL }, 8473,  "udp"  },
+  { "noteshare",       { NULL }, 8474,  "tcp"  },
+  { "noteshare",       { NULL }, 8474,  "udp"  },
+  { "fmtp",            { NULL }, 8500,  "tcp"  },
+  { "fmtp",            { NULL }, 8500,  "udp"  },
+  { "rtsp-alt",        { NULL }, 8554,  "tcp"  },
+  { "rtsp-alt",        { NULL }, 8554,  "udp"  },
+  { "d-fence",         { NULL }, 8555,  "tcp"  },
+  { "d-fence",         { NULL }, 8555,  "udp"  },
+  { "oap-admin",       { NULL }, 8567,  "tcp"  },
+  { "oap-admin",       { NULL }, 8567,  "udp"  },
+  { "asterix",         { NULL }, 8600,  "tcp"  },
+  { "asterix",         { NULL }, 8600,  "udp"  },
+  { "canon-mfnp",      { NULL }, 8610,  "tcp"  },
+  { "canon-mfnp",      { NULL }, 8610,  "udp"  },
+  { "canon-bjnp1",     { NULL }, 8611,  "tcp"  },
+  { "canon-bjnp1",     { NULL }, 8611,  "udp"  },
+  { "canon-bjnp2",     { NULL }, 8612,  "tcp"  },
+  { "canon-bjnp2",     { NULL }, 8612,  "udp"  },
+  { "canon-bjnp3",     { NULL }, 8613,  "tcp"  },
+  { "canon-bjnp3",     { NULL }, 8613,  "udp"  },
+  { "canon-bjnp4",     { NULL }, 8614,  "tcp"  },
+  { "canon-bjnp4",     { NULL }, 8614,  "udp"  },
+  { "sun-as-jmxrmi",   { NULL }, 8686,  "tcp"  },
+  { "sun-as-jmxrmi",   { NULL }, 8686,  "udp"  },
+  { "vnyx",            { NULL }, 8699,  "tcp"  },
+  { "vnyx",            { NULL }, 8699,  "udp"  },
+  { "dtp-net",         { NULL }, 8732,  "udp"  },
+  { "ibus",            { NULL }, 8733,  "tcp"  },
+  { "ibus",            { NULL }, 8733,  "udp"  },
+  { "mc-appserver",    { NULL }, 8763,  "tcp"  },
+  { "mc-appserver",    { NULL }, 8763,  "udp"  },
+  { "openqueue",       { NULL }, 8764,  "tcp"  },
+  { "openqueue",       { NULL }, 8764,  "udp"  },
+  { "ultraseek-http",  { NULL }, 8765,  "tcp"  },
+  { "ultraseek-http",  { NULL }, 8765,  "udp"  },
+  { "dpap",            { NULL }, 8770,  "tcp"  },
+  { "dpap",            { NULL }, 8770,  "udp"  },
+  { "msgclnt",         { NULL }, 8786,  "tcp"  },
+  { "msgclnt",         { NULL }, 8786,  "udp"  },
+  { "msgsrvr",         { NULL }, 8787,  "tcp"  },
+  { "msgsrvr",         { NULL }, 8787,  "udp"  },
+  { "sunwebadmin",     { NULL }, 8800,  "tcp"  },
+  { "sunwebadmin",     { NULL }, 8800,  "udp"  },
+  { "truecm",          { NULL }, 8804,  "tcp"  },
+  { "truecm",          { NULL }, 8804,  "udp"  },
+  { "dxspider",        { NULL }, 8873,  "tcp"  },
+  { "dxspider",        { NULL }, 8873,  "udp"  },
+  { "cddbp-alt",       { NULL }, 8880,  "tcp"  },
+  { "cddbp-alt",       { NULL }, 8880,  "udp"  },
+  { "secure-mqtt",     { NULL }, 8883,  "tcp"  },
+  { "secure-mqtt",     { NULL }, 8883,  "udp"  },
+  { "ddi-tcp-1",       { NULL }, 8888,  "tcp"  },
+  { "ddi-udp-1",       { NULL }, 8888,  "udp"  },
+  { "ddi-tcp-2",       { NULL }, 8889,  "tcp"  },
+  { "ddi-udp-2",       { NULL }, 8889,  "udp"  },
+  { "ddi-tcp-3",       { NULL }, 8890,  "tcp"  },
+  { "ddi-udp-3",       { NULL }, 8890,  "udp"  },
+  { "ddi-tcp-4",       { NULL }, 8891,  "tcp"  },
+  { "ddi-udp-4",       { NULL }, 8891,  "udp"  },
+  { "ddi-tcp-5",       { NULL }, 8892,  "tcp"  },
+  { "ddi-udp-5",       { NULL }, 8892,  "udp"  },
+  { "ddi-tcp-6",       { NULL }, 8893,  "tcp"  },
+  { "ddi-udp-6",       { NULL }, 8893,  "udp"  },
+  { "ddi-tcp-7",       { NULL }, 8894,  "tcp"  },
+  { "ddi-udp-7",       { NULL }, 8894,  "udp"  },
+  { "ospf-lite",       { NULL }, 8899,  "tcp"  },
+  { "ospf-lite",       { NULL }, 8899,  "udp"  },
+  { "jmb-cds1",        { NULL }, 8900,  "tcp"  },
+  { "jmb-cds1",        { NULL }, 8900,  "udp"  },
+  { "jmb-cds2",        { NULL }, 8901,  "tcp"  },
+  { "jmb-cds2",        { NULL }, 8901,  "udp"  },
+  { "manyone-http",    { NULL }, 8910,  "tcp"  },
+  { "manyone-http",    { NULL }, 8910,  "udp"  },
+  { "manyone-xml",     { NULL }, 8911,  "tcp"  },
+  { "manyone-xml",     { NULL }, 8911,  "udp"  },
+  { "wcbackup",        { NULL }, 8912,  "tcp"  },
+  { "wcbackup",        { NULL }, 8912,  "udp"  },
+  { "dragonfly",       { NULL }, 8913,  "tcp"  },
+  { "dragonfly",       { NULL }, 8913,  "udp"  },
+  { "twds",            { NULL }, 8937,  "tcp"  },
+  { "cumulus-admin",   { NULL }, 8954,  "tcp"  },
+  { "cumulus-admin",   { NULL }, 8954,  "udp"  },
+  { "sunwebadmins",    { NULL }, 8989,  "tcp"  },
+  { "sunwebadmins",    { NULL }, 8989,  "udp"  },
+  { "http-wmap",       { NULL }, 8990,  "tcp"  },
+  { "http-wmap",       { NULL }, 8990,  "udp"  },
+  { "https-wmap",      { NULL }, 8991,  "tcp"  },
+  { "https-wmap",      { NULL }, 8991,  "udp"  },
+  { "bctp",            { NULL }, 8999,  "tcp"  },
+  { "bctp",            { NULL }, 8999,  "udp"  },
+  { "cslistener",      { NULL }, 9000,  "tcp"  },
+  { "cslistener",      { NULL }, 9000,  "udp"  },
+  { "etlservicemgr",   { NULL }, 9001,  "tcp"  },
+  { "etlservicemgr",   { NULL }, 9001,  "udp"  },
+  { "dynamid",         { NULL }, 9002,  "tcp"  },
+  { "dynamid",         { NULL }, 9002,  "udp"  },
+  { "ogs-client",      { NULL }, 9007,  "udp"  },
+  { "ogs-server",      { NULL }, 9008,  "tcp"  },
+  { "pichat",          { NULL }, 9009,  "tcp"  },
+  { "pichat",          { NULL }, 9009,  "udp"  },
+  { "sdr",             { NULL }, 9010,  "tcp"  },
+  { "tambora",         { NULL }, 9020,  "tcp"  },
+  { "tambora",         { NULL }, 9020,  "udp"  },
+  { "panagolin-ident", { NULL }, 9021,  "tcp"  },
+  { "panagolin-ident", { NULL }, 9021,  "udp"  },
+  { "paragent",        { NULL }, 9022,  "tcp"  },
+  { "paragent",        { NULL }, 9022,  "udp"  },
+  { "swa-1",           { NULL }, 9023,  "tcp"  },
+  { "swa-1",           { NULL }, 9023,  "udp"  },
+  { "swa-2",           { NULL }, 9024,  "tcp"  },
+  { "swa-2",           { NULL }, 9024,  "udp"  },
+  { "swa-3",           { NULL }, 9025,  "tcp"  },
+  { "swa-3",           { NULL }, 9025,  "udp"  },
+  { "swa-4",           { NULL }, 9026,  "tcp"  },
+  { "swa-4",           { NULL }, 9026,  "udp"  },
+  { "versiera",        { NULL }, 9050,  "tcp"  },
+  { "fio-cmgmt",       { NULL }, 9051,  "tcp"  },
+  { "glrpc",           { NULL }, 9080,  "tcp"  },
+  { "glrpc",           { NULL }, 9080,  "udp"  },
+  { "lcs-ap",          { NULL }, 9082,  "sctp" },
+  { "emc-pp-mgmtsvc",  { NULL }, 9083,  "tcp"  },
+  { "aurora",          { NULL }, 9084,  "tcp"  },
+  { "aurora",          { NULL }, 9084,  "udp"  },
+  { "aurora",          { NULL }, 9084,  "sctp" },
+  { "ibm-rsyscon",     { NULL }, 9085,  "tcp"  },
+  { "ibm-rsyscon",     { NULL }, 9085,  "udp"  },
+  { "net2display",     { NULL }, 9086,  "tcp"  },
+  { "net2display",     { NULL }, 9086,  "udp"  },
+  { "classic",         { NULL }, 9087,  "tcp"  },
+  { "classic",         { NULL }, 9087,  "udp"  },
+  { "sqlexec",         { NULL }, 9088,  "tcp"  },
+  { "sqlexec",         { NULL }, 9088,  "udp"  },
+  { "sqlexec-ssl",     { NULL }, 9089,  "tcp"  },
+  { "sqlexec-ssl",     { NULL }, 9089,  "udp"  },
+  { "websm",           { NULL }, 9090,  "tcp"  },
+  { "websm",           { NULL }, 9090,  "udp"  },
+  { "xmltec-xmlmail",  { NULL }, 9091,  "tcp"  },
+  { "xmltec-xmlmail",  { NULL }, 9091,  "udp"  },
+  { "XmlIpcRegSvc",    { NULL }, 9092,  "tcp"  },
+  { "XmlIpcRegSvc",    { NULL }, 9092,  "udp"  },
+  { "hp-pdl-datastr",  { NULL }, 9100,  "tcp"  },
+  { "hp-pdl-datastr",  { NULL }, 9100,  "udp"  },
+  { "pdl-datastream",  { NULL }, 9100,  "tcp"  },
+  { "pdl-datastream",  { NULL }, 9100,  "udp"  },
+  { "bacula-dir",      { NULL }, 9101,  "tcp"  },
+  { "bacula-dir",      { NULL }, 9101,  "udp"  },
+  { "bacula-fd",       { NULL }, 9102,  "tcp"  },
+  { "bacula-fd",       { NULL }, 9102,  "udp"  },
+  { "bacula-sd",       { NULL }, 9103,  "tcp"  },
+  { "bacula-sd",       { NULL }, 9103,  "udp"  },
+  { "peerwire",        { NULL }, 9104,  "tcp"  },
+  { "peerwire",        { NULL }, 9104,  "udp"  },
+  { "xadmin",          { NULL }, 9105,  "tcp"  },
+  { "xadmin",          { NULL }, 9105,  "udp"  },
+  { "astergate",       { NULL }, 9106,  "tcp"  },
+  { "astergate-disc",  { NULL }, 9106,  "udp"  },
+  { "astergatefax",    { NULL }, 9107,  "tcp"  },
+  { "mxit",            { NULL }, 9119,  "tcp"  },
+  { "mxit",            { NULL }, 9119,  "udp"  },
+  { "dddp",            { NULL }, 9131,  "tcp"  },
+  { "dddp",            { NULL }, 9131,  "udp"  },
+  { "apani1",          { NULL }, 9160,  "tcp"  },
+  { "apani1",          { NULL }, 9160,  "udp"  },
+  { "apani2",          { NULL }, 9161,  "tcp"  },
+  { "apani2",          { NULL }, 9161,  "udp"  },
+  { "apani3",          { NULL }, 9162,  "tcp"  },
+  { "apani3",          { NULL }, 9162,  "udp"  },
+  { "apani4",          { NULL }, 9163,  "tcp"  },
+  { "apani4",          { NULL }, 9163,  "udp"  },
+  { "apani5",          { NULL }, 9164,  "tcp"  },
+  { "apani5",          { NULL }, 9164,  "udp"  },
+  { "sun-as-jpda",     { NULL }, 9191,  "tcp"  },
+  { "sun-as-jpda",     { NULL }, 9191,  "udp"  },
+  { "wap-wsp",         { NULL }, 9200,  "tcp"  },
+  { "wap-wsp",         { NULL }, 9200,  "udp"  },
+  { "wap-wsp-wtp",     { NULL }, 9201,  "tcp"  },
+  { "wap-wsp-wtp",     { NULL }, 9201,  "udp"  },
+  { "wap-wsp-s",       { NULL }, 9202,  "tcp"  },
+  { "wap-wsp-s",       { NULL }, 9202,  "udp"  },
+  { "wap-wsp-wtp-s",   { NULL }, 9203,  "tcp"  },
+  { "wap-wsp-wtp-s",   { NULL }, 9203,  "udp"  },
+  { "wap-vcard",       { NULL }, 9204,  "tcp"  },
+  { "wap-vcard",       { NULL }, 9204,  "udp"  },
+  { "wap-vcal",        { NULL }, 9205,  "tcp"  },
+  { "wap-vcal",        { NULL }, 9205,  "udp"  },
+  { "wap-vcard-s",     { NULL }, 9206,  "tcp"  },
+  { "wap-vcard-s",     { NULL }, 9206,  "udp"  },
+  { "wap-vcal-s",      { NULL }, 9207,  "tcp"  },
+  { "wap-vcal-s",      { NULL }, 9207,  "udp"  },
+  { "rjcdb-vcards",    { NULL }, 9208,  "tcp"  },
+  { "rjcdb-vcards",    { NULL }, 9208,  "udp"  },
+  { "almobile-system", { NULL }, 9209,  "tcp"  },
+  { "almobile-system", { NULL }, 9209,  "udp"  },
+  { "oma-mlp",         { NULL }, 9210,  "tcp"  },
+  { "oma-mlp",         { NULL }, 9210,  "udp"  },
+  { "oma-mlp-s",       { NULL }, 9211,  "tcp"  },
+  { "oma-mlp-s",       { NULL }, 9211,  "udp"  },
+  { "serverviewdbms",  { NULL }, 9212,  "tcp"  },
+  { "serverviewdbms",  { NULL }, 9212,  "udp"  },
+  { "serverstart",     { NULL }, 9213,  "tcp"  },
+  { "serverstart",     { NULL }, 9213,  "udp"  },
+  { "ipdcesgbs",       { NULL }, 9214,  "tcp"  },
+  { "ipdcesgbs",       { NULL }, 9214,  "udp"  },
+  { "insis",           { NULL }, 9215,  "tcp"  },
+  { "insis",           { NULL }, 9215,  "udp"  },
+  { "acme",            { NULL }, 9216,  "tcp"  },
+  { "acme",            { NULL }, 9216,  "udp"  },
+  { "fsc-port",        { NULL }, 9217,  "tcp"  },
+  { "fsc-port",        { NULL }, 9217,  "udp"  },
+  { "teamcoherence",   { NULL }, 9222,  "tcp"  },
+  { "teamcoherence",   { NULL }, 9222,  "udp"  },
+  { "mon",             { NULL }, 9255,  "tcp"  },
+  { "mon",             { NULL }, 9255,  "udp"  },
+  { "pegasus",         { NULL }, 9278,  "tcp"  },
+  { "pegasus",         { NULL }, 9278,  "udp"  },
+  { "pegasus-ctl",     { NULL }, 9279,  "tcp"  },
+  { "pegasus-ctl",     { NULL }, 9279,  "udp"  },
+  { "pgps",            { NULL }, 9280,  "tcp"  },
+  { "pgps",            { NULL }, 9280,  "udp"  },
+  { "swtp-port1",      { NULL }, 9281,  "tcp"  },
+  { "swtp-port1",      { NULL }, 9281,  "udp"  },
+  { "swtp-port2",      { NULL }, 9282,  "tcp"  },
+  { "swtp-port2",      { NULL }, 9282,  "udp"  },
+  { "callwaveiam",     { NULL }, 9283,  "tcp"  },
+  { "callwaveiam",     { NULL }, 9283,  "udp"  },
+  { "visd",            { NULL }, 9284,  "tcp"  },
+  { "visd",            { NULL }, 9284,  "udp"  },
+  { "n2h2server",      { NULL }, 9285,  "tcp"  },
+  { "n2h2server",      { NULL }, 9285,  "udp"  },
+  { "n2receive",       { NULL }, 9286,  "udp"  },
+  { "cumulus",         { NULL }, 9287,  "tcp"  },
+  { "cumulus",         { NULL }, 9287,  "udp"  },
+  { "armtechdaemon",   { NULL }, 9292,  "tcp"  },
+  { "armtechdaemon",   { NULL }, 9292,  "udp"  },
+  { "storview",        { NULL }, 9293,  "tcp"  },
+  { "storview",        { NULL }, 9293,  "udp"  },
+  { "armcenterhttp",   { NULL }, 9294,  "tcp"  },
+  { "armcenterhttp",   { NULL }, 9294,  "udp"  },
+  { "armcenterhttps",  { NULL }, 9295,  "tcp"  },
+  { "armcenterhttps",  { NULL }, 9295,  "udp"  },
+  { "vrace",           { NULL }, 9300,  "tcp"  },
+  { "vrace",           { NULL }, 9300,  "udp"  },
+  { "sphinxql",        { NULL }, 9306,  "tcp"  },
+  { "sphinxapi",       { NULL }, 9312,  "tcp"  },
+  { "secure-ts",       { NULL }, 9318,  "tcp"  },
+  { "secure-ts",       { NULL }, 9318,  "udp"  },
+  { "guibase",         { NULL }, 9321,  "tcp"  },
+  { "guibase",         { NULL }, 9321,  "udp"  },
+  { "mpidcmgr",        { NULL }, 9343,  "tcp"  },
+  { "mpidcmgr",        { NULL }, 9343,  "udp"  },
+  { "mphlpdmc",        { NULL }, 9344,  "tcp"  },
+  { "mphlpdmc",        { NULL }, 9344,  "udp"  },
+  { "ctechlicensing",  { NULL }, 9346,  "tcp"  },
+  { "ctechlicensing",  { NULL }, 9346,  "udp"  },
+  { "fjdmimgr",        { NULL }, 9374,  "tcp"  },
+  { "fjdmimgr",        { NULL }, 9374,  "udp"  },
+  { "boxp",            { NULL }, 9380,  "tcp"  },
+  { "boxp",            { NULL }, 9380,  "udp"  },
+  { "d2dconfig",       { NULL }, 9387,  "tcp"  },
+  { "d2ddatatrans",    { NULL }, 9388,  "tcp"  },
+  { "adws",            { NULL }, 9389,  "tcp"  },
+  { "otp",             { NULL }, 9390,  "tcp"  },
+  { "fjinvmgr",        { NULL }, 9396,  "tcp"  },
+  { "fjinvmgr",        { NULL }, 9396,  "udp"  },
+  { "mpidcagt",        { NULL }, 9397,  "tcp"  },
+  { "mpidcagt",        { NULL }, 9397,  "udp"  },
+  { "sec-t4net-srv",   { NULL }, 9400,  "tcp"  },
+  { "sec-t4net-srv",   { NULL }, 9400,  "udp"  },
+  { "sec-t4net-clt",   { NULL }, 9401,  "tcp"  },
+  { "sec-t4net-clt",   { NULL }, 9401,  "udp"  },
+  { "sec-pc2fax-srv",  { NULL }, 9402,  "tcp"  },
+  { "sec-pc2fax-srv",  { NULL }, 9402,  "udp"  },
+  { "git",             { NULL }, 9418,  "tcp"  },
+  { "git",             { NULL }, 9418,  "udp"  },
+  { "tungsten-https",  { NULL }, 9443,  "tcp"  },
+  { "tungsten-https",  { NULL }, 9443,  "udp"  },
+  { "wso2esb-console", { NULL }, 9444,  "tcp"  },
+  { "wso2esb-console", { NULL }, 9444,  "udp"  },
+  { "sntlkeyssrvr",    { NULL }, 9450,  "tcp"  },
+  { "sntlkeyssrvr",    { NULL }, 9450,  "udp"  },
+  { "ismserver",       { NULL }, 9500,  "tcp"  },
+  { "ismserver",       { NULL }, 9500,  "udp"  },
+  { "sma-spw",         { NULL }, 9522,  "udp"  },
+  { "mngsuite",        { NULL }, 9535,  "tcp"  },
+  { "mngsuite",        { NULL }, 9535,  "udp"  },
+  { "laes-bf",         { NULL }, 9536,  "tcp"  },
+  { "laes-bf",         { NULL }, 9536,  "udp"  },
+  { "trispen-sra",     { NULL }, 9555,  "tcp"  },
+  { "trispen-sra",     { NULL }, 9555,  "udp"  },
+  { "ldgateway",       { NULL }, 9592,  "tcp"  },
+  { "ldgateway",       { NULL }, 9592,  "udp"  },
+  { "cba8",            { NULL }, 9593,  "tcp"  },
+  { "cba8",            { NULL }, 9593,  "udp"  },
+  { "msgsys",          { NULL }, 9594,  "tcp"  },
+  { "msgsys",          { NULL }, 9594,  "udp"  },
+  { "pds",             { NULL }, 9595,  "tcp"  },
+  { "pds",             { NULL }, 9595,  "udp"  },
+  { "mercury-disc",    { NULL }, 9596,  "tcp"  },
+  { "mercury-disc",    { NULL }, 9596,  "udp"  },
+  { "pd-admin",        { NULL }, 9597,  "tcp"  },
+  { "pd-admin",        { NULL }, 9597,  "udp"  },
+  { "vscp",            { NULL }, 9598,  "tcp"  },
+  { "vscp",            { NULL }, 9598,  "udp"  },
+  { "robix",           { NULL }, 9599,  "tcp"  },
+  { "robix",           { NULL }, 9599,  "udp"  },
+  { "micromuse-ncpw",  { NULL }, 9600,  "tcp"  },
+  { "micromuse-ncpw",  { NULL }, 9600,  "udp"  },
+  { "streamcomm-ds",   { NULL }, 9612,  "tcp"  },
+  { "streamcomm-ds",   { NULL }, 9612,  "udp"  },
+  { "iadt-tls",        { NULL }, 9614,  "tcp"  },
+  { "erunbook_agent",  { NULL }, 9616,  "tcp"  },
+  { "erunbook_server", { NULL }, 9617,  "tcp"  },
+  { "condor",          { NULL }, 9618,  "tcp"  },
+  { "condor",          { NULL }, 9618,  "udp"  },
+  { "odbcpathway",     { NULL }, 9628,  "tcp"  },
+  { "odbcpathway",     { NULL }, 9628,  "udp"  },
+  { "uniport",         { NULL }, 9629,  "tcp"  },
+  { "uniport",         { NULL }, 9629,  "udp"  },
+  { "peoctlr",         { NULL }, 9630,  "tcp"  },
+  { "peocoll",         { NULL }, 9631,  "tcp"  },
+  { "mc-comm",         { NULL }, 9632,  "udp"  },
+  { "pqsflows",        { NULL }, 9640,  "tcp"  },
+  { "xmms2",           { NULL }, 9667,  "tcp"  },
+  { "xmms2",           { NULL }, 9667,  "udp"  },
+  { "tec5-sdctp",      { NULL }, 9668,  "tcp"  },
+  { "tec5-sdctp",      { NULL }, 9668,  "udp"  },
+  { "client-wakeup",   { NULL }, 9694,  "tcp"  },
+  { "client-wakeup",   { NULL }, 9694,  "udp"  },
+  { "ccnx",            { NULL }, 9695,  "tcp"  },
+  { "ccnx",            { NULL }, 9695,  "udp"  },
+  { "board-roar",      { NULL }, 9700,  "tcp"  },
+  { "board-roar",      { NULL }, 9700,  "udp"  },
+  { "l5nas-parchan",   { NULL }, 9747,  "tcp"  },
+  { "l5nas-parchan",   { NULL }, 9747,  "udp"  },
+  { "board-voip",      { NULL }, 9750,  "tcp"  },
+  { "board-voip",      { NULL }, 9750,  "udp"  },
+  { "rasadv",          { NULL }, 9753,  "tcp"  },
+  { "rasadv",          { NULL }, 9753,  "udp"  },
+  { "tungsten-http",   { NULL }, 9762,  "tcp"  },
+  { "tungsten-http",   { NULL }, 9762,  "udp"  },
+  { "davsrc",          { NULL }, 9800,  "tcp"  },
+  { "davsrc",          { NULL }, 9800,  "udp"  },
+  { "sstp-2",          { NULL }, 9801,  "tcp"  },
+  { "sstp-2",          { NULL }, 9801,  "udp"  },
+  { "davsrcs",         { NULL }, 9802,  "tcp"  },
+  { "davsrcs",         { NULL }, 9802,  "udp"  },
+  { "sapv1",           { NULL }, 9875,  "tcp"  },
+  { "sapv1",           { NULL }, 9875,  "udp"  },
+  { "sd",              { NULL }, 9876,  "tcp"  },
+  { "sd",              { NULL }, 9876,  "udp"  },
+  { "cyborg-systems",  { NULL }, 9888,  "tcp"  },
+  { "cyborg-systems",  { NULL }, 9888,  "udp"  },
+  { "gt-proxy",        { NULL }, 9889,  "tcp"  },
+  { "gt-proxy",        { NULL }, 9889,  "udp"  },
+  { "monkeycom",       { NULL }, 9898,  "tcp"  },
+  { "monkeycom",       { NULL }, 9898,  "udp"  },
+  { "sctp-tunneling",  { NULL }, 9899,  "tcp"  },
+  { "sctp-tunneling",  { NULL }, 9899,  "udp"  },
+  { "iua",             { NULL }, 9900,  "tcp"  },
+  { "iua",             { NULL }, 9900,  "udp"  },
+  { "iua",             { NULL }, 9900,  "sctp" },
+  { "enrp",            { NULL }, 9901,  "udp"  },
+  { "enrp-sctp",       { NULL }, 9901,  "sctp" },
+  { "enrp-sctp-tls",   { NULL }, 9902,  "sctp" },
+  { "domaintime",      { NULL }, 9909,  "tcp"  },
+  { "domaintime",      { NULL }, 9909,  "udp"  },
+  { "sype-transport",  { NULL }, 9911,  "tcp"  },
+  { "sype-transport",  { NULL }, 9911,  "udp"  },
+  { "apc-9950",        { NULL }, 9950,  "tcp"  },
+  { "apc-9950",        { NULL }, 9950,  "udp"  },
+  { "apc-9951",        { NULL }, 9951,  "tcp"  },
+  { "apc-9951",        { NULL }, 9951,  "udp"  },
+  { "apc-9952",        { NULL }, 9952,  "tcp"  },
+  { "apc-9952",        { NULL }, 9952,  "udp"  },
+  { "acis",            { NULL }, 9953,  "tcp"  },
+  { "acis",            { NULL }, 9953,  "udp"  },
+  { "odnsp",           { NULL }, 9966,  "tcp"  },
+  { "odnsp",           { NULL }, 9966,  "udp"  },
+  { "dsm-scm-target",  { NULL }, 9987,  "tcp"  },
+  { "dsm-scm-target",  { NULL }, 9987,  "udp"  },
+  { "nsesrvr",         { NULL }, 9988,  "tcp"  },
+  { "osm-appsrvr",     { NULL }, 9990,  "tcp"  },
+  { "osm-appsrvr",     { NULL }, 9990,  "udp"  },
+  { "osm-oev",         { NULL }, 9991,  "tcp"  },
+  { "osm-oev",         { NULL }, 9991,  "udp"  },
+  { "palace-1",        { NULL }, 9992,  "tcp"  },
+  { "palace-1",        { NULL }, 9992,  "udp"  },
+  { "palace-2",        { NULL }, 9993,  "tcp"  },
+  { "palace-2",        { NULL }, 9993,  "udp"  },
+  { "palace-3",        { NULL }, 9994,  "tcp"  },
+  { "palace-3",        { NULL }, 9994,  "udp"  },
+  { "palace-4",        { NULL }, 9995,  "tcp"  },
+  { "palace-4",        { NULL }, 9995,  "udp"  },
+  { "palace-5",        { NULL }, 9996,  "tcp"  },
+  { "palace-5",        { NULL }, 9996,  "udp"  },
+  { "palace-6",        { NULL }, 9997,  "tcp"  },
+  { "palace-6",        { NULL }, 9997,  "udp"  },
+  { "distinct32",      { NULL }, 9998,  "tcp"  },
+  { "distinct32",      { NULL }, 9998,  "udp"  },
+  { "distinct",        { NULL }, 9999,  "tcp"  },
+  { "distinct",        { NULL }, 9999,  "udp"  },
+  { "ndmp",            { NULL }, 10000, "tcp"  },
+  { "ndmp",            { NULL }, 10000, "udp"  },
+  { "scp-config",      { NULL }, 10001, "tcp"  },
+  { "scp-config",      { NULL }, 10001, "udp"  },
+  { "documentum",      { NULL }, 10002, "tcp"  },
+  { "documentum",      { NULL }, 10002, "udp"  },
+  { "documentum_s",    { NULL }, 10003, "tcp"  },
+  { "documentum_s",    { NULL }, 10003, "udp"  },
+  { "emcrmirccd",      { NULL }, 10004, "tcp"  },
+  { "emcrmird",        { NULL }, 10005, "tcp"  },
+  { "mvs-capacity",    { NULL }, 10007, "tcp"  },
+  { "mvs-capacity",    { NULL }, 10007, "udp"  },
+  { "octopus",         { NULL }, 10008, "tcp"  },
+  { "octopus",         { NULL }, 10008, "udp"  },
+  { "swdtp-sv",        { NULL }, 10009, "tcp"  },
+  { "swdtp-sv",        { NULL }, 10009, "udp"  },
+  { "rxapi",           { NULL }, 10010, "tcp"  },
+  { "zabbix-agent",    { NULL }, 10050, "tcp"  },
+  { "zabbix-agent",    { NULL }, 10050, "udp"  },
+  { "zabbix-trapper",  { NULL }, 10051, "tcp"  },
+  { "zabbix-trapper",  { NULL }, 10051, "udp"  },
+  { "qptlmd",          { NULL }, 10055, "tcp"  },
+  { "amanda",          { NULL }, 10080, "tcp"  },
+  { "amanda",          { NULL }, 10080, "udp"  },
+  { "famdc",           { NULL }, 10081, "tcp"  },
+  { "famdc",           { NULL }, 10081, "udp"  },
+  { "itap-ddtp",       { NULL }, 10100, "tcp"  },
+  { "itap-ddtp",       { NULL }, 10100, "udp"  },
+  { "ezmeeting-2",     { NULL }, 10101, "tcp"  },
+  { "ezmeeting-2",     { NULL }, 10101, "udp"  },
+  { "ezproxy-2",       { NULL }, 10102, "tcp"  },
+  { "ezproxy-2",       { NULL }, 10102, "udp"  },
+  { "ezrelay",         { NULL }, 10103, "tcp"  },
+  { "ezrelay",         { NULL }, 10103, "udp"  },
+  { "swdtp",           { NULL }, 10104, "tcp"  },
+  { "swdtp",           { NULL }, 10104, "udp"  },
+  { "bctp-server",     { NULL }, 10107, "tcp"  },
+  { "bctp-server",     { NULL }, 10107, "udp"  },
+  { "nmea-0183",       { NULL }, 10110, "tcp"  },
+  { "nmea-0183",       { NULL }, 10110, "udp"  },
+  { "netiq-endpoint",  { NULL }, 10113, "tcp"  },
+  { "netiq-endpoint",  { NULL }, 10113, "udp"  },
+  { "netiq-qcheck",    { NULL }, 10114, "tcp"  },
+  { "netiq-qcheck",    { NULL }, 10114, "udp"  },
+  { "netiq-endpt",     { NULL }, 10115, "tcp"  },
+  { "netiq-endpt",     { NULL }, 10115, "udp"  },
+  { "netiq-voipa",     { NULL }, 10116, "tcp"  },
+  { "netiq-voipa",     { NULL }, 10116, "udp"  },
+  { "iqrm",            { NULL }, 10117, "tcp"  },
+  { "iqrm",            { NULL }, 10117, "udp"  },
+  { "bmc-perf-sd",     { NULL }, 10128, "tcp"  },
+  { "bmc-perf-sd",     { NULL }, 10128, "udp"  },
+  { "bmc-gms",         { NULL }, 10129, "tcp"  },
+  { "qb-db-server",    { NULL }, 10160, "tcp"  },
+  { "qb-db-server",    { NULL }, 10160, "udp"  },
+  { "snmptls",         { NULL }, 10161, "tcp"  },
+  { "snmpdtls",        { NULL }, 10161, "udp"  },
+  { "snmptls-trap",    { NULL }, 10162, "tcp"  },
+  { "snmpdtls-trap",   { NULL }, 10162, "udp"  },
+  { "trisoap",         { NULL }, 10200, "tcp"  },
+  { "trisoap",         { NULL }, 10200, "udp"  },
+  { "rsms",            { NULL }, 10201, "tcp"  },
+  { "rscs",            { NULL }, 10201, "udp"  },
+  { "apollo-relay",    { NULL }, 10252, "tcp"  },
+  { "apollo-relay",    { NULL }, 10252, "udp"  },
+  { "axis-wimp-port",  { NULL }, 10260, "tcp"  },
+  { "axis-wimp-port",  { NULL }, 10260, "udp"  },
+  { "blocks",          { NULL }, 10288, "tcp"  },
+  { "blocks",          { NULL }, 10288, "udp"  },
+  { "cosir",           { NULL }, 10321, "tcp"  },
+  { "hip-nat-t",       { NULL }, 10500, "udp"  },
+  { "MOS-lower",       { NULL }, 10540, "tcp"  },
+  { "MOS-lower",       { NULL }, 10540, "udp"  },
+  { "MOS-upper",       { NULL }, 10541, "tcp"  },
+  { "MOS-upper",       { NULL }, 10541, "udp"  },
+  { "MOS-aux",         { NULL }, 10542, "tcp"  },
+  { "MOS-aux",         { NULL }, 10542, "udp"  },
+  { "MOS-soap",        { NULL }, 10543, "tcp"  },
+  { "MOS-soap",        { NULL }, 10543, "udp"  },
+  { "MOS-soap-opt",    { NULL }, 10544, "tcp"  },
+  { "MOS-soap-opt",    { NULL }, 10544, "udp"  },
+  { "gap",             { NULL }, 10800, "tcp"  },
+  { "gap",             { NULL }, 10800, "udp"  },
+  { "lpdg",            { NULL }, 10805, "tcp"  },
+  { "lpdg",            { NULL }, 10805, "udp"  },
+  { "nbd",             { NULL }, 10809, "tcp"  },
+  { "nmc-disc",        { NULL }, 10810, "udp"  },
+  { "helix",           { NULL }, 10860, "tcp"  },
+  { "helix",           { NULL }, 10860, "udp"  },
+  { "rmiaux",          { NULL }, 10990, "tcp"  },
+  { "rmiaux",          { NULL }, 10990, "udp"  },
+  { "irisa",           { NULL }, 11000, "tcp"  },
+  { "irisa",           { NULL }, 11000, "udp"  },
+  { "metasys",         { NULL }, 11001, "tcp"  },
+  { "metasys",         { NULL }, 11001, "udp"  },
+  { "netapp-icmgmt",   { NULL }, 11104, "tcp"  },
+  { "netapp-icdata",   { NULL }, 11105, "tcp"  },
+  { "sgi-lk",          { NULL }, 11106, "tcp"  },
+  { "sgi-lk",          { NULL }, 11106, "udp"  },
+  { "vce",             { NULL }, 11111, "tcp"  },
+  { "vce",             { NULL }, 11111, "udp"  },
+  { "dicom",           { NULL }, 11112, "tcp"  },
+  { "dicom",           { NULL }, 11112, "udp"  },
+  { "suncacao-snmp",   { NULL }, 11161, "tcp"  },
+  { "suncacao-snmp",   { NULL }, 11161, "udp"  },
+  { "suncacao-jmxmp",  { NULL }, 11162, "tcp"  },
+  { "suncacao-jmxmp",  { NULL }, 11162, "udp"  },
+  { "suncacao-rmi",    { NULL }, 11163, "tcp"  },
+  { "suncacao-rmi",    { NULL }, 11163, "udp"  },
+  { "suncacao-csa",    { NULL }, 11164, "tcp"  },
+  { "suncacao-csa",    { NULL }, 11164, "udp"  },
+  { "suncacao-websvc", { NULL }, 11165, "tcp"  },
+  { "suncacao-websvc", { NULL }, 11165, "udp"  },
+  { "snss",            { NULL }, 11171, "udp"  },
+  { "oemcacao-jmxmp",  { NULL }, 11172, "tcp"  },
+  { "oemcacao-rmi",    { NULL }, 11174, "tcp"  },
+  { "oemcacao-websvc", { NULL }, 11175, "tcp"  },
+  { "smsqp",           { NULL }, 11201, "tcp"  },
+  { "smsqp",           { NULL }, 11201, "udp"  },
+  { "wifree",          { NULL }, 11208, "tcp"  },
+  { "wifree",          { NULL }, 11208, "udp"  },
+  { "memcache",        { NULL }, 11211, "tcp"  },
+  { "memcache",        { NULL }, 11211, "udp"  },
+  { "imip",            { NULL }, 11319, "tcp"  },
+  { "imip",            { NULL }, 11319, "udp"  },
+  { "imip-channels",   { NULL }, 11320, "tcp"  },
+  { "imip-channels",   { NULL }, 11320, "udp"  },
+  { "arena-server",    { NULL }, 11321, "tcp"  },
+  { "arena-server",    { NULL }, 11321, "udp"  },
+  { "atm-uhas",        { NULL }, 11367, "tcp"  },
+  { "atm-uhas",        { NULL }, 11367, "udp"  },
+  { "hkp",             { NULL }, 11371, "tcp"  },
+  { "hkp",             { NULL }, 11371, "udp"  },
+  { "asgcypresstcps",  { NULL }, 11489, "tcp"  },
+  { "tempest-port",    { NULL }, 11600, "tcp"  },
+  { "tempest-port",    { NULL }, 11600, "udp"  },
+  { "h323callsigalt",  { NULL }, 11720, "tcp"  },
+  { "h323callsigalt",  { NULL }, 11720, "udp"  },
+  { "intrepid-ssl",    { NULL }, 11751, "tcp"  },
+  { "intrepid-ssl",    { NULL }, 11751, "udp"  },
+  { "xoraya",          { NULL }, 11876, "tcp"  },
+  { "xoraya",          { NULL }, 11876, "udp"  },
+  { "x2e-disc",        { NULL }, 11877, "udp"  },
+  { "sysinfo-sp",      { NULL }, 11967, "tcp"  },
+  { "sysinfo-sp",      { NULL }, 11967, "udp"  },
+  { "wmereceiving",    { NULL }, 11997, "sctp" },
+  { "wmedistribution", { NULL }, 11998, "sctp" },
+  { "wmereporting",    { NULL }, 11999, "sctp" },
+  { "entextxid",       { NULL }, 12000, "tcp"  },
+  { "entextxid",       { NULL }, 12000, "udp"  },
+  { "entextnetwk",     { NULL }, 12001, "tcp"  },
+  { "entextnetwk",     { NULL }, 12001, "udp"  },
+  { "entexthigh",      { NULL }, 12002, "tcp"  },
+  { "entexthigh",      { NULL }, 12002, "udp"  },
+  { "entextmed",       { NULL }, 12003, "tcp"  },
+  { "entextmed",       { NULL }, 12003, "udp"  },
+  { "entextlow",       { NULL }, 12004, "tcp"  },
+  { "entextlow",       { NULL }, 12004, "udp"  },
+  { "dbisamserver1",   { NULL }, 12005, "tcp"  },
+  { "dbisamserver1",   { NULL }, 12005, "udp"  },
+  { "dbisamserver2",   { NULL }, 12006, "tcp"  },
+  { "dbisamserver2",   { NULL }, 12006, "udp"  },
+  { "accuracer",       { NULL }, 12007, "tcp"  },
+  { "accuracer",       { NULL }, 12007, "udp"  },
+  { "accuracer-dbms",  { NULL }, 12008, "tcp"  },
+  { "accuracer-dbms",  { NULL }, 12008, "udp"  },
+  { "edbsrvr",         { NULL }, 12010, "tcp"  },
+  { "vipera",          { NULL }, 12012, "tcp"  },
+  { "vipera",          { NULL }, 12012, "udp"  },
+  { "vipera-ssl",      { NULL }, 12013, "tcp"  },
+  { "vipera-ssl",      { NULL }, 12013, "udp"  },
+  { "rets-ssl",        { NULL }, 12109, "tcp"  },
+  { "rets-ssl",        { NULL }, 12109, "udp"  },
+  { "nupaper-ss",      { NULL }, 12121, "tcp"  },
+  { "nupaper-ss",      { NULL }, 12121, "udp"  },
+  { "cawas",           { NULL }, 12168, "tcp"  },
+  { "cawas",           { NULL }, 12168, "udp"  },
+  { "hivep",           { NULL }, 12172, "tcp"  },
+  { "hivep",           { NULL }, 12172, "udp"  },
+  { "linogridengine",  { NULL }, 12300, "tcp"  },
+  { "linogridengine",  { NULL }, 12300, "udp"  },
+  { "warehouse-sss",   { NULL }, 12321, "tcp"  },
+  { "warehouse-sss",   { NULL }, 12321, "udp"  },
+  { "warehouse",       { NULL }, 12322, "tcp"  },
+  { "warehouse",       { NULL }, 12322, "udp"  },
+  { "italk",           { NULL }, 12345, "tcp"  },
+  { "italk",           { NULL }, 12345, "udp"  },
+  { "tsaf",            { NULL }, 12753, "tcp"  },
+  { "tsaf",            { NULL }, 12753, "udp"  },
+  { "i-zipqd",         { NULL }, 13160, "tcp"  },
+  { "i-zipqd",         { NULL }, 13160, "udp"  },
+  { "bcslogc",         { NULL }, 13216, "tcp"  },
+  { "bcslogc",         { NULL }, 13216, "udp"  },
+  { "rs-pias",         { NULL }, 13217, "tcp"  },
+  { "rs-pias",         { NULL }, 13217, "udp"  },
+  { "emc-vcas-tcp",    { NULL }, 13218, "tcp"  },
+  { "emc-vcas-udp",    { NULL }, 13218, "udp"  },
+  { "powwow-client",   { NULL }, 13223, "tcp"  },
+  { "powwow-client",   { NULL }, 13223, "udp"  },
+  { "powwow-server",   { NULL }, 13224, "tcp"  },
+  { "powwow-server",   { NULL }, 13224, "udp"  },
+  { "doip-data",       { NULL }, 13400, "tcp"  },
+  { "doip-disc",       { NULL }, 13400, "udp"  },
+  { "bprd",            { NULL }, 13720, "tcp"  },
+  { "bprd",            { NULL }, 13720, "udp"  },
+  { "bpdbm",           { NULL }, 13721, "tcp"  },
+  { "bpdbm",           { NULL }, 13721, "udp"  },
+  { "bpjava-msvc",     { NULL }, 13722, "tcp"  },
+  { "bpjava-msvc",     { NULL }, 13722, "udp"  },
+  { "vnetd",           { NULL }, 13724, "tcp"  },
+  { "vnetd",           { NULL }, 13724, "udp"  },
+  { "bpcd",            { NULL }, 13782, "tcp"  },
+  { "bpcd",            { NULL }, 13782, "udp"  },
+  { "vopied",          { NULL }, 13783, "tcp"  },
+  { "vopied",          { NULL }, 13783, "udp"  },
+  { "nbdb",            { NULL }, 13785, "tcp"  },
+  { "nbdb",            { NULL }, 13785, "udp"  },
+  { "nomdb",           { NULL }, 13786, "tcp"  },
+  { "nomdb",           { NULL }, 13786, "udp"  },
+  { "dsmcc-config",    { NULL }, 13818, "tcp"  },
+  { "dsmcc-config",    { NULL }, 13818, "udp"  },
+  { "dsmcc-session",   { NULL }, 13819, "tcp"  },
+  { "dsmcc-session",   { NULL }, 13819, "udp"  },
+  { "dsmcc-passthru",  { NULL }, 13820, "tcp"  },
+  { "dsmcc-passthru",  { NULL }, 13820, "udp"  },
+  { "dsmcc-download",  { NULL }, 13821, "tcp"  },
+  { "dsmcc-download",  { NULL }, 13821, "udp"  },
+  { "dsmcc-ccp",       { NULL }, 13822, "tcp"  },
+  { "dsmcc-ccp",       { NULL }, 13822, "udp"  },
+  { "bmdss",           { NULL }, 13823, "tcp"  },
+  { "dta-systems",     { NULL }, 13929, "tcp"  },
+  { "dta-systems",     { NULL }, 13929, "udp"  },
+  { "medevolve",       { NULL }, 13930, "tcp"  },
+  { "scotty-ft",       { NULL }, 14000, "tcp"  },
+  { "scotty-ft",       { NULL }, 14000, "udp"  },
+  { "sua",             { NULL }, 14001, "tcp"  },
+  { "sua",             { NULL }, 14001, "udp"  },
+  { "sua",             { NULL }, 14001, "sctp" },
+  { "sage-best-com1",  { NULL }, 14033, "tcp"  },
+  { "sage-best-com1",  { NULL }, 14033, "udp"  },
+  { "sage-best-com2",  { NULL }, 14034, "tcp"  },
+  { "sage-best-com2",  { NULL }, 14034, "udp"  },
+  { "vcs-app",         { NULL }, 14141, "tcp"  },
+  { "vcs-app",         { NULL }, 14141, "udp"  },
+  { "icpp",            { NULL }, 14142, "tcp"  },
+  { "icpp",            { NULL }, 14142, "udp"  },
+  { "gcm-app",         { NULL }, 14145, "tcp"  },
+  { "gcm-app",         { NULL }, 14145, "udp"  },
+  { "vrts-tdd",        { NULL }, 14149, "tcp"  },
+  { "vrts-tdd",        { NULL }, 14149, "udp"  },
+  { "vcscmd",          { NULL }, 14150, "tcp"  },
+  { "vad",             { NULL }, 14154, "tcp"  },
+  { "vad",             { NULL }, 14154, "udp"  },
+  { "cps",             { NULL }, 14250, "tcp"  },
+  { "cps",             { NULL }, 14250, "udp"  },
+  { "ca-web-update",   { NULL }, 14414, "tcp"  },
+  { "ca-web-update",   { NULL }, 14414, "udp"  },
+  { "hde-lcesrvr-1",   { NULL }, 14936, "tcp"  },
+  { "hde-lcesrvr-1",   { NULL }, 14936, "udp"  },
+  { "hde-lcesrvr-2",   { NULL }, 14937, "tcp"  },
+  { "hde-lcesrvr-2",   { NULL }, 14937, "udp"  },
+  { "hydap",           { NULL }, 15000, "tcp"  },
+  { "hydap",           { NULL }, 15000, "udp"  },
+  { "xpilot",          { NULL }, 15345, "tcp"  },
+  { "xpilot",          { NULL }, 15345, "udp"  },
+  { "3link",           { NULL }, 15363, "tcp"  },
+  { "3link",           { NULL }, 15363, "udp"  },
+  { "cisco-snat",      { NULL }, 15555, "tcp"  },
+  { "cisco-snat",      { NULL }, 15555, "udp"  },
+  { "bex-xr",          { NULL }, 15660, "tcp"  },
+  { "bex-xr",          { NULL }, 15660, "udp"  },
+  { "ptp",             { NULL }, 15740, "tcp"  },
+  { "ptp",             { NULL }, 15740, "udp"  },
+  { "2ping",           { NULL }, 15998, "udp"  },
+  { "programmar",      { NULL }, 15999, "tcp"  },
+  { "fmsas",           { NULL }, 16000, "tcp"  },
+  { "fmsascon",        { NULL }, 16001, "tcp"  },
+  { "gsms",            { NULL }, 16002, "tcp"  },
+  { "alfin",           { NULL }, 16003, "udp"  },
+  { "jwpc",            { NULL }, 16020, "tcp"  },
+  { "jwpc-bin",        { NULL }, 16021, "tcp"  },
+  { "sun-sea-port",    { NULL }, 16161, "tcp"  },
+  { "sun-sea-port",    { NULL }, 16161, "udp"  },
+  { "solaris-audit",   { NULL }, 16162, "tcp"  },
+  { "etb4j",           { NULL }, 16309, "tcp"  },
+  { "etb4j",           { NULL }, 16309, "udp"  },
+  { "pduncs",          { NULL }, 16310, "tcp"  },
+  { "pduncs",          { NULL }, 16310, "udp"  },
+  { "pdefmns",         { NULL }, 16311, "tcp"  },
+  { "pdefmns",         { NULL }, 16311, "udp"  },
+  { "netserialext1",   { NULL }, 16360, "tcp"  },
+  { "netserialext1",   { NULL }, 16360, "udp"  },
+  { "netserialext2",   { NULL }, 16361, "tcp"  },
+  { "netserialext2",   { NULL }, 16361, "udp"  },
+  { "netserialext3",   { NULL }, 16367, "tcp"  },
+  { "netserialext3",   { NULL }, 16367, "udp"  },
+  { "netserialext4",   { NULL }, 16368, "tcp"  },
+  { "netserialext4",   { NULL }, 16368, "udp"  },
+  { "connected",       { NULL }, 16384, "tcp"  },
+  { "connected",       { NULL }, 16384, "udp"  },
+  { "xoms",            { NULL }, 16619, "tcp"  },
+  { "newbay-snc-mc",   { NULL }, 16900, "tcp"  },
+  { "newbay-snc-mc",   { NULL }, 16900, "udp"  },
+  { "sgcip",           { NULL }, 16950, "tcp"  },
+  { "sgcip",           { NULL }, 16950, "udp"  },
+  { "intel-rci-mp",    { NULL }, 16991, "tcp"  },
+  { "intel-rci-mp",    { NULL }, 16991, "udp"  },
+  { "amt-soap-http",   { NULL }, 16992, "tcp"  },
+  { "amt-soap-http",   { NULL }, 16992, "udp"  },
+  { "amt-soap-https",  { NULL }, 16993, "tcp"  },
+  { "amt-soap-https",  { NULL }, 16993, "udp"  },
+  { "amt-redir-tcp",   { NULL }, 16994, "tcp"  },
+  { "amt-redir-tcp",   { NULL }, 16994, "udp"  },
+  { "amt-redir-tls",   { NULL }, 16995, "tcp"  },
+  { "amt-redir-tls",   { NULL }, 16995, "udp"  },
+  { "isode-dua",       { NULL }, 17007, "tcp"  },
+  { "isode-dua",       { NULL }, 17007, "udp"  },
+  { "soundsvirtual",   { NULL }, 17185, "tcp"  },
+  { "soundsvirtual",   { NULL }, 17185, "udp"  },
+  { "chipper",         { NULL }, 17219, "tcp"  },
+  { "chipper",         { NULL }, 17219, "udp"  },
+  { "integrius-stp",   { NULL }, 17234, "tcp"  },
+  { "integrius-stp",   { NULL }, 17234, "udp"  },
+  { "ssh-mgmt",        { NULL }, 17235, "tcp"  },
+  { "ssh-mgmt",        { NULL }, 17235, "udp"  },
+  { "db-lsp",          { NULL }, 17500, "tcp"  },
+  { "db-lsp-disc",     { NULL }, 17500, "udp"  },
+  { "ea",              { NULL }, 17729, "tcp"  },
+  { "ea",              { NULL }, 17729, "udp"  },
+  { "zep",             { NULL }, 17754, "tcp"  },
+  { "zep",             { NULL }, 17754, "udp"  },
+  { "zigbee-ip",       { NULL }, 17755, "tcp"  },
+  { "zigbee-ip",       { NULL }, 17755, "udp"  },
+  { "zigbee-ips",      { NULL }, 17756, "tcp"  },
+  { "zigbee-ips",      { NULL }, 17756, "udp"  },
+  { "sw-orion",        { NULL }, 17777, "tcp"  },
+  { "biimenu",         { NULL }, 18000, "tcp"  },
+  { "biimenu",         { NULL }, 18000, "udp"  },
+  { "radpdf",          { NULL }, 18104, "tcp"  },
+  { "racf",            { NULL }, 18136, "tcp"  },
+  { "opsec-cvp",       { NULL }, 18181, "tcp"  },
+  { "opsec-cvp",       { NULL }, 18181, "udp"  },
+  { "opsec-ufp",       { NULL }, 18182, "tcp"  },
+  { "opsec-ufp",       { NULL }, 18182, "udp"  },
+  { "opsec-sam",       { NULL }, 18183, "tcp"  },
+  { "opsec-sam",       { NULL }, 18183, "udp"  },
+  { "opsec-lea",       { NULL }, 18184, "tcp"  },
+  { "opsec-lea",       { NULL }, 18184, "udp"  },
+  { "opsec-omi",       { NULL }, 18185, "tcp"  },
+  { "opsec-omi",       { NULL }, 18185, "udp"  },
+  { "ohsc",            { NULL }, 18186, "tcp"  },
+  { "ohsc",            { NULL }, 18186, "udp"  },
+  { "opsec-ela",       { NULL }, 18187, "tcp"  },
+  { "opsec-ela",       { NULL }, 18187, "udp"  },
+  { "checkpoint-rtm",  { NULL }, 18241, "tcp"  },
+  { "checkpoint-rtm",  { NULL }, 18241, "udp"  },
+  { "gv-pf",           { NULL }, 18262, "tcp"  },
+  { "gv-pf",           { NULL }, 18262, "udp"  },
+  { "ac-cluster",      { NULL }, 18463, "tcp"  },
+  { "ac-cluster",      { NULL }, 18463, "udp"  },
+  { "rds-ib",          { NULL }, 18634, "tcp"  },
+  { "rds-ib",          { NULL }, 18634, "udp"  },
+  { "rds-ip",          { NULL }, 18635, "tcp"  },
+  { "rds-ip",          { NULL }, 18635, "udp"  },
+  { "ique",            { NULL }, 18769, "tcp"  },
+  { "ique",            { NULL }, 18769, "udp"  },
+  { "infotos",         { NULL }, 18881, "tcp"  },
+  { "infotos",         { NULL }, 18881, "udp"  },
+  { "apc-necmp",       { NULL }, 18888, "tcp"  },
+  { "apc-necmp",       { NULL }, 18888, "udp"  },
+  { "igrid",           { NULL }, 19000, "tcp"  },
+  { "igrid",           { NULL }, 19000, "udp"  },
+  { "j-link",          { NULL }, 19020, "tcp"  },
+  { "opsec-uaa",       { NULL }, 19191, "tcp"  },
+  { "opsec-uaa",       { NULL }, 19191, "udp"  },
+  { "ua-secureagent",  { NULL }, 19194, "tcp"  },
+  { "ua-secureagent",  { NULL }, 19194, "udp"  },
+  { "keysrvr",         { NULL }, 19283, "tcp"  },
+  { "keysrvr",         { NULL }, 19283, "udp"  },
+  { "keyshadow",       { NULL }, 19315, "tcp"  },
+  { "keyshadow",       { NULL }, 19315, "udp"  },
+  { "mtrgtrans",       { NULL }, 19398, "tcp"  },
+  { "mtrgtrans",       { NULL }, 19398, "udp"  },
+  { "hp-sco",          { NULL }, 19410, "tcp"  },
+  { "hp-sco",          { NULL }, 19410, "udp"  },
+  { "hp-sca",          { NULL }, 19411, "tcp"  },
+  { "hp-sca",          { NULL }, 19411, "udp"  },
+  { "hp-sessmon",      { NULL }, 19412, "tcp"  },
+  { "hp-sessmon",      { NULL }, 19412, "udp"  },
+  { "fxuptp",          { NULL }, 19539, "tcp"  },
+  { "fxuptp",          { NULL }, 19539, "udp"  },
+  { "sxuptp",          { NULL }, 19540, "tcp"  },
+  { "sxuptp",          { NULL }, 19540, "udp"  },
+  { "jcp",             { NULL }, 19541, "tcp"  },
+  { "jcp",             { NULL }, 19541, "udp"  },
+  { "iec-104-sec",     { NULL }, 19998, "tcp"  },
+  { "dnp-sec",         { NULL }, 19999, "tcp"  },
+  { "dnp-sec",         { NULL }, 19999, "udp"  },
+  { "dnp",             { NULL }, 20000, "tcp"  },
+  { "dnp",             { NULL }, 20000, "udp"  },
+  { "microsan",        { NULL }, 20001, "tcp"  },
+  { "microsan",        { NULL }, 20001, "udp"  },
+  { "commtact-http",   { NULL }, 20002, "tcp"  },
+  { "commtact-http",   { NULL }, 20002, "udp"  },
+  { "commtact-https",  { NULL }, 20003, "tcp"  },
+  { "commtact-https",  { NULL }, 20003, "udp"  },
+  { "openwebnet",      { NULL }, 20005, "tcp"  },
+  { "openwebnet",      { NULL }, 20005, "udp"  },
+  { "ss-idi-disc",     { NULL }, 20012, "udp"  },
+  { "ss-idi",          { NULL }, 20013, "tcp"  },
+  { "opendeploy",      { NULL }, 20014, "tcp"  },
+  { "opendeploy",      { NULL }, 20014, "udp"  },
+  { "nburn_id",        { NULL }, 20034, "tcp"  },
+  { "nburn_id",        { NULL }, 20034, "udp"  },
+  { "tmophl7mts",      { NULL }, 20046, "tcp"  },
+  { "tmophl7mts",      { NULL }, 20046, "udp"  },
+  { "mountd",          { NULL }, 20048, "tcp"  },
+  { "mountd",          { NULL }, 20048, "udp"  },
+  { "nfsrdma",         { NULL }, 20049, "tcp"  },
+  { "nfsrdma",         { NULL }, 20049, "udp"  },
+  { "nfsrdma",         { NULL }, 20049, "sctp" },
+  { "tolfab",          { NULL }, 20167, "tcp"  },
+  { "tolfab",          { NULL }, 20167, "udp"  },
+  { "ipdtp-port",      { NULL }, 20202, "tcp"  },
+  { "ipdtp-port",      { NULL }, 20202, "udp"  },
+  { "ipulse-ics",      { NULL }, 20222, "tcp"  },
+  { "ipulse-ics",      { NULL }, 20222, "udp"  },
+  { "emwavemsg",       { NULL }, 20480, "tcp"  },
+  { "emwavemsg",       { NULL }, 20480, "udp"  },
+  { "track",           { NULL }, 20670, "tcp"  },
+  { "track",           { NULL }, 20670, "udp"  },
+  { "athand-mmp",      { NULL }, 20999, "tcp"  },
+  { "athand-mmp",      { NULL }, 20999, "udp"  },
+  { "irtrans",         { NULL }, 21000, "tcp"  },
+  { "irtrans",         { NULL }, 21000, "udp"  },
+  { "dfserver",        { NULL }, 21554, "tcp"  },
+  { "dfserver",        { NULL }, 21554, "udp"  },
+  { "vofr-gateway",    { NULL }, 21590, "tcp"  },
+  { "vofr-gateway",    { NULL }, 21590, "udp"  },
+  { "tvpm",            { NULL }, 21800, "tcp"  },
+  { "tvpm",            { NULL }, 21800, "udp"  },
+  { "webphone",        { NULL }, 21845, "tcp"  },
+  { "webphone",        { NULL }, 21845, "udp"  },
+  { "netspeak-is",     { NULL }, 21846, "tcp"  },
+  { "netspeak-is",     { NULL }, 21846, "udp"  },
+  { "netspeak-cs",     { NULL }, 21847, "tcp"  },
+  { "netspeak-cs",     { NULL }, 21847, "udp"  },
+  { "netspeak-acd",    { NULL }, 21848, "tcp"  },
+  { "netspeak-acd",    { NULL }, 21848, "udp"  },
+  { "netspeak-cps",    { NULL }, 21849, "tcp"  },
+  { "netspeak-cps",    { NULL }, 21849, "udp"  },
+  { "snapenetio",      { NULL }, 22000, "tcp"  },
+  { "snapenetio",      { NULL }, 22000, "udp"  },
+  { "optocontrol",     { NULL }, 22001, "tcp"  },
+  { "optocontrol",     { NULL }, 22001, "udp"  },
+  { "optohost002",     { NULL }, 22002, "tcp"  },
+  { "optohost002",     { NULL }, 22002, "udp"  },
+  { "optohost003",     { NULL }, 22003, "tcp"  },
+  { "optohost003",     { NULL }, 22003, "udp"  },
+  { "optohost004",     { NULL }, 22004, "tcp"  },
+  { "optohost004",     { NULL }, 22004, "udp"  },
+  { "optohost004",     { NULL }, 22005, "tcp"  },
+  { "optohost004",     { NULL }, 22005, "udp"  },
+  { "dcap",            { NULL }, 22125, "tcp"  },
+  { "gsidcap",         { NULL }, 22128, "tcp"  },
+  { "wnn6",            { NULL }, 22273, "tcp"  },
+  { "wnn6",            { NULL }, 22273, "udp"  },
+  { "cis",             { NULL }, 22305, "tcp"  },
+  { "cis",             { NULL }, 22305, "udp"  },
+  { "cis-secure",      { NULL }, 22343, "tcp"  },
+  { "cis-secure",      { NULL }, 22343, "udp"  },
+  { "WibuKey",         { NULL }, 22347, "tcp"  },
+  { "WibuKey",         { NULL }, 22347, "udp"  },
+  { "CodeMeter",       { NULL }, 22350, "tcp"  },
+  { "CodeMeter",       { NULL }, 22350, "udp"  },
+  { "vocaltec-wconf",  { NULL }, 22555, "tcp"  },
+  { "vocaltec-phone",  { NULL }, 22555, "udp"  },
+  { "talikaserver",    { NULL }, 22763, "tcp"  },
+  { "talikaserver",    { NULL }, 22763, "udp"  },
+  { "aws-brf",         { NULL }, 22800, "tcp"  },
+  { "aws-brf",         { NULL }, 22800, "udp"  },
+  { "brf-gw",          { NULL }, 22951, "tcp"  },
+  { "brf-gw",          { NULL }, 22951, "udp"  },
+  { "inovaport1",      { NULL }, 23000, "tcp"  },
+  { "inovaport1",      { NULL }, 23000, "udp"  },
+  { "inovaport2",      { NULL }, 23001, "tcp"  },
+  { "inovaport2",      { NULL }, 23001, "udp"  },
+  { "inovaport3",      { NULL }, 23002, "tcp"  },
+  { "inovaport3",      { NULL }, 23002, "udp"  },
+  { "inovaport4",      { NULL }, 23003, "tcp"  },
+  { "inovaport4",      { NULL }, 23003, "udp"  },
+  { "inovaport5",      { NULL }, 23004, "tcp"  },
+  { "inovaport5",      { NULL }, 23004, "udp"  },
+  { "inovaport6",      { NULL }, 23005, "tcp"  },
+  { "inovaport6",      { NULL }, 23005, "udp"  },
+  { "s102",            { NULL }, 23272, "udp"  },
+  { "elxmgmt",         { NULL }, 23333, "tcp"  },
+  { "elxmgmt",         { NULL }, 23333, "udp"  },
+  { "novar-dbase",     { NULL }, 23400, "tcp"  },
+  { "novar-dbase",     { NULL }, 23400, "udp"  },
+  { "novar-alarm",     { NULL }, 23401, "tcp"  },
+  { "novar-alarm",     { NULL }, 23401, "udp"  },
+  { "novar-global",    { NULL }, 23402, "tcp"  },
+  { "novar-global",    { NULL }, 23402, "udp"  },
+  { "aequus",          { NULL }, 23456, "tcp"  },
+  { "aequus-alt",      { NULL }, 23457, "tcp"  },
+  { "med-ltp",         { NULL }, 24000, "tcp"  },
+  { "med-ltp",         { NULL }, 24000, "udp"  },
+  { "med-fsp-rx",      { NULL }, 24001, "tcp"  },
+  { "med-fsp-rx",      { NULL }, 24001, "udp"  },
+  { "med-fsp-tx",      { NULL }, 24002, "tcp"  },
+  { "med-fsp-tx",      { NULL }, 24002, "udp"  },
+  { "med-supp",        { NULL }, 24003, "tcp"  },
+  { "med-supp",        { NULL }, 24003, "udp"  },
+  { "med-ovw",         { NULL }, 24004, "tcp"  },
+  { "med-ovw",         { NULL }, 24004, "udp"  },
+  { "med-ci",          { NULL }, 24005, "tcp"  },
+  { "med-ci",          { NULL }, 24005, "udp"  },
+  { "med-net-svc",     { NULL }, 24006, "tcp"  },
+  { "med-net-svc",     { NULL }, 24006, "udp"  },
+  { "filesphere",      { NULL }, 24242, "tcp"  },
+  { "filesphere",      { NULL }, 24242, "udp"  },
+  { "vista-4gl",       { NULL }, 24249, "tcp"  },
+  { "vista-4gl",       { NULL }, 24249, "udp"  },
+  { "ild",             { NULL }, 24321, "tcp"  },
+  { "ild",             { NULL }, 24321, "udp"  },
+  { "intel_rci",       { NULL }, 24386, "tcp"  },
+  { "intel_rci",       { NULL }, 24386, "udp"  },
+  { "tonidods",        { NULL }, 24465, "tcp"  },
+  { "tonidods",        { NULL }, 24465, "udp"  },
+  { "binkp",           { NULL }, 24554, "tcp"  },
+  { "binkp",           { NULL }, 24554, "udp"  },
+  { "canditv",         { NULL }, 24676, "tcp"  },
+  { "canditv",         { NULL }, 24676, "udp"  },
+  { "flashfiler",      { NULL }, 24677, "tcp"  },
+  { "flashfiler",      { NULL }, 24677, "udp"  },
+  { "proactivate",     { NULL }, 24678, "tcp"  },
+  { "proactivate",     { NULL }, 24678, "udp"  },
+  { "tcc-http",        { NULL }, 24680, "tcp"  },
+  { "tcc-http",        { NULL }, 24680, "udp"  },
+  { "cslg",            { NULL }, 24754, "tcp"  },
+  { "find",            { NULL }, 24922, "tcp"  },
+  { "find",            { NULL }, 24922, "udp"  },
+  { "icl-twobase1",    { NULL }, 25000, "tcp"  },
+  { "icl-twobase1",    { NULL }, 25000, "udp"  },
+  { "icl-twobase2",    { NULL }, 25001, "tcp"  },
+  { "icl-twobase2",    { NULL }, 25001, "udp"  },
+  { "icl-twobase3",    { NULL }, 25002, "tcp"  },
+  { "icl-twobase3",    { NULL }, 25002, "udp"  },
+  { "icl-twobase4",    { NULL }, 25003, "tcp"  },
+  { "icl-twobase4",    { NULL }, 25003, "udp"  },
+  { "icl-twobase5",    { NULL }, 25004, "tcp"  },
+  { "icl-twobase5",    { NULL }, 25004, "udp"  },
+  { "icl-twobase6",    { NULL }, 25005, "tcp"  },
+  { "icl-twobase6",    { NULL }, 25005, "udp"  },
+  { "icl-twobase7",    { NULL }, 25006, "tcp"  },
+  { "icl-twobase7",    { NULL }, 25006, "udp"  },
+  { "icl-twobase8",    { NULL }, 25007, "tcp"  },
+  { "icl-twobase8",    { NULL }, 25007, "udp"  },
+  { "icl-twobase9",    { NULL }, 25008, "tcp"  },
+  { "icl-twobase9",    { NULL }, 25008, "udp"  },
+  { "icl-twobase10",   { NULL }, 25009, "tcp"  },
+  { "icl-twobase10",   { NULL }, 25009, "udp"  },
+  { "rna",             { NULL }, 25471, "sctp" },
+  { "sauterdongle",    { NULL }, 25576, "tcp"  },
+  { "vocaltec-hos",    { NULL }, 25793, "tcp"  },
+  { "vocaltec-hos",    { NULL }, 25793, "udp"  },
+  { "tasp-net",        { NULL }, 25900, "tcp"  },
+  { "tasp-net",        { NULL }, 25900, "udp"  },
+  { "niobserver",      { NULL }, 25901, "tcp"  },
+  { "niobserver",      { NULL }, 25901, "udp"  },
+  { "nilinkanalyst",   { NULL }, 25902, "tcp"  },
+  { "nilinkanalyst",   { NULL }, 25902, "udp"  },
+  { "niprobe",         { NULL }, 25903, "tcp"  },
+  { "niprobe",         { NULL }, 25903, "udp"  },
+  { "quake",           { NULL }, 26000, "tcp"  },
+  { "quake",           { NULL }, 26000, "udp"  },
+  { "scscp",           { NULL }, 26133, "tcp"  },
+  { "scscp",           { NULL }, 26133, "udp"  },
+  { "wnn6-ds",         { NULL }, 26208, "tcp"  },
+  { "wnn6-ds",         { NULL }, 26208, "udp"  },
+  { "ezproxy",         { NULL }, 26260, "tcp"  },
+  { "ezproxy",         { NULL }, 26260, "udp"  },
+  { "ezmeeting",       { NULL }, 26261, "tcp"  },
+  { "ezmeeting",       { NULL }, 26261, "udp"  },
+  { "k3software-svr",  { NULL }, 26262, "tcp"  },
+  { "k3software-svr",  { NULL }, 26262, "udp"  },
+  { "k3software-cli",  { NULL }, 26263, "tcp"  },
+  { "k3software-cli",  { NULL }, 26263, "udp"  },
+  { "exoline-tcp",     { NULL }, 26486, "tcp"  },
+  { "exoline-udp",     { NULL }, 26486, "udp"  },
+  { "exoconfig",       { NULL }, 26487, "tcp"  },
+  { "exoconfig",       { NULL }, 26487, "udp"  },
+  { "exonet",          { NULL }, 26489, "tcp"  },
+  { "exonet",          { NULL }, 26489, "udp"  },
+  { "imagepump",       { NULL }, 27345, "tcp"  },
+  { "imagepump",       { NULL }, 27345, "udp"  },
+  { "jesmsjc",         { NULL }, 27442, "tcp"  },
+  { "jesmsjc",         { NULL }, 27442, "udp"  },
+  { "kopek-httphead",  { NULL }, 27504, "tcp"  },
+  { "kopek-httphead",  { NULL }, 27504, "udp"  },
+  { "ars-vista",       { NULL }, 27782, "tcp"  },
+  { "ars-vista",       { NULL }, 27782, "udp"  },
+  { "tw-auth-key",     { NULL }, 27999, "tcp"  },
+  { "tw-auth-key",     { NULL }, 27999, "udp"  },
+  { "nxlmd",           { NULL }, 28000, "tcp"  },
+  { "nxlmd",           { NULL }, 28000, "udp"  },
+  { "pqsp",            { NULL }, 28001, "tcp"  },
+  { "siemensgsm",      { NULL }, 28240, "tcp"  },
+  { "siemensgsm",      { NULL }, 28240, "udp"  },
+  { "sgsap",           { NULL }, 29118, "sctp" },
+  { "otmp",            { NULL }, 29167, "tcp"  },
+  { "otmp",            { NULL }, 29167, "udp"  },
+  { "sbcap",           { NULL }, 29168, "sctp" },
+  { "iuhsctpassoc",    { NULL }, 29169, "sctp" },
+  { "pago-services1",  { NULL }, 30001, "tcp"  },
+  { "pago-services1",  { NULL }, 30001, "udp"  },
+  { "pago-services2",  { NULL }, 30002, "tcp"  },
+  { "pago-services2",  { NULL }, 30002, "udp"  },
+  { "kingdomsonline",  { NULL }, 30260, "tcp"  },
+  { "kingdomsonline",  { NULL }, 30260, "udp"  },
+  { "ovobs",           { NULL }, 30999, "tcp"  },
+  { "ovobs",           { NULL }, 30999, "udp"  },
+  { "autotrac-acp",    { NULL }, 31020, "tcp"  },
+  { "yawn",            { NULL }, 31029, "udp"  },
+  { "xqosd",           { NULL }, 31416, "tcp"  },
+  { "xqosd",           { NULL }, 31416, "udp"  },
+  { "tetrinet",        { NULL }, 31457, "tcp"  },
+  { "tetrinet",        { NULL }, 31457, "udp"  },
+  { "lm-mon",          { NULL }, 31620, "tcp"  },
+  { "lm-mon",          { NULL }, 31620, "udp"  },
+  { "dsx_monitor",     { NULL }, 31685, "tcp"  },
+  { "gamesmith-port",  { NULL }, 31765, "tcp"  },
+  { "gamesmith-port",  { NULL }, 31765, "udp"  },
+  { "iceedcp_tx",      { NULL }, 31948, "tcp"  },
+  { "iceedcp_tx",      { NULL }, 31948, "udp"  },
+  { "iceedcp_rx",      { NULL }, 31949, "tcp"  },
+  { "iceedcp_rx",      { NULL }, 31949, "udp"  },
+  { "iracinghelper",   { NULL }, 32034, "tcp"  },
+  { "iracinghelper",   { NULL }, 32034, "udp"  },
+  { "t1distproc60",    { NULL }, 32249, "tcp"  },
+  { "t1distproc60",    { NULL }, 32249, "udp"  },
+  { "apm-link",        { NULL }, 32483, "tcp"  },
+  { "apm-link",        { NULL }, 32483, "udp"  },
+  { "sec-ntb-clnt",    { NULL }, 32635, "tcp"  },
+  { "sec-ntb-clnt",    { NULL }, 32635, "udp"  },
+  { "DMExpress",       { NULL }, 32636, "tcp"  },
+  { "DMExpress",       { NULL }, 32636, "udp"  },
+  { "filenet-powsrm",  { NULL }, 32767, "tcp"  },
+  { "filenet-powsrm",  { NULL }, 32767, "udp"  },
+  { "filenet-tms",     { NULL }, 32768, "tcp"  },
+  { "filenet-tms",     { NULL }, 32768, "udp"  },
+  { "filenet-rpc",     { NULL }, 32769, "tcp"  },
+  { "filenet-rpc",     { NULL }, 32769, "udp"  },
+  { "filenet-nch",     { NULL }, 32770, "tcp"  },
+  { "filenet-nch",     { NULL }, 32770, "udp"  },
+  { "filenet-rmi",     { NULL }, 32771, "tcp"  },
+  { "filenet-rmi",     { NULL }, 32771, "udp"  },
+  { "filenet-pa",      { NULL }, 32772, "tcp"  },
+  { "filenet-pa",      { NULL }, 32772, "udp"  },
+  { "filenet-cm",      { NULL }, 32773, "tcp"  },
+  { "filenet-cm",      { NULL }, 32773, "udp"  },
+  { "filenet-re",      { NULL }, 32774, "tcp"  },
+  { "filenet-re",      { NULL }, 32774, "udp"  },
+  { "filenet-pch",     { NULL }, 32775, "tcp"  },
+  { "filenet-pch",     { NULL }, 32775, "udp"  },
+  { "filenet-peior",   { NULL }, 32776, "tcp"  },
+  { "filenet-peior",   { NULL }, 32776, "udp"  },
+  { "filenet-obrok",   { NULL }, 32777, "tcp"  },
+  { "filenet-obrok",   { NULL }, 32777, "udp"  },
+  { "mlsn",            { NULL }, 32801, "tcp"  },
+  { "mlsn",            { NULL }, 32801, "udp"  },
+  { "retp",            { NULL }, 32811, "tcp"  },
+  { "idmgratm",        { NULL }, 32896, "tcp"  },
+  { "idmgratm",        { NULL }, 32896, "udp"  },
+  { "aurora-balaena",  { NULL }, 33123, "tcp"  },
+  { "aurora-balaena",  { NULL }, 33123, "udp"  },
+  { "diamondport",     { NULL }, 33331, "tcp"  },
+  { "diamondport",     { NULL }, 33331, "udp"  },
+  { "dgi-serv",        { NULL }, 33333, "tcp"  },
+  { "traceroute",      { NULL }, 33434, "tcp"  },
+  { "traceroute",      { NULL }, 33434, "udp"  },
+  { "snip-slave",      { NULL }, 33656, "tcp"  },
+  { "snip-slave",      { NULL }, 33656, "udp"  },
+  { "turbonote-2",     { NULL }, 34249, "tcp"  },
+  { "turbonote-2",     { NULL }, 34249, "udp"  },
+  { "p-net-local",     { NULL }, 34378, "tcp"  },
+  { "p-net-local",     { NULL }, 34378, "udp"  },
+  { "p-net-remote",    { NULL }, 34379, "tcp"  },
+  { "p-net-remote",    { NULL }, 34379, "udp"  },
+  { "dhanalakshmi",    { NULL }, 34567, "tcp"  },
+  { "profinet-rt",     { NULL }, 34962, "tcp"  },
+  { "profinet-rt",     { NULL }, 34962, "udp"  },
+  { "profinet-rtm",    { NULL }, 34963, "tcp"  },
+  { "profinet-rtm",    { NULL }, 34963, "udp"  },
+  { "profinet-cm",     { NULL }, 34964, "tcp"  },
+  { "profinet-cm",     { NULL }, 34964, "udp"  },
+  { "ethercat",        { NULL }, 34980, "tcp"  },
+  { "ethercat",        { NULL }, 34980, "udp"  },
+  { "allpeers",        { NULL }, 36001, "tcp"  },
+  { "allpeers",        { NULL }, 36001, "udp"  },
+  { "s1-control",      { NULL }, 36412, "sctp" },
+  { "x2-control",      { NULL }, 36422, "sctp" },
+  { "m2ap",            { NULL }, 36443, "sctp" },
+  { "m3ap",            { NULL }, 36444, "sctp" },
+  { "kastenxpipe",     { NULL }, 36865, "tcp"  },
+  { "kastenxpipe",     { NULL }, 36865, "udp"  },
+  { "neckar",          { NULL }, 37475, "tcp"  },
+  { "neckar",          { NULL }, 37475, "udp"  },
+  { "unisys-eportal",  { NULL }, 37654, "tcp"  },
+  { "unisys-eportal",  { NULL }, 37654, "udp"  },
+  { "galaxy7-data",    { NULL }, 38201, "tcp"  },
+  { "galaxy7-data",    { NULL }, 38201, "udp"  },
+  { "fairview",        { NULL }, 38202, "tcp"  },
+  { "fairview",        { NULL }, 38202, "udp"  },
+  { "agpolicy",        { NULL }, 38203, "tcp"  },
+  { "agpolicy",        { NULL }, 38203, "udp"  },
+  { "turbonote-1",     { NULL }, 39681, "tcp"  },
+  { "turbonote-1",     { NULL }, 39681, "udp"  },
+  { "safetynetp",      { NULL }, 40000, "tcp"  },
+  { "safetynetp",      { NULL }, 40000, "udp"  },
+  { "cscp",            { NULL }, 40841, "tcp"  },
+  { "cscp",            { NULL }, 40841, "udp"  },
+  { "csccredir",       { NULL }, 40842, "tcp"  },
+  { "csccredir",       { NULL }, 40842, "udp"  },
+  { "csccfirewall",    { NULL }, 40843, "tcp"  },
+  { "csccfirewall",    { NULL }, 40843, "udp"  },
+  { "ortec-disc",      { NULL }, 40853, "udp"  },
+  { "fs-qos",          { NULL }, 41111, "tcp"  },
+  { "fs-qos",          { NULL }, 41111, "udp"  },
+  { "tentacle",        { NULL }, 41121, "tcp"  },
+  { "crestron-cip",    { NULL }, 41794, "tcp"  },
+  { "crestron-cip",    { NULL }, 41794, "udp"  },
+  { "crestron-ctp",    { NULL }, 41795, "tcp"  },
+  { "crestron-ctp",    { NULL }, 41795, "udp"  },
+  { "candp",           { NULL }, 42508, "tcp"  },
+  { "candp",           { NULL }, 42508, "udp"  },
+  { "candrp",          { NULL }, 42509, "tcp"  },
+  { "candrp",          { NULL }, 42509, "udp"  },
+  { "caerpc",          { NULL }, 42510, "tcp"  },
+  { "caerpc",          { NULL }, 42510, "udp"  },
+  { "reachout",        { NULL }, 43188, "tcp"  },
+  { "reachout",        { NULL }, 43188, "udp"  },
+  { "ndm-agent-port",  { NULL }, 43189, "tcp"  },
+  { "ndm-agent-port",  { NULL }, 43189, "udp"  },
+  { "ip-provision",    { NULL }, 43190, "tcp"  },
+  { "ip-provision",    { NULL }, 43190, "udp"  },
+  { "noit-transport",  { NULL }, 43191, "tcp"  },
+  { "ew-mgmt",         { NULL }, 43440, "tcp"  },
+  { "ew-disc-cmd",     { NULL }, 43440, "udp"  },
+  { "ciscocsdb",       { NULL }, 43441, "tcp"  },
+  { "ciscocsdb",       { NULL }, 43441, "udp"  },
+  { "pmcd",            { NULL }, 44321, "tcp"  },
+  { "pmcd",            { NULL }, 44321, "udp"  },
+  { "pmcdproxy",       { NULL }, 44322, "tcp"  },
+  { "pmcdproxy",       { NULL }, 44322, "udp"  },
+  { "pcp",             { NULL }, 44323, "udp"  },
+  { "rbr-debug",       { NULL }, 44553, "tcp"  },
+  { "rbr-debug",       { NULL }, 44553, "udp"  },
+  { "EtherNet/IP-2",   { NULL }, 44818, "tcp"  },
+  { "EtherNet/IP-2",   { NULL }, 44818, "udp"  },
+  { "invision-ag",     { NULL }, 45054, "tcp"  },
+  { "invision-ag",     { NULL }, 45054, "udp"  },
+  { "eba",             { NULL }, 45678, "tcp"  },
+  { "eba",             { NULL }, 45678, "udp"  },
+  { "qdb2service",     { NULL }, 45825, "tcp"  },
+  { "qdb2service",     { NULL }, 45825, "udp"  },
+  { "ssr-servermgr",   { NULL }, 45966, "tcp"  },
+  { "ssr-servermgr",   { NULL }, 45966, "udp"  },
+  { "mediabox",        { NULL }, 46999, "tcp"  },
+  { "mediabox",        { NULL }, 46999, "udp"  },
+  { "mbus",            { NULL }, 47000, "tcp"  },
+  { "mbus",            { NULL }, 47000, "udp"  },
+  { "winrm",           { NULL }, 47001, "tcp"  },
+  { "dbbrowse",        { NULL }, 47557, "tcp"  },
+  { "dbbrowse",        { NULL }, 47557, "udp"  },
+  { "directplaysrvr",  { NULL }, 47624, "tcp"  },
+  { "directplaysrvr",  { NULL }, 47624, "udp"  },
+  { "ap",              { NULL }, 47806, "tcp"  },
+  { "ap",              { NULL }, 47806, "udp"  },
+  { "bacnet",          { NULL }, 47808, "tcp"  },
+  { "bacnet",          { NULL }, 47808, "udp"  },
+  { "nimcontroller",   { NULL }, 48000, "tcp"  },
+  { "nimcontroller",   { NULL }, 48000, "udp"  },
+  { "nimspooler",      { NULL }, 48001, "tcp"  },
+  { "nimspooler",      { NULL }, 48001, "udp"  },
+  { "nimhub",          { NULL }, 48002, "tcp"  },
+  { "nimhub",          { NULL }, 48002, "udp"  },
+  { "nimgtw",          { NULL }, 48003, "tcp"  },
+  { "nimgtw",          { NULL }, 48003, "udp"  },
+  { "nimbusdb",        { NULL }, 48004, "tcp"  },
+  { "nimbusdbctrl",    { NULL }, 48005, "tcp"  },
+  { "3gpp-cbsp",       { NULL }, 48049, "tcp"  },
+  { "isnetserv",       { NULL }, 48128, "tcp"  },
+  { "isnetserv",       { NULL }, 48128, "udp"  },
+  { "blp5",            { NULL }, 48129, "tcp"  },
+  { "blp5",            { NULL }, 48129, "udp"  },
+  { "com-bardac-dw",   { NULL }, 48556, "tcp"  },
+  { "com-bardac-dw",   { NULL }, 48556, "udp"  },
+  { "iqobject",        { NULL }, 48619, "tcp"  },
+  { "iqobject",        { NULL }, 48619, "udp"  },
 #  endif  /* USE_IANA_REGISTERED_PORTS */
-  { NULL,              { NULL }, 0,     NULL  }
+  { NULL,              { NULL }, 0,     NULL   }
 };
 
 struct servent *getservbyport(int port, const char *proto)
diff --git a/deps/cares/src/lib/ares_private.h b/deps/cares/src/lib/ares_private.h
index 6a9e04af2eb633..fd290c4d311ecd 100644
--- a/deps/cares/src/lib/ares_private.h
+++ b/deps/cares/src/lib/ares_private.h
@@ -114,6 +114,7 @@ typedef struct ares_rand_state ares_rand_state;
 #include "ares__htable_strvp.h"
 #include "ares__htable_szvp.h"
 #include "ares__htable_asvp.h"
+#include "ares__htable_vpvp.h"
 #include "ares__buf.h"
 #include "ares_dns_private.h"
 #include "ares__iface_ips.h"
@@ -146,6 +147,11 @@ typedef struct ares_rand_state ares_rand_state;
 
 /********* EDNS defines section ******/
 
+/* Default values for server failover behavior. We retry failed servers with
+ * a 10% probability and a minimum delay of 5 seconds between retries.
+ */
+#define DEFAULT_SERVER_RETRY_CHANCE 10
+#define DEFAULT_SERVER_RETRY_DELAY  5000
 
 struct query;
 
@@ -176,6 +182,9 @@ struct server_state {
   ares__llist_t            *connections;
   struct server_connection *tcp_conn;
 
+  /* The next time when we will retry this server if it has hit failures */
+  struct timeval            next_retry_time;
+
   /* TCP buffer since multiple responses can come back in one read, or partial
    * in a read */
   ares__buf_t              *tcp_parser;
@@ -315,6 +324,27 @@ struct ares_channeldata {
 
   /* Query Cache */
   ares__qcache_t                     *qcache;
+
+  /* Fields controlling server failover behavior.
+   * The retry chance is the probability (1/N) by which we will retry a failed
+   * server instead of the best server when selecting a server to send queries
+   * to.
+   * The retry delay is the minimum time in milliseconds to wait between doing
+   * such retries (applied per-server).
+   */
+  unsigned short                      server_retry_chance;
+  size_t                              server_retry_delay;
+
+  /* Callback triggered when a server has a successful or failed response */
+  ares_server_state_callback          server_state_cb;
+  void                               *server_state_cb_data;
+
+  /* TRUE if a reinit is pending.  Reinit spawns a thread to read the system
+   * configuration and then apply the configuration since configuration
+   * reading may block.  The thread handle is provided for waiting on thread
+   * exit. */
+  ares_bool_t                         reinit_pending;
+  ares__thread_t                     *reinit_thread;
 };
 
 /* Does the domain end in ".onion" or ".onion."? Case-insensitive. */
@@ -408,10 +438,17 @@ typedef struct {
   ares_bool_t      usevc;
 } ares_sysconfig_t;
 
+ares_status_t ares__sysconfig_set_options(ares_sysconfig_t *sysconfig,
+                                          const char       *str);
+
 ares_status_t ares__init_by_environment(ares_sysconfig_t *sysconfig);
 
 ares_status_t ares__init_sysconfig_files(const ares_channel_t *channel,
                                          ares_sysconfig_t     *sysconfig);
+#ifdef __APPLE__
+ares_status_t ares__init_sysconfig_macos(ares_sysconfig_t *sysconfig);
+#endif
+
 ares_status_t ares__parse_sortlist(struct apattern **sortlist, size_t *nsort,
                                    const char *str);
 
@@ -497,6 +534,8 @@ ares_status_t ares__sconfig_append_fromstr(ares__llist_t **sconfig,
 ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers,
                                                   size_t          nservers,
                                                   ares__llist_t **llist);
+ares_status_t ares_get_server_addr(const struct server_state *server,
+                                   ares__buf_t               *buf);
 
 struct ares_hosts_entry;
 typedef struct ares_hosts_entry ares_hosts_entry_t;
@@ -580,9 +619,9 @@ void          ares_queue_notify_empty(ares_channel_t *channel);
     }                                                             \
   } while (0)
 
-#define ARES_CONFIG_CHECK(x)                                             \
-  (x && x->lookups && ares__slist_len(x->servers) > 0 && \
-   x->timeout > 0 && x->tries > 0)
+#define ARES_CONFIG_CHECK(x)                                               \
+  (x && x->lookups && ares__slist_len(x->servers) > 0 && x->timeout > 0 && \
+   x->tries > 0)
 
 ares_bool_t   ares__subnet_match(const struct ares_addr *addr,
                                  const struct ares_addr *subnet,
@@ -611,8 +650,8 @@ ares_status_t ares_qcache_fetch(ares_channel_t           *channel,
 
 ares_status_t ares__channel_threading_init(ares_channel_t *channel);
 void          ares__channel_threading_destroy(ares_channel_t *channel);
-void          ares__channel_lock(ares_channel_t *channel);
-void          ares__channel_unlock(ares_channel_t *channel);
+void          ares__channel_lock(const ares_channel_t *channel);
+void          ares__channel_unlock(const ares_channel_t *channel);
 
 struct ares_event_thread;
 typedef struct ares_event_thread ares_event_thread_t;
diff --git a/deps/cares/src/lib/ares_process.c b/deps/cares/src/lib/ares_process.c
index b9705ae882b9ff..eefcc78298b5a9 100644
--- a/deps/cares/src/lib/ares_process.c
+++ b/deps/cares/src/lib/ares_process.c
@@ -50,6 +50,7 @@
 #include "ares_nameser.h"
 #include "ares_dns.h"
 
+static void        timeadd(struct timeval *now, size_t millisecs);
 static ares_bool_t try_again(int errnum);
 static void        write_tcp_data(ares_channel_t *channel, fd_set *write_fds,
                                   ares_socket_t write_fd);
@@ -70,35 +71,86 @@ static ares_bool_t   same_address(const struct sockaddr  *sa,
 static void          end_query(ares_channel_t *channel, struct query *query,
                                ares_status_t status, const ares_dns_record_t *dnsrec);
 
-static void          server_increment_failures(struct server_state *server)
+/* Invoke the server state callback after a success or failure */
+static void          invoke_server_state_cb(const struct server_state *server,
+                                            ares_bool_t success, int flags)
+{
+  const ares_channel_t *channel = server->channel;
+  ares__buf_t          *buf;
+  ares_status_t         status;
+  char                 *server_string;
+
+  if (channel->server_state_cb == NULL) {
+    return;
+  }
+
+  buf = ares__buf_create();
+  if (buf == NULL) {
+    return;
+  }
+
+  status = ares_get_server_addr(server, buf);
+  if (status != ARES_SUCCESS) {
+    ares__buf_destroy(buf);
+    return;
+  }
+
+  server_string = ares__buf_finish_str(buf, NULL);
+  buf           = NULL;
+  if (server_string == NULL) {
+    return;
+  }
+
+  channel->server_state_cb(server_string, success, flags,
+                           channel->server_state_cb_data);
+  ares_free(server_string);
+}
+
+static void server_increment_failures(struct server_state *server,
+                                      ares_bool_t          used_tcp)
 {
   ares__slist_node_t   *node;
   const ares_channel_t *channel = server->channel;
+  struct timeval        next_retry_time;
 
   node = ares__slist_node_find(channel->servers, server);
   if (node == NULL) {
     return;
   }
+
   server->consec_failures++;
   ares__slist_node_reinsert(node);
+
+  next_retry_time = ares__tvnow();
+  timeadd(&next_retry_time, channel->server_retry_delay);
+  server->next_retry_time = next_retry_time;
+
+  invoke_server_state_cb(server, ARES_FALSE,
+                         used_tcp == ARES_TRUE ? ARES_SERV_STATE_TCP
+                                               : ARES_SERV_STATE_UDP);
 }
 
-static void server_set_good(struct server_state *server)
+static void server_set_good(struct server_state *server, ares_bool_t used_tcp)
 {
   ares__slist_node_t   *node;
   const ares_channel_t *channel = server->channel;
 
-  if (!server->consec_failures) {
-    return;
-  }
-
   node = ares__slist_node_find(channel->servers, server);
   if (node == NULL) {
     return;
   }
 
-  server->consec_failures = 0;
-  ares__slist_node_reinsert(node);
+  if (server->consec_failures > 0) {
+    server->consec_failures = 0;
+    ares__slist_node_reinsert(node);
+  }
+
+  server->next_retry_time.tv_sec  = 0;
+  server->next_retry_time.tv_usec = 0;
+
+  invoke_server_state_cb(server, ARES_TRUE,
+                         used_tcp == ARES_TRUE ? ARES_SERV_STATE_TCP
+                                               : ARES_SERV_STATE_UDP);
 }
 
 /* return true if now is exactly check time or later */
@@ -561,7 +613,7 @@ static void process_timeouts(ares_channel_t *channel, struct timeval *now)
     query->timeouts++;
 
     conn = query->conn;
-    server_increment_failures(conn->server);
+    server_increment_failures(conn->server, query->using_tcp);
     ares__requeue_query(query, now);
     ares__check_cleanup_conn(channel, conn);
 
@@ -716,7 +768,7 @@ static ares_status_t process_answer(ares_channel_t      *channel,
           break;
       }
 
-      server_increment_failures(server);
+      server_increment_failures(server, query->using_tcp);
       ares__requeue_query(query, now);
 
       /* Should any of these cause a connection termination?
@@ -732,7 +784,7 @@ static ares_status_t process_answer(ares_channel_t      *channel,
     is_cached = ARES_TRUE;
   }
 
-  server_set_good(server);
+  server_set_good(server, query->using_tcp);
   end_query(channel, query, ARES_SUCCESS, rdnsrec);
 
   status = ARES_SUCCESS;
@@ -755,7 +807,7 @@ static void handle_conn_error(struct server_connection *conn,
   /* Increment failures first before requeue so it is unlikely to requeue
    * to the same server */
   if (critical_failure) {
-    server_increment_failures(server);
+    server_increment_failures(server, conn->is_tcp);
   }
 
   /* This will requeue any connections automatically */
@@ -816,6 +868,66 @@ static struct server_state *ares__random_server(ares_channel_t *channel)
   return NULL;
 }
 
+/* Pick a server from the list with failover behavior.
+ *
+ * We default to using the first server in the sorted list of servers. That is
+ * the server with the lowest number of consecutive failures and then the
+ * highest priority server (by idx) if there is a draw.
+ *
+ * However, if a server temporarily goes down and hits some failures, then that
+ * server will never be retried until all other servers hit the same number of
+ * failures. This may prevent the server from being retried for a long time.
+ *
+ * To resolve this, with some probability we select a failed server to retry
+ * instead.
+ */
+static struct server_state *ares__failover_server(ares_channel_t *channel)
+{
+  struct server_state *first_server = ares__slist_first_val(channel->servers);
+  struct server_state *last_server  = ares__slist_last_val(channel->servers);
+  unsigned short       r;
+
+  /* Defensive code against no servers being available on the channel. */
+  if (first_server == NULL) {
+    return NULL;
+  }
+
+  /* If no servers have failures, then prefer the first server in the list. */
+  if (last_server != NULL && last_server->consec_failures == 0) {
+    return first_server;
+  }
+
+  /* If we are not configured with a server retry chance then return the first
+   * server.
+   */
+  if (channel->server_retry_chance == 0) {
+    return first_server;
+  }
+
+  /* Generate a random value to decide whether to retry a failed server. The
+   * probability to use is 1/channel->server_retry_chance, rounded up to a
+   * precision of 1/2^B where B is the number of bits in the random value.
+   * We use an unsigned short for the random value for increased precision.
+   */
+  ares__rand_bytes(channel->rand_state, (unsigned char *)&r, sizeof(r));
+  if (r % channel->server_retry_chance == 0) {
+    /* Select a suitable failed server to retry. */
+    struct timeval      now = ares__tvnow();
+    ares__slist_node_t *node;
+    for (node = ares__slist_node_first(channel->servers); node != NULL;
+         node = ares__slist_node_next(node)) {
+      struct server_state *node_val = ares__slist_node_val(node);
+      if (node_val != NULL && node_val->consec_failures > 0 &&
+          ares__timedout(&now, &node_val->next_retry_time)) {
+        return node_val;
+      }
+    }
+  }
+
+  /* If we have not returned yet, then return the first server. */
+  return first_server;
+}
+
 static ares_status_t ares__append_tcpbuf(struct server_state *server,
                                          const struct query  *query)
 {
@@ -890,10 +1002,11 @@ ares_status_t ares__send_query(struct query *query, struct timeval *now)
 
   /* Choose the server to send the query to */
   if (channel->rotate) {
+    /* Pull random server */
     server = ares__random_server(channel);
   } else {
-    /* Pull first */
-    server = ares__slist_first_val(channel->servers);
+    /* Pull server with failover behavior */
+    server = ares__failover_server(channel);
   }
 
   if (server == NULL) {
@@ -918,7 +1031,7 @@ ares_status_t ares__send_query(struct query *query, struct timeval *now)
          * error codes */
         case ARES_ECONNREFUSED:
         case ARES_EBADFAMILY:
-          server_increment_failures(server);
+          server_increment_failures(server, query->using_tcp);
           query->error_status = status;
           return ares__requeue_query(query, now);
 
@@ -977,7 +1090,7 @@ ares_status_t ares__send_query(struct query *query, struct timeval *now)
          * error codes */
         case ARES_ECONNREFUSED:
         case ARES_EBADFAMILY:
-          server_increment_failures(server);
+          server_increment_failures(server, query->using_tcp);
           query->error_status = status;
           return ares__requeue_query(query, now);
 
@@ -992,7 +1105,7 @@ ares_status_t ares__send_query(struct query *query, struct timeval *now)
     conn = ares__llist_node_val(node);
     if (ares__socket_write(channel, conn->fd, query->qbuf, query->qlen) == -1) {
       /* FIXME: Handle EAGAIN here since it likely can happen. */
-      server_increment_failures(server);
+      server_increment_failures(server, query->using_tcp);
       status = ares__requeue_query(query, now);
 
       /* Only safe to kill connection if it was new, otherwise it should be
diff --git a/deps/cares/src/lib/ares_send.c b/deps/cares/src/lib/ares_send.c
index 54f2b504d50cac..d15a9b953df962 100644
--- a/deps/cares/src/lib/ares_send.c
+++ b/deps/cares/src/lib/ares_send.c
@@ -200,7 +200,7 @@ void ares_send(ares_channel_t *channel, const unsigned char *qbuf, int qlen,
   ares_dns_record_destroy(dnsrec);
 }
 
-size_t ares_queue_active_queries(ares_channel_t *channel)
+size_t ares_queue_active_queries(const ares_channel_t *channel)
 {
   size_t len;
 
diff --git a/deps/cares/src/lib/ares_sysconfig.c b/deps/cares/src/lib/ares_sysconfig.c
index 474534512af191..d56ee22e08884d 100644
--- a/deps/cares/src/lib/ares_sysconfig.c
+++ b/deps/cares/src/lib/ares_sysconfig.c
@@ -957,23 +957,24 @@ static ares_status_t ares__init_sysconfig_libresolv(ares_sysconfig_t *sysconfig)
   if (res.ndots >= 0) {
     sysconfig->ndots = (size_t)res.ndots;
   }
+/* Apple does not allow configuration of retry, so this is a static dummy
+ * value, ignore */
+#  ifndef __APPLE__
   if (res.retry > 0) {
     sysconfig->tries = (size_t)res.retry;
   }
+#  endif
   if (res.options & RES_ROTATE) {
     sysconfig->rotate = ARES_TRUE;
   }
 
   if (res.retrans > 0) {
+/* Apple does not allow configuration of retrans, so this is a dummy value
+ * that is extremely high (5s) */
+#  ifndef __APPLE__
     if (res.retrans > 0) {
       sysconfig->timeout_ms = (unsigned int)res.retrans * 1000;
     }
-#  ifdef __APPLE__
-    if (res.retry >= 0) {
-      sysconfig->timeout_ms /=
-        ((unsigned int)res.retry + 1) *
-        (unsigned int)(res.nscount > 0 ? res.nscount : 1);
-    }
 #  endif
   }
 
@@ -1083,6 +1084,8 @@ ares_status_t ares__init_by_sysconfig(ares_channel_t *channel)
   status = ares__init_sysconfig_watt32(&sysconfig);
 #elif defined(ANDROID) || defined(__ANDROID__)
   status = ares__init_sysconfig_android(&sysconfig);
+#elif defined(__APPLE__)
+  status = ares__init_sysconfig_macos(&sysconfig);
 #elif defined(CARES_USE_LIBRESOLV)
   status = ares__init_sysconfig_libresolv(&sysconfig);
 #else
@@ -1099,7 +1102,14 @@ ares_status_t ares__init_by_sysconfig(ares_channel_t *channel)
     goto done;
   }
 
+  /* Lock when applying the configuration to the channel.  Don't need to
+   * lock prior to this. */
+
+  ares__channel_lock(channel);
+
   status = ares_sysconfig_apply(channel, &sysconfig);
+  ares__channel_unlock(channel);
+
   if (status != ARES_SUCCESS) {
     goto done;
   }
diff --git a/deps/cares/src/lib/ares_sysconfig_files.c b/deps/cares/src/lib/ares_sysconfig_files.c
index 557888bc740a39..5771a581db5ef1 100644
--- a/deps/cares/src/lib/ares_sysconfig_files.c
+++ b/deps/cares/src/lib/ares_sysconfig_files.c
@@ -436,7 +436,8 @@ static ares_status_t process_option(ares_sysconfig_t *sysconfig,
   return status;
 }
 
-static ares_status_t set_options(ares_sysconfig_t *sysconfig, const char *str)
+ares_status_t ares__sysconfig_set_options(ares_sysconfig_t *sysconfig,
+                                          const char       *str)
 {
   ares__buf_t        *buf     = NULL;
   ares__llist_t      *options = NULL;
@@ -494,7 +495,7 @@ ares_status_t ares__init_by_environment(ares_sysconfig_t *sysconfig)
 
   res_options = getenv("RES_OPTIONS");
   if (res_options) {
-    status = set_options(sysconfig, res_options);
+    status = ares__sysconfig_set_options(sysconfig, res_options);
     if (status != ARES_SUCCESS) {
       return status;
     }
@@ -617,7 +618,7 @@ static ares_status_t parse_resolvconf_line(ares_sysconfig_t *sysconfig,
       status = ARES_SUCCESS;
     }
   } else if (strcmp(option, "options") == 0) {
-    status = set_options(sysconfig, value);
+    status = ares__sysconfig_set_options(sysconfig, value);
   }
 
   return status;
diff --git a/deps/cares/src/lib/ares_sysconfig_mac.c b/deps/cares/src/lib/ares_sysconfig_mac.c
new file mode 100644
index 00000000000000..65548d20f68753
--- /dev/null
+++ b/deps/cares/src/lib/ares_sysconfig_mac.c
@@ -0,0 +1,314 @@
+/* MIT License
+ *
+ * Copyright (c) 2024 The c-ares project and its contributors
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#ifdef __APPLE__
+
+/* The DNS configuration for apple is stored in the system configuration
+ * database.  Apple does provide an emulated `/etc/resolv.conf` on MacOS (but
+ * not iOS), it cannot, however, represent the entirety of the DNS
+ * configuration.  Alternatively, libresolv could be used to also retrieve some
+ * system configuration, but it too is not capable of retrieving the entirety
+ * of the DNS configuration.
+ *
+ * Attempts to use the preferred public API of `SCDynamicStoreCreate()` and
+ * friends yielded incomplete DNS information.  Instead, that leaves some apple
+ * "internal" symbols from `configd` that we need to access in order to get the
+ * entire configuration.  We can see that we're not the only ones to do this as
+ * Google Chrome also does:
+ * https://chromium.googlesource.com/chromium/src/+/HEAD/net/dns/dns_config_watcher_mac.cc
+ * These internal functions are what `libresolv` and `scutil` use to retrieve
+ * the dns configuration.  Since these symbols are not publicly available, we
+ * will dynamically load the symbols from `libSystem` and import the `dnsinfo.h`
+ * private header extracted from:
+ * https://opensource.apple.com/source/configd/configd-1109.140.1/dnsinfo/dnsinfo.h
+ */
+#  include "ares_setup.h"
+#  include 
+#  include 
+#  include 
+#  include 
+#  include 
+#  include "thirdparty/apple/dnsinfo.h"
+#  include 
+#  include "ares.h"
+#  include "ares_private.h"
+
+typedef struct {
+  void *handle;
+  dns_config_t *(*dns_configuration_copy)(void);
+  void (*dns_configuration_free)(dns_config_t *config);
+} dnsinfo_t;
+
+static void dnsinfo_destroy(dnsinfo_t *dnsinfo)
+{
+  if (dnsinfo == NULL) {
+    return;
+  }
+
+  if (dnsinfo->handle) {
+    dlclose(dnsinfo->handle);
+  }
+
+  ares_free(dnsinfo);
+}
+
+static ares_status_t dnsinfo_init(dnsinfo_t **dnsinfo_out)
+{
+  dnsinfo_t    *dnsinfo = NULL;
+  ares_status_t status  = ARES_SUCCESS;
+
+  if (dnsinfo_out == NULL) {
+    status = ARES_EFORMERR;
+    goto done;
+  }
+
+  *dnsinfo_out = NULL;
+
+  dnsinfo = ares_malloc_zero(sizeof(*dnsinfo));
+
+  if (dnsinfo == NULL) {
+    status = ARES_ENOMEM;
+    goto done;
+  }
+
+  dnsinfo->handle = dlopen("/usr/lib/libSystem.dylib", RTLD_LAZY | RTLD_NOLOAD);
+  if (dnsinfo->handle == NULL) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+  dnsinfo->dns_configuration_copy =
+    dlsym(dnsinfo->handle, "dns_configuration_copy");
+  dnsinfo->dns_configuration_free =
+    dlsym(dnsinfo->handle, "dns_configuration_free");
+
+  if (dnsinfo->dns_configuration_copy == NULL ||
+      dnsinfo->dns_configuration_free == NULL) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+
+done:
+  if (status == ARES_SUCCESS) {
+    *dnsinfo_out = dnsinfo;
+  } else {
+    dnsinfo_destroy(dnsinfo);
+  }
+
+  return status;
+}
+
+static ares_bool_t search_is_duplicate(const ares_sysconfig_t *sysconfig,
+                                       const char             *name)
+{
+  size_t i;
+  for (i = 0; i < sysconfig->ndomains; i++) {
+    if (strcasecmp(sysconfig->domains[i], name) == 0) {
+      return ARES_TRUE;
+    }
+  }
+  return ARES_FALSE;
+}
+
+static ares_status_t read_resolver(const dns_resolver_t *resolver,
+                                   ares_sysconfig_t     *sysconfig)
+{
+  int            i;
+  unsigned short port   = 0;
+  ares_status_t  status = ARES_SUCCESS;
+
+  /* XXX: resolver->domain is for domain-specific servers.  When we implement
+   *      this support, we'll want to use this.  But for now, we're going to
+   *      skip any servers which set this since we can't properly route. */
+  if (resolver->domain != NULL) {
+    return ARES_SUCCESS;
+  }
+
+  /* Check to see if DNS server should be used, base this on if the server is
+   * reachable or can be reachable automatically if we send traffic that
+   * direction. */
+  if (!(resolver->reach_flags &
+        (kSCNetworkFlagsReachable |
+         kSCNetworkReachabilityFlagsConnectionOnTraffic))) {
+    return ARES_SUCCESS;
+  }
+
+  /* NOTE: it doesn't look like resolver->flags is relevant */
+
+  /* If there's no nameservers, nothing to do */
+  if (resolver->n_nameserver <= 0) {
+    return ARES_SUCCESS;
+  }
+
+  /* Default port */
+  port = resolver->port;
+
+  /* Append search list */
+  if (resolver->n_search > 0) {
+    char **new_domains = ares_realloc_zero(
+      sysconfig->domains, sizeof(*sysconfig->domains) * sysconfig->ndomains,
+      sizeof(*sysconfig->domains) *
+        (sysconfig->ndomains + (size_t)resolver->n_search));
+    if (new_domains == NULL) {
+      return ARES_ENOMEM;
+    }
+    sysconfig->domains = new_domains;
+
+    for (i = 0; i < resolver->n_search; i++) {
+      /* Skip duplicates */
+      if (search_is_duplicate(sysconfig, resolver->search[i])) {
+        continue;
+      }
+      sysconfig->domains[sysconfig->ndomains] =
+        ares_strdup(resolver->search[i]);
+      if (sysconfig->domains[sysconfig->ndomains] == NULL) {
+        return ARES_ENOMEM;
+      }
+      sysconfig->ndomains++;
+    }
+  }
+
+  /* NOTE: we're going to skip importing the sort addresses for now.  Its
+   *       likely not used, its not obvious how to even configure such a thing.
+   */
+#  if 0
+  for (i=0; in_sortaddr; i++) {
+    char val[256];
+    inet_ntop(AF_INET, &resolver->sortaddr[i]->address, val, sizeof(val));
+    printf("\t\t%s/", val);
+    inet_ntop(AF_INET, &resolver->sortaddr[i]->mask, val, sizeof(val));
+    printf("%s\n", val);
+  }
+#  endif
+
+  if (resolver->options != NULL) {
+    status = ares__sysconfig_set_options(sysconfig, resolver->options);
+    if (status != ARES_SUCCESS) {
+      return status;
+    }
+  }
+
+  /* NOTE:
+   *   - resolver->timeout appears unused, always 0, so we ignore this
+   *   - resolver->service_identifier doesn't appear relevant to us
+   *   - resolver->cid also isn't relevant
+   *   - resolver->if_index we don't need, if_name is used instead.
+   */
+
+  /* XXX: resolver->search_order appears like it might be relevant, we might
+   * need to sort the resulting list by this metric if we find in the future we
+   * need to.  That said, due to the automatic re-sorting we do, I'm not sure it
+   * matters.  Here's an article on this search order stuff:
+   *      https://www.cnet.com/tech/computing/os-x-10-6-3-and-dns-server-priority-changes/
+   */
+
+  for (i = 0; i < resolver->n_nameserver; i++) {
+    struct ares_addr addr;
+    unsigned short   addrport;
+
+    if (resolver->nameserver[i]->sa_family == AF_INET) {
+      struct sockaddr_in *addr_in =
+        (struct sockaddr_in *)(void *)resolver->nameserver[i];
+      addr.family = AF_INET;
+      memcpy(&addr.addr.addr4, &(addr_in->sin_addr), sizeof(addr.addr.addr4));
+      addrport = ntohs(addr_in->sin_port);
+    } else if (resolver->nameserver[i]->sa_family == AF_INET6) {
+      struct sockaddr_in6 *addr_in6 =
+        (struct sockaddr_in6 *)(void *)resolver->nameserver[i];
+      addr.family = AF_INET6;
+      memcpy(&addr.addr.addr6, &(addr_in6->sin6_addr), sizeof(addr.addr.addr6));
+      addrport = ntohs(addr_in6->sin6_port);
+    } else {
+      continue;
+    }
+
+    if (addrport == 0) {
+      addrport = port;
+    }
+    status = ares__sconfig_append(&sysconfig->sconfig, &addr, addrport,
+                                  addrport, resolver->if_name);
+    if (status != ARES_SUCCESS) {
+      return status;
+    }
+  }
+
+  return status;
+}
+
+static ares_status_t read_resolvers(dns_resolver_t **resolvers, int nresolvers,
+                                    ares_sysconfig_t *sysconfig)
+{
+  ares_status_t status = ARES_SUCCESS;
+  int           i;
+
+  for (i = 0; status == ARES_SUCCESS && i < nresolvers; i++) {
+    status = read_resolver(resolvers[i], sysconfig);
+  }
+
+  return status;
+}
+
+ares_status_t ares__init_sysconfig_macos(ares_sysconfig_t *sysconfig)
+{
+  dnsinfo_t    *dnsinfo = NULL;
+  dns_config_t *sc_dns  = NULL;
+  ares_status_t status  = ARES_SUCCESS;
+
+  status = dnsinfo_init(&dnsinfo);
+
+  if (status != ARES_SUCCESS) {
+    goto done;
+  }
+
+  sc_dns = dnsinfo->dns_configuration_copy();
+  if (sc_dns == NULL) {
+    status = ARES_ESERVFAIL;
+    goto done;
+  }
+
+  /* There are `resolver`, `scoped_resolver`, and `service_specific_resolver`
+   * settings. The `scoped_resolver` settings appear to be already available via
+   * the `resolver` settings and likely are only relevant to link-local dns
+   * servers which we can already detect via the address itself, so we'll ignore
+   * the `scoped_resolver` section.  It isn't clear what the
+   * `service_specific_resolver` is used for, I haven't personally seen it
+   * in use so we'll ignore this until at some point where we find we need it.
+   * Likely this wasn't available via `/etc/resolv.conf` nor `libresolv` anyhow
+   * so its not worse to prior configuration methods, worst case. */
+
+  status = read_resolvers(sc_dns->resolver, sc_dns->n_resolver, sysconfig);
+
+done:
+  if (dnsinfo) {
+    dnsinfo->dns_configuration_free(sc_dns);
+    dnsinfo_destroy(dnsinfo);
+  }
+  return status;
+}
+
+
+#endif
diff --git a/deps/cares/src/lib/ares_timeout.c b/deps/cares/src/lib/ares_timeout.c
index 4e80580b5e0aa4..7e60acb263017f 100644
--- a/deps/cares/src/lib/ares_timeout.c
+++ b/deps/cares/src/lib/ares_timeout.c
@@ -55,8 +55,8 @@ void ares__timeval_remaining(struct timeval       *remaining,
   }
 }
 
-struct timeval *ares_timeout(ares_channel_t *channel, struct timeval *maxtv,
-                             struct timeval *tvbuf)
+struct timeval *ares_timeout(const ares_channel_t *channel,
+                             struct timeval *maxtv, struct timeval *tvbuf)
 {
   const struct query *query;
   ares__slist_node_t *node;
diff --git a/deps/cares/src/lib/ares_update_servers.c b/deps/cares/src/lib/ares_update_servers.c
index fce791476327c3..847a78a6e86526 100644
--- a/deps/cares/src/lib/ares_update_servers.c
+++ b/deps/cares/src/lib/ares_update_servers.c
@@ -167,13 +167,13 @@ static ares_bool_t ares_server_blacklisted(const struct ares_addr *addr)
     const unsigned char netbase[16];
     unsigned char       netmask;
   } blacklist_v6[] = {
-  /* fec0::/10 was deprecated by [RFC3879] in September 2004. Formerly a
-  * Site-Local scoped address prefix.  These are never valid DNS servers,
-  * but are known to be returned at least sometimes on Windows and Android.
-  */
-    {{ 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    /* fec0::/10 was deprecated by [RFC3879] in September 2004. Formerly a
+     * Site-Local scoped address prefix.  These are never valid DNS servers,
+     * but are known to be returned at least sometimes on Windows and Android.
+     */
+    { { 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
         0x00, 0x00, 0x00, 0x00 },
-     10}
+     10 }
   };
 
   size_t i;
@@ -405,10 +405,16 @@ ares_status_t ares__sconfig_append(ares__llist_t         **sconfig,
   s->udp_port = udp_port;
   s->tcp_port = tcp_port;
 
-  /* Handle link-local enumeration */
-  if (ares_strlen(ll_iface) && ares__addr_is_linklocal(&s->addr)) {
+  /* Handle link-local enumeration. If an interface is specified on a
+   * non-link-local address, we'll simply end up ignoring that */
+  if (ares__addr_is_linklocal(&s->addr)) {
+    if (ares_strlen(ll_iface) == 0) {
+      /* Silently ignore this entry, we require an interface */
+      status = ARES_SUCCESS;
+      goto fail;
+    }
     status = ares__sconfig_linklocal(s, ll_iface);
-    /* Silently ignore this entry */
+    /* Silently ignore this entry, we can't validate the interface */
     if (status != ARES_SUCCESS) {
       status = ARES_SUCCESS;
       goto fail;
@@ -587,6 +593,8 @@ static ares_status_t ares__server_create(ares_channel_t       *channel,
   server->udp_port    = ares__sconfig_get_port(channel, sconfig, ARES_FALSE);
   server->tcp_port    = ares__sconfig_get_port(channel, sconfig, ARES_TRUE);
   server->addr.family = sconfig->addr.family;
+  server->next_retry_time.tv_sec  = 0;
+  server->next_retry_time.tv_usec = 0;
 
   if (sconfig->addr.family == AF_INET) {
     memcpy(&server->addr.addr.addr4, &sconfig->addr.addr.addr4,
@@ -711,7 +719,7 @@ ares_status_t ares__servers_update(ares_channel_t *channel,
     const ares_sconfig_t *sconfig = ares__llist_node_val(node);
     ares__slist_node_t   *snode;
 
-    /* Don't add duplicate servers! */
+    /* If a server has already appeared in the list of new servers, skip it. */
     if (ares__server_isdup(channel, node)) {
       continue;
     }
@@ -908,7 +916,64 @@ ares_status_t ares_in_addr_to_server_config_llist(const struct in_addr *servers,
   return ARES_ENOMEM;
 }
 
-int ares_get_servers(ares_channel_t *channel, struct ares_addr_node **servers)
+/* Write out the details of a server to a buffer */
+ares_status_t ares_get_server_addr(const struct server_state *server,
+                                   ares__buf_t               *buf)
+{
+  ares_status_t status;
+  char          addr[INET6_ADDRSTRLEN];
+
+  /* ipv4addr or [ipv6addr] */
+  if (server->addr.family == AF_INET6) {
+    status = ares__buf_append_byte(buf, '[');
+    if (status != ARES_SUCCESS) {
+      return status;
+    }
+  }
+
+  ares_inet_ntop(server->addr.family, &server->addr.addr, addr, sizeof(addr));
+
+  status = ares__buf_append_str(buf, addr);
+  if (status != ARES_SUCCESS) {
+    return status;
+  }
+
+  if (server->addr.family == AF_INET6) {
+    status = ares__buf_append_byte(buf, ']');
+    if (status != ARES_SUCCESS) {
+      return status;
+    }
+  }
+
+  /* :port */
+  status = ares__buf_append_byte(buf, ':');
+  if (status != ARES_SUCCESS) {
+    return status;
+  }
+
+  status = ares__buf_append_num_dec(buf, server->udp_port, 0);
+  if (status != ARES_SUCCESS) {
+    return status;
+  }
+
+  /* %iface */
+  if (ares_strlen(server->ll_iface)) {
+    status = ares__buf_append_byte(buf, '%');
+    if (status != ARES_SUCCESS) {
+      return status;
+    }
+
+    status = ares__buf_append_str(buf, server->ll_iface);
+    if (status != ARES_SUCCESS) {
+      return status;
+    }
+  }
+
+  return ARES_SUCCESS;
+}
+
+int ares_get_servers(const ares_channel_t   *channel,
+                     struct ares_addr_node **servers)
 {
   struct ares_addr_node *srvr_head = NULL;
   struct ares_addr_node *srvr_last = NULL;
@@ -962,7 +1027,7 @@ int ares_get_servers(ares_channel_t *channel, struct ares_addr_node **servers)
   return (int)status;
 }
 
-int ares_get_servers_ports(ares_channel_t              *channel,
+int ares_get_servers_ports(const ares_channel_t        *channel,
                            struct ares_addr_port_node **servers)
 {
   struct ares_addr_port_node *srvr_head = NULL;
@@ -1110,7 +1175,7 @@ int ares_set_servers_ports_csv(ares_channel_t *channel, const char *_csv)
   return (int)set_servers_csv(channel, _csv);
 }
 
-char *ares_get_servers_csv(ares_channel_t *channel)
+char *ares_get_servers_csv(const ares_channel_t *channel)
 {
   ares__buf_t        *buf = NULL;
   char               *out = NULL;
@@ -1127,7 +1192,6 @@ char *ares_get_servers_csv(ares_channel_t *channel)
        node = ares__slist_node_next(node)) {
     ares_status_t              status;
     const struct server_state *server = ares__slist_node_val(node);
-    char                       addr[64];
 
     if (ares__buf_len(buf)) {
       status = ares__buf_append_byte(buf, ',');
@@ -1136,51 +1200,10 @@ char *ares_get_servers_csv(ares_channel_t *channel)
       }
     }
 
-    /* ipv4addr or [ipv6addr] */
-    if (server->addr.family == AF_INET6) {
-      status = ares__buf_append_byte(buf, '[');
-      if (status != ARES_SUCCESS) {
-        goto done;
-      }
-    }
-
-    ares_inet_ntop(server->addr.family, &server->addr.addr, addr, sizeof(addr));
-
-    status = ares__buf_append_str(buf, addr);
-    if (status != ARES_SUCCESS) {
-      goto done;
-    }
-
-    if (server->addr.family == AF_INET6) {
-      status = ares__buf_append_byte(buf, ']');
-      if (status != ARES_SUCCESS) {
-        goto done;
-      }
-    }
-
-    /* :port */
-    status = ares__buf_append_byte(buf, ':');
+    status = ares_get_server_addr(server, buf);
     if (status != ARES_SUCCESS) {
       goto done;
     }
-
-    status = ares__buf_append_num_dec(buf, server->udp_port, 0);
-    if (status != ARES_SUCCESS) {
-      goto done;
-    }
-
-    /* %iface */
-    if (ares_strlen(server->ll_iface)) {
-      status = ares__buf_append_byte(buf, '%');
-      if (status != ARES_SUCCESS) {
-        goto done;
-      }
-
-      status = ares__buf_append_str(buf, server->ll_iface);
-      if (status != ARES_SUCCESS) {
-        goto done;
-      }
-    }
   }
 
   out = ares__buf_finish_str(buf, NULL);
@@ -1191,3 +1214,13 @@ char *ares_get_servers_csv(ares_channel_t *channel)
   ares__buf_destroy(buf);
   return out;
 }
+
+void ares_set_server_state_callback(ares_channel_t            *channel,
+                                    ares_server_state_callback cb, void *data)
+{
+  if (channel == NULL) {
+    return;
+  }
+  channel->server_state_cb      = cb;
+  channel->server_state_cb_data = data;
+}
diff --git a/deps/cares/src/lib/thirdparty/apple/dnsinfo.h b/deps/cares/src/lib/thirdparty/apple/dnsinfo.h
new file mode 100644
index 00000000000000..d51c546f2f58ce
--- /dev/null
+++ b/deps/cares/src/lib/thirdparty/apple/dnsinfo.h
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2004-2006, 2008, 2009, 2011-2013, 2015-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DNSINFO_H__
+#define __DNSINFO_H__
+
+/*
+ * These routines provide access to the systems DNS configuration
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define DNSINFO_VERSION   20170629
+
+#define DEFAULT_SEARCH_ORDER    200000   /* search order for the "default" resolver domain name */
+
+#define DNS_PTR(type, name)       \
+  union {           \
+    type    name;     \
+    uint64_t  _ ## name ## _p;  \
+  }
+
+#define DNS_VAR(type, name)       \
+  type  name
+
+
+#pragma pack(4)
+typedef struct {
+  struct in_addr  address;
+  struct in_addr  mask;
+} dns_sortaddr_t;
+#pragma pack()
+
+
+#pragma pack(4)
+typedef struct {
+  DNS_PTR(char *,     domain);  /* domain */
+  DNS_VAR(int32_t,    n_nameserver);  /* # nameserver */
+  DNS_PTR(struct sockaddr **, nameserver);
+  DNS_VAR(uint16_t,   port);    /* port (in host byte order) */
+  DNS_VAR(int32_t,    n_search);  /* # search */
+  DNS_PTR(char **,    search);
+  DNS_VAR(int32_t,    n_sortaddr);  /* # sortaddr */
+  DNS_PTR(dns_sortaddr_t **,  sortaddr);
+  DNS_PTR(char *,     options); /* options */
+  DNS_VAR(uint32_t,   timeout); /* timeout */
+  DNS_VAR(uint32_t,   search_order);  /* search_order */
+  DNS_VAR(uint32_t,   if_index);
+  DNS_VAR(uint32_t,   flags);
+  DNS_VAR(uint32_t,   reach_flags); /* SCNetworkReachabilityFlags */
+  DNS_VAR(uint32_t,   service_identifier);
+  DNS_PTR(char *,     cid);   /* configuration identifer */
+  DNS_PTR(char *,     if_name); /* if_index interface name */
+} dns_resolver_t;
+#pragma pack()
+
+
+#define DNS_RESOLVER_FLAGS_REQUEST_A_RECORDS  0x0002    /* always requesting for A dns records in queries */
+#define DNS_RESOLVER_FLAGS_REQUEST_AAAA_RECORDS 0x0004    /* always requesting for AAAA dns records in queries */
+
+#define DNS_RESOLVER_FLAGS_REQUEST_ALL_RECORDS  \
+  (DNS_RESOLVER_FLAGS_REQUEST_A_RECORDS | DNS_RESOLVER_FLAGS_REQUEST_AAAA_RECORDS)
+
+#define DNS_RESOLVER_FLAGS_SCOPED   0x1000    /* configuration is for scoped questions */
+#define DNS_RESOLVER_FLAGS_SERVICE_SPECIFIC 0x2000    /* configuration is service-specific */
+#define DNS_RESOLVER_FLAGS_SUPPLEMENTAL   0x4000    /* supplemental match configuration */
+
+
+#pragma pack(4)
+typedef struct {
+  DNS_VAR(int32_t,    n_resolver);    /* resolver configurations */
+  DNS_PTR(dns_resolver_t **,  resolver);
+  DNS_VAR(int32_t,    n_scoped_resolver); /* "scoped" resolver configurations */
+  DNS_PTR(dns_resolver_t **,  scoped_resolver);
+  DNS_VAR(uint64_t,   generation);
+  DNS_VAR(int32_t,    n_service_specific_resolver);
+  DNS_PTR(dns_resolver_t **,  service_specific_resolver);
+  DNS_VAR(uint32_t,   version);
+} dns_config_t;
+#pragma pack()
+
+
+__BEGIN_DECLS
+
+/*
+ * DNS configuration access APIs
+ */
+const char *
+dns_configuration_notify_key    (void)        API_AVAILABLE(macos(10.4), ios(2.0));
+
+dns_config_t *
+dns_configuration_copy    (void)        API_AVAILABLE(macos(10.4), ios(2.0));
+
+void
+dns_configuration_free    (dns_config_t *config)  API_AVAILABLE(macos(10.4), ios(2.0));
+
+void
+_dns_configuration_ack    (dns_config_t *config,
+         const char *bundle_id) API_AVAILABLE(macos(10.8), ios(6.0));
+
+__END_DECLS
+
+#endif  /* __DNSINFO_H__ */
diff --git a/deps/cares/src/tools/CMakeLists.txt b/deps/cares/src/tools/CMakeLists.txt
index fb795a91741aaf..0016ca4c0b1a0a 100644
--- a/deps/cares/src/tools/CMakeLists.txt
+++ b/deps/cares/src/tools/CMakeLists.txt
@@ -19,6 +19,10 @@ IF (CARES_BUILD_TOOLS)
 		C_STANDARD                   90
 	)
 
+	IF (ANDROID)
+		SET_TARGET_PROPERTIES (ahost PROPERTIES C_STANDARD 99)
+	ENDIF ()
+
 	TARGET_COMPILE_DEFINITIONS (ahost PRIVATE HAVE_CONFIG_H=1 CARES_NO_DEPRECATED)
 	TARGET_LINK_LIBRARIES (ahost PRIVATE ${PROJECT_NAME})
 	IF (CARES_INSTALL)
@@ -40,6 +44,10 @@ IF (CARES_BUILD_TOOLS)
 		C_STANDARD                   90
 	)
 
+	IF (ANDROID)
+		SET_TARGET_PROPERTIES (adig PROPERTIES C_STANDARD 99)
+	ENDIF ()
+
 	TARGET_COMPILE_DEFINITIONS (adig PRIVATE HAVE_CONFIG_H=1 CARES_NO_DEPRECATED)
 	TARGET_LINK_LIBRARIES (adig PRIVATE ${PROJECT_NAME})
 	IF (CARES_INSTALL)
diff --git a/deps/cares/src/tools/adig.c b/deps/cares/src/tools/adig.c
index cd427f4b193526..66c118844e8c7e 100644
--- a/deps/cares/src/tools/adig.c
+++ b/deps/cares/src/tools/adig.c
@@ -84,12 +84,12 @@ typedef struct {
 } nv_t;
 
 static const nv_t configflags[] = {
-  {"usevc",      ARES_FLAG_USEVC    },
-  { "primary",   ARES_FLAG_PRIMARY  },
-  { "igntc",     ARES_FLAG_IGNTC    },
-  { "norecurse", ARES_FLAG_NORECURSE},
-  { "stayopen",  ARES_FLAG_STAYOPEN },
-  { "noaliases", ARES_FLAG_NOALIASES}
+  { "usevc",     ARES_FLAG_USEVC     },
+  { "primary",   ARES_FLAG_PRIMARY   },
+  { "igntc",     ARES_FLAG_IGNTC     },
+  { "norecurse", ARES_FLAG_NORECURSE },
+  { "stayopen",  ARES_FLAG_STAYOPEN  },
+  { "noaliases", ARES_FLAG_NOALIASES }
 };
 static const size_t nconfigflags = sizeof(configflags) / sizeof(*configflags);
 

From d6114cb2e298f23d8e41ff130dfca9b7bd87f15f Mon Sep 17 00:00:00 2001
From: Richard Lau 
Date: Sun, 2 Jun 2024 19:12:23 +0100
Subject: [PATCH 36/76] test: fix test when compiled without engine support
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Update the `addons/openssl-test-engine` test to pass when OpenSSL
has been compiled without support for custom engines. OpenSSL 3
deprecated support for engines, with the recommendation to move
to the provider model.

PR-URL: https://github.com/nodejs/node/pull/53232
Refs: https://github.com/openssl/openssl/blob/openssl-3.0.0/README-ENGINES.md
Reviewed-By: Yagiz Nizipli 
Reviewed-By: Luigi Pinca 
Reviewed-By: Moshe Atlow 
Reviewed-By: Ulises Gascón 
Reviewed-By: James M Snell 
---
 test/addons/openssl-test-engine/test.js | 61 ++++++++++++++-----------
 1 file changed, 35 insertions(+), 26 deletions(-)

diff --git a/test/addons/openssl-test-engine/test.js b/test/addons/openssl-test-engine/test.js
index fb531dcd75491a..e4ce6b5b519a55 100644
--- a/test/addons/openssl-test-engine/test.js
+++ b/test/addons/openssl-test-engine/test.js
@@ -11,50 +11,59 @@ const crypto = require('crypto');
 const fs = require('fs');
 const path = require('path');
 
+// Engine support in OpenSSL is checked later on.
+let hasEngineSupport = true;
 
-assert.throws(() => crypto.setEngine(true), /ERR_INVALID_ARG_TYPE/);
+assert.throws(() => crypto.setEngine(true), /ERR_INVALID_ARG_TYPE|ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED/);
 assert.throws(() => crypto.setEngine('/path/to/engine', 'notANumber'),
               /ERR_INVALID_ARG_TYPE/);
 
 {
   const invalidEngineName = 'xxx';
   assert.throws(() => crypto.setEngine(invalidEngineName),
-                /ERR_CRYPTO_ENGINE_UNKNOWN/);
+                /ERR_CRYPTO_ENGINE_UNKNOWN|ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED/);
   assert.throws(() => crypto.setEngine(invalidEngineName,
                                        crypto.constants.ENGINE_METHOD_RSA),
-                /ERR_CRYPTO_ENGINE_UNKNOWN/);
+                /ERR_CRYPTO_ENGINE_UNKNOWN|ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED/);
 }
 
-crypto.setEngine('dynamic');
-crypto.setEngine('dynamic');
+try {
+  crypto.setEngine('dynamic');
+  crypto.setEngine('dynamic');
 
-crypto.setEngine('dynamic', crypto.constants.ENGINE_METHOD_RSA);
-crypto.setEngine('dynamic', crypto.constants.ENGINE_METHOD_RSA);
+  crypto.setEngine('dynamic', crypto.constants.ENGINE_METHOD_RSA);
+  crypto.setEngine('dynamic', crypto.constants.ENGINE_METHOD_RSA);
+} catch (err) {
+  assert.strictEqual(err.code, 'ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED');
+  hasEngineSupport = false;
+}
 
-const engine = path.join(__dirname,
-                         `/build/${common.buildType}/testsetengine.engine`);
+if (hasEngineSupport) {
+  const engine = path.join(__dirname,
+                           `/build/${common.buildType}/testsetengine.engine`);
 
-if (!fs.existsSync(engine))
-  common.skip('no engine');
+  if (!fs.existsSync(engine))
+    common.skip('no engine');
 
-{
-  const engineId = path.parse(engine).name;
-  const execDir = path.parse(engine).dir;
+  {
+    const engineId = path.parse(engine).name;
+    const execDir = path.parse(engine).dir;
 
-  crypto.setEngine(engine);
-  // OpenSSL 3.0.1 and 1.1.1m now throw errors if an engine is loaded again
-  // with a duplicate absolute path.
-  // TODO(richardlau): figure out why this fails on macOS but not Linux.
-  // crypto.setEngine(engine);
+    crypto.setEngine(engine);
+    // OpenSSL 3.0.1 and 1.1.1m now throw errors if an engine is loaded again
+    // with a duplicate absolute path.
+    // TODO(richardlau): figure out why this fails on macOS but not Linux.
+    // crypto.setEngine(engine);
 
-  // crypto.setEngine(engine, crypto.constants.ENGINE_METHOD_RSA);
-  // crypto.setEngine(engine, crypto.constants.ENGINE_METHOD_RSA);
+    // crypto.setEngine(engine, crypto.constants.ENGINE_METHOD_RSA);
+    // crypto.setEngine(engine, crypto.constants.ENGINE_METHOD_RSA);
 
-  process.env.OPENSSL_ENGINES = execDir;
+    process.env.OPENSSL_ENGINES = execDir;
 
-  crypto.setEngine(engineId);
-  crypto.setEngine(engineId);
+    crypto.setEngine(engineId);
+    crypto.setEngine(engineId);
 
-  crypto.setEngine(engineId, crypto.constants.ENGINE_METHOD_RSA);
-  crypto.setEngine(engineId, crypto.constants.ENGINE_METHOD_RSA);
+    crypto.setEngine(engineId, crypto.constants.ENGINE_METHOD_RSA);
+    crypto.setEngine(engineId, crypto.constants.ENGINE_METHOD_RSA);
+  }
 }

From 5c46782137733ea2e9712b8df170aa342a5c856c Mon Sep 17 00:00:00 2001
From: Filip Skokan 
Date: Sat, 29 Jun 2024 00:21:29 +0200
Subject: [PATCH 37/76] crypto: make deriveBits length parameter optional and
 nullable

PR-URL: https://github.com/nodejs/node/pull/53601
Reviewed-By: Luigi Pinca 
Reviewed-By: Benjamin Gruenbaum 
---
 doc/api/webcrypto.md                          | 20 +++++++++++--------
 lib/internal/crypto/webcrypto.js              |  4 ++--
 .../test-webcrypto-derivebits-cfrg.js         | 10 ++++++++++
 .../test-webcrypto-derivebits-ecdh.js         | 10 ++++++++++
 .../test-webcrypto-derivebits-hkdf.js         |  5 +++++
 .../test-webcrypto-derivebits-pbkdf2.js       |  5 +++++
 6 files changed, 44 insertions(+), 10 deletions(-)

diff --git a/doc/api/webcrypto.md b/doc/api/webcrypto.md
index 68f81570d70c11..bbe58031e481dc 100644
--- a/doc/api/webcrypto.md
+++ b/doc/api/webcrypto.md
@@ -552,11 +552,15 @@ The algorithms currently supported include:
 * `'AES-CBC'`
 * `'AES-GCM`'
 
-### `subtle.deriveBits(algorithm, baseKey, length)`
+### `subtle.deriveBits(algorithm, baseKey[, length])`
 
 
 
@@ -575,12 +579,12 @@ Using the method and parameters specified in `algorithm` and the keying
 material provided by `baseKey`, `subtle.deriveBits()` attempts to generate
 `length` bits.
 
-The Node.js implementation requires that when `length` is a
-number it must be multiple of `8`.
+The Node.js implementation requires that `length`, when a number, is a multiple
+of `8`.
 
-When `length` is `null` the maximum number of bits for a given algorithm is
-generated. This is allowed for the `'ECDH'`, `'X25519'`, and `'X448'`
-algorithms.
+When `length` is not provided or `null` the maximum number of bits for a given
+algorithm is generated. This is allowed for the `'ECDH'`, `'X25519'`, and `'X448'`
+algorithms, for other algorithms `length` is required to be a number.
 
 If successful, the returned promise will be resolved with an {ArrayBuffer}
 containing the generated data.
diff --git a/lib/internal/crypto/webcrypto.js b/lib/internal/crypto/webcrypto.js
index d52f64bd4fa57c..ba9b077c7829a1 100644
--- a/lib/internal/crypto/webcrypto.js
+++ b/lib/internal/crypto/webcrypto.js
@@ -173,12 +173,12 @@ async function generateKey(
   return result;
 }
 
-async function deriveBits(algorithm, baseKey, length) {
+async function deriveBits(algorithm, baseKey, length = null) {
   if (this !== subtle) throw new ERR_INVALID_THIS('SubtleCrypto');
 
   webidl ??= require('internal/crypto/webidl');
   const prefix = "Failed to execute 'deriveBits' on 'SubtleCrypto'";
-  webidl.requiredArguments(arguments.length, 3, { prefix });
+  webidl.requiredArguments(arguments.length, 2, { prefix });
   algorithm = webidl.converters.AlgorithmIdentifier(algorithm, {
     prefix,
     context: '1st argument',
diff --git a/test/parallel/test-webcrypto-derivebits-cfrg.js b/test/parallel/test-webcrypto-derivebits-cfrg.js
index a9b0d1c248f275..9996bf7b9466c3 100644
--- a/test/parallel/test-webcrypto-derivebits-cfrg.js
+++ b/test/parallel/test-webcrypto-derivebits-cfrg.js
@@ -102,6 +102,16 @@ async function prepareKeys() {
         assert.strictEqual(Buffer.from(bits).toString('hex'), result);
       }
 
+      {
+        // Default length
+        const bits = await subtle.deriveBits({
+          name,
+          public: publicKey
+        }, privateKey);
+
+        assert.strictEqual(Buffer.from(bits).toString('hex'), result);
+      }
+
       {
         // Short Result
         const bits = await subtle.deriveBits({
diff --git a/test/parallel/test-webcrypto-derivebits-ecdh.js b/test/parallel/test-webcrypto-derivebits-ecdh.js
index d14d2e96e2d444..eb732636f3e271 100644
--- a/test/parallel/test-webcrypto-derivebits-ecdh.js
+++ b/test/parallel/test-webcrypto-derivebits-ecdh.js
@@ -123,6 +123,16 @@ async function prepareKeys() {
         assert.strictEqual(Buffer.from(bits).toString('hex'), result);
       }
 
+      {
+        // Default length
+        const bits = await subtle.deriveBits({
+          name: 'ECDH',
+          public: publicKey
+        }, privateKey);
+
+        assert.strictEqual(Buffer.from(bits).toString('hex'), result);
+      }
+
       {
         // Short Result
         const bits = await subtle.deriveBits({
diff --git a/test/parallel/test-webcrypto-derivebits-hkdf.js b/test/parallel/test-webcrypto-derivebits-hkdf.js
index 90cb14fddfe3cd..799d7d49ee4b3c 100644
--- a/test/parallel/test-webcrypto-derivebits-hkdf.js
+++ b/test/parallel/test-webcrypto-derivebits-hkdf.js
@@ -271,6 +271,11 @@ async function testDeriveBitsBadLengths(
         message: 'length cannot be null',
         name: 'OperationError',
       }),
+    assert.rejects(
+      subtle.deriveBits(algorithm, baseKeys[size]), {
+        message: 'length cannot be null',
+        name: 'OperationError',
+      }),
     assert.rejects(
       subtle.deriveBits(algorithm, baseKeys[size], 15), {
         message: /length must be a multiple of 8/,
diff --git a/test/pummel/test-webcrypto-derivebits-pbkdf2.js b/test/pummel/test-webcrypto-derivebits-pbkdf2.js
index 74f2e88c58024c..e6c357ab3a47a1 100644
--- a/test/pummel/test-webcrypto-derivebits-pbkdf2.js
+++ b/test/pummel/test-webcrypto-derivebits-pbkdf2.js
@@ -459,6 +459,11 @@ async function testDeriveBitsBadLengths(
         message: 'length cannot be null',
         name: 'OperationError',
       }),
+    assert.rejects(
+      subtle.deriveBits(algorithm, baseKeys[size]), {
+        message: 'length cannot be null',
+        name: 'OperationError',
+      }),
     assert.rejects(
       subtle.deriveBits(algorithm, baseKeys[size], 15), {
         message: /length must be a multiple of 8/,

From 395ee4460847f013e6ef3192ae998c79add4ea50 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Tue, 4 Jun 2024 03:33:00 +0300
Subject: [PATCH 38/76] deps: update corepack to 0.28.2
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

PR-URL: https://github.com/nodejs/node/pull/53253
Reviewed-By: Moshe Atlow 
Reviewed-By: Marco Ippolito 
Reviewed-By: Antoine du Hamel 
Reviewed-By: Tobias Nießen 
---
 deps/corepack/CHANGELOG.md          |    7 +
 deps/corepack/README.md             |    5 +-
 deps/corepack/dist/lib/corepack.cjs | 5276 +++++++++++++--------------
 deps/corepack/package.json          |    2 +-
 4 files changed, 2535 insertions(+), 2755 deletions(-)

diff --git a/deps/corepack/CHANGELOG.md b/deps/corepack/CHANGELOG.md
index 20d282c3a7b8e0..f3a4d9d83380e4 100644
--- a/deps/corepack/CHANGELOG.md
+++ b/deps/corepack/CHANGELOG.md
@@ -1,5 +1,12 @@
 # Changelog
 
+## [0.28.2](https://github.com/nodejs/corepack/compare/v0.28.1...v0.28.2) (2024-05-31)
+
+
+### Features
+
+* update package manager versions ([#481](https://github.com/nodejs/corepack/issues/481)) ([e1abb83](https://github.com/nodejs/corepack/commit/e1abb832416a793b490b2b51b4082fe822fc932c))
+
 ## [0.28.1](https://github.com/nodejs/corepack/compare/v0.28.0...v0.28.1) (2024-05-10)
 
 
diff --git a/deps/corepack/README.md b/deps/corepack/README.md
index f72f7f71ef77e8..d94614affc5353 100644
--- a/deps/corepack/README.md
+++ b/deps/corepack/README.md
@@ -247,7 +247,7 @@ same major line. Should you need to upgrade to a new major, use an explicit
   prevent Corepack showing the URL when it needs to download software, or can be
   set to `1` to have the URL shown. By default, when Corepack is called
   explicitly (e.g. `corepack pnpm …`), it is set to `0`; when Corepack is called
-  implicitely (e.g. `pnpm …`), it is set to `1`.
+  implicitly (e.g. `pnpm …`), it is set to `1`.
   When standard input is a TTY and no CI environment is detected, Corepack will
   ask for user input before starting the download.
 
@@ -304,7 +304,8 @@ same major line. Should you need to upgrade to a new major, use an explicit
 
 ### Networking
 
-There are a wide variety of networking issues that can occur while running `corepack` commands. Things to check:
+There are a wide variety of networking issues that can occur while running
+`corepack` commands. Things to check:
 
 - Make sure your network connection is active.
 - Make sure the host for your request can be resolved by your DNS; try using
diff --git a/deps/corepack/dist/lib/corepack.cjs b/deps/corepack/dist/lib/corepack.cjs
index e2a2cde7446d24..5e3dbd3a1e5cf6 100644
--- a/deps/corepack/dist/lib/corepack.cjs
+++ b/deps/corepack/dist/lib/corepack.cjs
@@ -1037,9 +1037,9 @@ var init_lib = __esm({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/constants.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/constants.js
 var require_constants = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/constants.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/constants.js"(exports, module2) {
     var SEMVER_SPEC_VERSION = "2.0.0";
     var MAX_LENGTH = 256;
     var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
@@ -1068,18 +1068,18 @@ var require_constants = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/debug.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/debug.js
 var require_debug = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/debug.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/debug.js"(exports, module2) {
     var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
     };
     module2.exports = debug2;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/re.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/re.js
 var require_re = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/re.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/re.js"(exports, module2) {
     var {
       MAX_SAFE_COMPONENT_LENGTH,
       MAX_SAFE_BUILD_LENGTH,
@@ -1162,9 +1162,9 @@ var require_re = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/parse-options.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/parse-options.js
 var require_parse_options = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/parse-options.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/parse-options.js"(exports, module2) {
     var looseOption = Object.freeze({ loose: true });
     var emptyOpts = Object.freeze({});
     var parseOptions = (options) => {
@@ -1180,9 +1180,9 @@ var require_parse_options = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/identifiers.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/identifiers.js
 var require_identifiers = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/internal/identifiers.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/identifiers.js"(exports, module2) {
     var numeric = /^[0-9]+$/;
     var compareIdentifiers = (a, b) => {
       const anum = numeric.test(a);
@@ -1201,9 +1201,9 @@ var require_identifiers = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/classes/semver.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/semver.js
 var require_semver = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/classes/semver.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/semver.js"(exports, module2) {
     var debug2 = require_debug();
     var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
     var { safeRe: re, t } = require_re();
@@ -1329,7 +1329,7 @@ var require_semver = __commonJS({
         do {
           const a = this.build[i];
           const b = other.build[i];
-          debug2("prerelease compare", i, a, b);
+          debug2("build compare", i, a, b);
           if (a === void 0 && b === void 0) {
             return 0;
           } else if (b === void 0) {
@@ -1443,9 +1443,9 @@ var require_semver = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/parse.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/parse.js
 var require_parse = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/parse.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/parse.js"(exports, module2) {
     var SemVer = require_semver();
     var parse = (version2, options, throwErrors = false) => {
       if (version2 instanceof SemVer) {
@@ -1464,9 +1464,9 @@ var require_parse = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/valid.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/valid.js
 var require_valid = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/valid.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/valid.js"(exports, module2) {
     var parse = require_parse();
     var valid = (version2, options) => {
       const v = parse(version2, options);
@@ -1476,9 +1476,9 @@ var require_valid = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/clean.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/clean.js
 var require_clean = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/clean.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/clean.js"(exports, module2) {
     var parse = require_parse();
     var clean = (version2, options) => {
       const s = parse(version2.trim().replace(/^[=v]+/, ""), options);
@@ -1488,9 +1488,9 @@ var require_clean = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/inc.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/inc.js
 var require_inc = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/inc.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/inc.js"(exports, module2) {
     var SemVer = require_semver();
     var inc = (version2, release, options, identifier, identifierBase) => {
       if (typeof options === "string") {
@@ -1511,9 +1511,9 @@ var require_inc = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/diff.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/diff.js
 var require_diff = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/diff.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/diff.js"(exports, module2) {
     var parse = require_parse();
     var diff = (version1, version2) => {
       const v1 = parse(version1, null, true);
@@ -1555,36 +1555,36 @@ var require_diff = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/major.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/major.js
 var require_major = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/major.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/major.js"(exports, module2) {
     var SemVer = require_semver();
     var major = (a, loose) => new SemVer(a, loose).major;
     module2.exports = major;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/minor.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/minor.js
 var require_minor = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/minor.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/minor.js"(exports, module2) {
     var SemVer = require_semver();
     var minor = (a, loose) => new SemVer(a, loose).minor;
     module2.exports = minor;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/patch.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/patch.js
 var require_patch = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/patch.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/patch.js"(exports, module2) {
     var SemVer = require_semver();
     var patch = (a, loose) => new SemVer(a, loose).patch;
     module2.exports = patch;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/prerelease.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/prerelease.js
 var require_prerelease = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/prerelease.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/prerelease.js"(exports, module2) {
     var parse = require_parse();
     var prerelease = (version2, options) => {
       const parsed = parse(version2, options);
@@ -1594,36 +1594,36 @@ var require_prerelease = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/compare.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare.js
 var require_compare = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/compare.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare.js"(exports, module2) {
     var SemVer = require_semver();
     var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
     module2.exports = compare;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/rcompare.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rcompare.js
 var require_rcompare = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/rcompare.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rcompare.js"(exports, module2) {
     var compare = require_compare();
     var rcompare = (a, b, loose) => compare(b, a, loose);
     module2.exports = rcompare;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/compare-loose.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare-loose.js
 var require_compare_loose = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/compare-loose.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare-loose.js"(exports, module2) {
     var compare = require_compare();
     var compareLoose = (a, b) => compare(a, b, true);
     module2.exports = compareLoose;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/compare-build.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare-build.js
 var require_compare_build = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/compare-build.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare-build.js"(exports, module2) {
     var SemVer = require_semver();
     var compareBuild = (a, b, loose) => {
       const versionA = new SemVer(a, loose);
@@ -1634,81 +1634,81 @@ var require_compare_build = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/sort.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/sort.js
 var require_sort = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/sort.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/sort.js"(exports, module2) {
     var compareBuild = require_compare_build();
     var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
     module2.exports = sort;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/rsort.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rsort.js
 var require_rsort = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/rsort.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rsort.js"(exports, module2) {
     var compareBuild = require_compare_build();
     var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
     module2.exports = rsort;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/gt.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gt.js
 var require_gt = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/gt.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gt.js"(exports, module2) {
     var compare = require_compare();
     var gt = (a, b, loose) => compare(a, b, loose) > 0;
     module2.exports = gt;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/lt.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lt.js
 var require_lt = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/lt.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lt.js"(exports, module2) {
     var compare = require_compare();
     var lt = (a, b, loose) => compare(a, b, loose) < 0;
     module2.exports = lt;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/eq.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/eq.js
 var require_eq = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/eq.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/eq.js"(exports, module2) {
     var compare = require_compare();
     var eq = (a, b, loose) => compare(a, b, loose) === 0;
     module2.exports = eq;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/neq.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/neq.js
 var require_neq = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/neq.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/neq.js"(exports, module2) {
     var compare = require_compare();
     var neq = (a, b, loose) => compare(a, b, loose) !== 0;
     module2.exports = neq;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/gte.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gte.js
 var require_gte = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/gte.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gte.js"(exports, module2) {
     var compare = require_compare();
     var gte = (a, b, loose) => compare(a, b, loose) >= 0;
     module2.exports = gte;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/lte.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lte.js
 var require_lte = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/lte.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lte.js"(exports, module2) {
     var compare = require_compare();
     var lte = (a, b, loose) => compare(a, b, loose) <= 0;
     module2.exports = lte;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/cmp.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/cmp.js
 var require_cmp = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/cmp.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/cmp.js"(exports, module2) {
     var eq = require_eq();
     var neq = require_neq();
     var gt = require_gt();
@@ -1755,9 +1755,9 @@ var require_cmp = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/coerce.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/coerce.js
 var require_coerce = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/coerce.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/coerce.js"(exports, module2) {
     var SemVer = require_semver();
     var parse = require_parse();
     var { safeRe: re, t } = require_re();
@@ -1800,1283 +1800,667 @@ var require_coerce = __commonJS({
   }
 });
 
-// .yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js
-var require_iterator = __commonJS({
-  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js"(exports, module2) {
-    "use strict";
-    module2.exports = function(Yallist) {
-      Yallist.prototype[Symbol.iterator] = function* () {
-        for (let walker = this.head; walker; walker = walker.next) {
-          yield walker.value;
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/lrucache.js
+var require_lrucache = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/lrucache.js"(exports, module2) {
+    var LRUCache = class {
+      constructor() {
+        this.max = 1e3;
+        this.map = /* @__PURE__ */ new Map();
+      }
+      get(key) {
+        const value = this.map.get(key);
+        if (value === void 0) {
+          return void 0;
+        } else {
+          this.map.delete(key);
+          this.map.set(key, value);
+          return value;
         }
-      };
+      }
+      delete(key) {
+        return this.map.delete(key);
+      }
+      set(key, value) {
+        const deleted = this.delete(key);
+        if (!deleted && value !== void 0) {
+          if (this.map.size >= this.max) {
+            const firstKey = this.map.keys().next().value;
+            this.delete(firstKey);
+          }
+          this.map.set(key, value);
+        }
+        return this;
+      }
     };
+    module2.exports = LRUCache;
   }
 });
 
-// .yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js
-var require_yallist = __commonJS({
-  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js"(exports, module2) {
-    "use strict";
-    module2.exports = Yallist;
-    Yallist.Node = Node;
-    Yallist.create = Yallist;
-    function Yallist(list) {
-      var self2 = this;
-      if (!(self2 instanceof Yallist)) {
-        self2 = new Yallist();
-      }
-      self2.tail = null;
-      self2.head = null;
-      self2.length = 0;
-      if (list && typeof list.forEach === "function") {
-        list.forEach(function(item) {
-          self2.push(item);
-        });
-      } else if (arguments.length > 0) {
-        for (var i = 0, l = arguments.length; i < l; i++) {
-          self2.push(arguments[i]);
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/range.js
+var require_range = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/range.js"(exports, module2) {
+    var Range = class _Range {
+      constructor(range, options) {
+        options = parseOptions(options);
+        if (range instanceof _Range) {
+          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+            return range;
+          } else {
+            return new _Range(range.raw, options);
+          }
+        }
+        if (range instanceof Comparator) {
+          this.raw = range.value;
+          this.set = [[range]];
+          this.format();
+          return this;
+        }
+        this.options = options;
+        this.loose = !!options.loose;
+        this.includePrerelease = !!options.includePrerelease;
+        this.raw = range.trim().split(/\s+/).join(" ");
+        this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length);
+        if (!this.set.length) {
+          throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
+        }
+        if (this.set.length > 1) {
+          const first = this.set[0];
+          this.set = this.set.filter((c) => !isNullSet(c[0]));
+          if (this.set.length === 0) {
+            this.set = [first];
+          } else if (this.set.length > 1) {
+            for (const c of this.set) {
+              if (c.length === 1 && isAny(c[0])) {
+                this.set = [c];
+                break;
+              }
+            }
+          }
         }
+        this.format();
       }
-      return self2;
-    }
-    Yallist.prototype.removeNode = function(node) {
-      if (node.list !== this) {
-        throw new Error("removing node which does not belong to this list");
+      format() {
+        this.range = this.set.map((comps) => comps.join(" ").trim()).join("||").trim();
+        return this.range;
       }
-      var next = node.next;
-      var prev = node.prev;
-      if (next) {
-        next.prev = prev;
+      toString() {
+        return this.range;
       }
-      if (prev) {
-        prev.next = next;
+      parseRange(range) {
+        const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
+        const memoKey = memoOpts + ":" + range;
+        const cached = cache.get(memoKey);
+        if (cached) {
+          return cached;
+        }
+        const loose = this.options.loose;
+        const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
+        range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
+        debug2("hyphen replace", range);
+        range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
+        debug2("comparator trim", range);
+        range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
+        debug2("tilde trim", range);
+        range = range.replace(re[t.CARETTRIM], caretTrimReplace);
+        debug2("caret trim", range);
+        let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
+        if (loose) {
+          rangeList = rangeList.filter((comp) => {
+            debug2("loose invalid filter", comp, this.options);
+            return !!comp.match(re[t.COMPARATORLOOSE]);
+          });
+        }
+        debug2("range list", rangeList);
+        const rangeMap = /* @__PURE__ */ new Map();
+        const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
+        for (const comp of comparators) {
+          if (isNullSet(comp)) {
+            return [comp];
+          }
+          rangeMap.set(comp.value, comp);
+        }
+        if (rangeMap.size > 1 && rangeMap.has("")) {
+          rangeMap.delete("");
+        }
+        const result = [...rangeMap.values()];
+        cache.set(memoKey, result);
+        return result;
       }
-      if (node === this.head) {
-        this.head = next;
+      intersects(range, options) {
+        if (!(range instanceof _Range)) {
+          throw new TypeError("a Range is required");
+        }
+        return this.set.some((thisComparators) => {
+          return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {
+            return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
+              return rangeComparators.every((rangeComparator) => {
+                return thisComparator.intersects(rangeComparator, options);
+              });
+            });
+          });
+        });
       }
-      if (node === this.tail) {
-        this.tail = prev;
+      // if ANY of the sets match ALL of its comparators, then pass
+      test(version2) {
+        if (!version2) {
+          return false;
+        }
+        if (typeof version2 === "string") {
+          try {
+            version2 = new SemVer(version2, this.options);
+          } catch (er) {
+            return false;
+          }
+        }
+        for (let i = 0; i < this.set.length; i++) {
+          if (testSet(this.set[i], version2, this.options)) {
+            return true;
+          }
+        }
+        return false;
       }
-      node.list.length--;
-      node.next = null;
-      node.prev = null;
-      node.list = null;
-      return next;
     };
-    Yallist.prototype.unshiftNode = function(node) {
-      if (node === this.head) {
-        return;
-      }
-      if (node.list) {
-        node.list.removeNode(node);
-      }
-      var head = this.head;
-      node.list = this;
-      node.next = head;
-      if (head) {
-        head.prev = node;
-      }
-      this.head = node;
-      if (!this.tail) {
-        this.tail = node;
+    module2.exports = Range;
+    var LRU = require_lrucache();
+    var cache = new LRU();
+    var parseOptions = require_parse_options();
+    var Comparator = require_comparator();
+    var debug2 = require_debug();
+    var SemVer = require_semver();
+    var {
+      safeRe: re,
+      t,
+      comparatorTrimReplace,
+      tildeTrimReplace,
+      caretTrimReplace
+    } = require_re();
+    var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
+    var isNullSet = (c) => c.value === "<0.0.0-0";
+    var isAny = (c) => c.value === "";
+    var isSatisfiable = (comparators, options) => {
+      let result = true;
+      const remainingComparators = comparators.slice();
+      let testComparator = remainingComparators.pop();
+      while (result && remainingComparators.length) {
+        result = remainingComparators.every((otherComparator) => {
+          return testComparator.intersects(otherComparator, options);
+        });
+        testComparator = remainingComparators.pop();
       }
-      this.length++;
+      return result;
     };
-    Yallist.prototype.pushNode = function(node) {
-      if (node === this.tail) {
-        return;
-      }
-      if (node.list) {
-        node.list.removeNode(node);
-      }
-      var tail = this.tail;
-      node.list = this;
-      node.prev = tail;
-      if (tail) {
-        tail.next = node;
-      }
-      this.tail = node;
-      if (!this.head) {
-        this.head = node;
-      }
-      this.length++;
+    var parseComparator = (comp, options) => {
+      debug2("comp", comp, options);
+      comp = replaceCarets(comp, options);
+      debug2("caret", comp);
+      comp = replaceTildes(comp, options);
+      debug2("tildes", comp);
+      comp = replaceXRanges(comp, options);
+      debug2("xrange", comp);
+      comp = replaceStars(comp, options);
+      debug2("stars", comp);
+      return comp;
     };
-    Yallist.prototype.push = function() {
-      for (var i = 0, l = arguments.length; i < l; i++) {
-        push(this, arguments[i]);
-      }
-      return this.length;
+    var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
+    var replaceTildes = (comp, options) => {
+      return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
     };
-    Yallist.prototype.unshift = function() {
-      for (var i = 0, l = arguments.length; i < l; i++) {
-        unshift(this, arguments[i]);
-      }
-      return this.length;
+    var replaceTilde = (comp, options) => {
+      const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
+      return comp.replace(r, (_, M, m, p, pr) => {
+        debug2("tilde", comp, _, M, m, p, pr);
+        let ret;
+        if (isX(M)) {
+          ret = "";
+        } else if (isX(m)) {
+          ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
+        } else if (isX(p)) {
+          ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
+        } else if (pr) {
+          debug2("replaceTilde pr", pr);
+          ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
+        } else {
+          ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
+        }
+        debug2("tilde return", ret);
+        return ret;
+      });
     };
-    Yallist.prototype.pop = function() {
-      if (!this.tail) {
-        return void 0;
-      }
-      var res = this.tail.value;
-      this.tail = this.tail.prev;
-      if (this.tail) {
-        this.tail.next = null;
-      } else {
-        this.head = null;
-      }
-      this.length--;
-      return res;
+    var replaceCarets = (comp, options) => {
+      return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
     };
-    Yallist.prototype.shift = function() {
-      if (!this.head) {
-        return void 0;
-      }
-      var res = this.head.value;
-      this.head = this.head.next;
-      if (this.head) {
-        this.head.prev = null;
-      } else {
-        this.tail = null;
-      }
-      this.length--;
-      return res;
+    var replaceCaret = (comp, options) => {
+      debug2("caret", comp, options);
+      const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
+      const z = options.includePrerelease ? "-0" : "";
+      return comp.replace(r, (_, M, m, p, pr) => {
+        debug2("caret", comp, _, M, m, p, pr);
+        let ret;
+        if (isX(M)) {
+          ret = "";
+        } else if (isX(m)) {
+          ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
+        } else if (isX(p)) {
+          if (M === "0") {
+            ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
+          } else {
+            ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
+          }
+        } else if (pr) {
+          debug2("replaceCaret pr", pr);
+          if (M === "0") {
+            if (m === "0") {
+              ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
+            } else {
+              ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
+            }
+          } else {
+            ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
+          }
+        } else {
+          debug2("no pr");
+          if (M === "0") {
+            if (m === "0") {
+              ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
+            } else {
+              ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
+            }
+          } else {
+            ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
+          }
+        }
+        debug2("caret return", ret);
+        return ret;
+      });
     };
-    Yallist.prototype.forEach = function(fn2, thisp) {
-      thisp = thisp || this;
-      for (var walker = this.head, i = 0; walker !== null; i++) {
-        fn2.call(thisp, walker.value, i, this);
-        walker = walker.next;
-      }
+    var replaceXRanges = (comp, options) => {
+      debug2("replaceXRanges", comp, options);
+      return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
     };
-    Yallist.prototype.forEachReverse = function(fn2, thisp) {
-      thisp = thisp || this;
-      for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
-        fn2.call(thisp, walker.value, i, this);
-        walker = walker.prev;
-      }
+    var replaceXRange = (comp, options) => {
+      comp = comp.trim();
+      const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
+      return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
+        debug2("xRange", comp, ret, gtlt, M, m, p, pr);
+        const xM = isX(M);
+        const xm = xM || isX(m);
+        const xp = xm || isX(p);
+        const anyX = xp;
+        if (gtlt === "=" && anyX) {
+          gtlt = "";
+        }
+        pr = options.includePrerelease ? "-0" : "";
+        if (xM) {
+          if (gtlt === ">" || gtlt === "<") {
+            ret = "<0.0.0-0";
+          } else {
+            ret = "*";
+          }
+        } else if (gtlt && anyX) {
+          if (xm) {
+            m = 0;
+          }
+          p = 0;
+          if (gtlt === ">") {
+            gtlt = ">=";
+            if (xm) {
+              M = +M + 1;
+              m = 0;
+              p = 0;
+            } else {
+              m = +m + 1;
+              p = 0;
+            }
+          } else if (gtlt === "<=") {
+            gtlt = "<";
+            if (xm) {
+              M = +M + 1;
+            } else {
+              m = +m + 1;
+            }
+          }
+          if (gtlt === "<") {
+            pr = "-0";
+          }
+          ret = `${gtlt + M}.${m}.${p}${pr}`;
+        } else if (xm) {
+          ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
+        } else if (xp) {
+          ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
+        }
+        debug2("xRange return", ret);
+        return ret;
+      });
     };
-    Yallist.prototype.get = function(n) {
-      for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
-        walker = walker.next;
-      }
-      if (i === n && walker !== null) {
-        return walker.value;
-      }
+    var replaceStars = (comp, options) => {
+      debug2("replaceStars", comp, options);
+      return comp.trim().replace(re[t.STAR], "");
     };
-    Yallist.prototype.getReverse = function(n) {
-      for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
-        walker = walker.prev;
+    var replaceGTE0 = (comp, options) => {
+      debug2("replaceGTE0", comp, options);
+      return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
+    };
+    var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
+      if (isX(fM)) {
+        from = "";
+      } else if (isX(fm)) {
+        from = `>=${fM}.0.0${incPr ? "-0" : ""}`;
+      } else if (isX(fp)) {
+        from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`;
+      } else if (fpr) {
+        from = `>=${from}`;
+      } else {
+        from = `>=${from}${incPr ? "-0" : ""}`;
       }
-      if (i === n && walker !== null) {
-        return walker.value;
+      if (isX(tM)) {
+        to = "";
+      } else if (isX(tm)) {
+        to = `<${+tM + 1}.0.0-0`;
+      } else if (isX(tp)) {
+        to = `<${tM}.${+tm + 1}.0-0`;
+      } else if (tpr) {
+        to = `<=${tM}.${tm}.${tp}-${tpr}`;
+      } else if (incPr) {
+        to = `<${tM}.${tm}.${+tp + 1}-0`;
+      } else {
+        to = `<=${to}`;
       }
+      return `${from} ${to}`.trim();
     };
-    Yallist.prototype.map = function(fn2, thisp) {
-      thisp = thisp || this;
-      var res = new Yallist();
-      for (var walker = this.head; walker !== null; ) {
-        res.push(fn2.call(thisp, walker.value, this));
-        walker = walker.next;
+    var testSet = (set, version2, options) => {
+      for (let i = 0; i < set.length; i++) {
+        if (!set[i].test(version2)) {
+          return false;
+        }
       }
-      return res;
-    };
-    Yallist.prototype.mapReverse = function(fn2, thisp) {
-      thisp = thisp || this;
-      var res = new Yallist();
-      for (var walker = this.tail; walker !== null; ) {
-        res.push(fn2.call(thisp, walker.value, this));
-        walker = walker.prev;
+      if (version2.prerelease.length && !options.includePrerelease) {
+        for (let i = 0; i < set.length; i++) {
+          debug2(set[i].semver);
+          if (set[i].semver === Comparator.ANY) {
+            continue;
+          }
+          if (set[i].semver.prerelease.length > 0) {
+            const allowed = set[i].semver;
+            if (allowed.major === version2.major && allowed.minor === version2.minor && allowed.patch === version2.patch) {
+              return true;
+            }
+          }
+        }
+        return false;
       }
-      return res;
+      return true;
     };
-    Yallist.prototype.reduce = function(fn2, initial) {
-      var acc;
-      var walker = this.head;
-      if (arguments.length > 1) {
-        acc = initial;
-      } else if (this.head) {
-        walker = this.head.next;
-        acc = this.head.value;
-      } else {
-        throw new TypeError("Reduce of empty list with no initial value");
-      }
-      for (var i = 0; walker !== null; i++) {
-        acc = fn2(acc, walker.value, i);
-        walker = walker.next;
-      }
-      return acc;
-    };
-    Yallist.prototype.reduceReverse = function(fn2, initial) {
-      var acc;
-      var walker = this.tail;
-      if (arguments.length > 1) {
-        acc = initial;
-      } else if (this.tail) {
-        walker = this.tail.prev;
-        acc = this.tail.value;
-      } else {
-        throw new TypeError("Reduce of empty list with no initial value");
-      }
-      for (var i = this.length - 1; walker !== null; i--) {
-        acc = fn2(acc, walker.value, i);
-        walker = walker.prev;
-      }
-      return acc;
-    };
-    Yallist.prototype.toArray = function() {
-      var arr = new Array(this.length);
-      for (var i = 0, walker = this.head; walker !== null; i++) {
-        arr[i] = walker.value;
-        walker = walker.next;
-      }
-      return arr;
-    };
-    Yallist.prototype.toArrayReverse = function() {
-      var arr = new Array(this.length);
-      for (var i = 0, walker = this.tail; walker !== null; i++) {
-        arr[i] = walker.value;
-        walker = walker.prev;
-      }
-      return arr;
-    };
-    Yallist.prototype.slice = function(from, to) {
-      to = to || this.length;
-      if (to < 0) {
-        to += this.length;
-      }
-      from = from || 0;
-      if (from < 0) {
-        from += this.length;
-      }
-      var ret = new Yallist();
-      if (to < from || to < 0) {
-        return ret;
-      }
-      if (from < 0) {
-        from = 0;
-      }
-      if (to > this.length) {
-        to = this.length;
-      }
-      for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
-        walker = walker.next;
-      }
-      for (; walker !== null && i < to; i++, walker = walker.next) {
-        ret.push(walker.value);
-      }
-      return ret;
-    };
-    Yallist.prototype.sliceReverse = function(from, to) {
-      to = to || this.length;
-      if (to < 0) {
-        to += this.length;
-      }
-      from = from || 0;
-      if (from < 0) {
-        from += this.length;
-      }
-      var ret = new Yallist();
-      if (to < from || to < 0) {
-        return ret;
-      }
-      if (from < 0) {
-        from = 0;
-      }
-      if (to > this.length) {
-        to = this.length;
-      }
-      for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
-        walker = walker.prev;
-      }
-      for (; walker !== null && i > from; i--, walker = walker.prev) {
-        ret.push(walker.value);
-      }
-      return ret;
-    };
-    Yallist.prototype.splice = function(start, deleteCount, ...nodes) {
-      if (start > this.length) {
-        start = this.length - 1;
-      }
-      if (start < 0) {
-        start = this.length + start;
-      }
-      for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
-        walker = walker.next;
-      }
-      var ret = [];
-      for (var i = 0; walker && i < deleteCount; i++) {
-        ret.push(walker.value);
-        walker = this.removeNode(walker);
-      }
-      if (walker === null) {
-        walker = this.tail;
-      }
-      if (walker !== this.head && walker !== this.tail) {
-        walker = walker.prev;
-      }
-      for (var i = 0; i < nodes.length; i++) {
-        walker = insert(this, walker, nodes[i]);
-      }
-      return ret;
-    };
-    Yallist.prototype.reverse = function() {
-      var head = this.head;
-      var tail = this.tail;
-      for (var walker = head; walker !== null; walker = walker.prev) {
-        var p = walker.prev;
-        walker.prev = walker.next;
-        walker.next = p;
-      }
-      this.head = tail;
-      this.tail = head;
-      return this;
-    };
-    function insert(self2, node, value) {
-      var inserted = node === self2.head ? new Node(value, null, node, self2) : new Node(value, node, node.next, self2);
-      if (inserted.next === null) {
-        self2.tail = inserted;
-      }
-      if (inserted.prev === null) {
-        self2.head = inserted;
-      }
-      self2.length++;
-      return inserted;
-    }
-    function push(self2, item) {
-      self2.tail = new Node(item, self2.tail, null, self2);
-      if (!self2.head) {
-        self2.head = self2.tail;
-      }
-      self2.length++;
-    }
-    function unshift(self2, item) {
-      self2.head = new Node(item, null, self2.head, self2);
-      if (!self2.tail) {
-        self2.tail = self2.head;
-      }
-      self2.length++;
-    }
-    function Node(value, prev, next, list) {
-      if (!(this instanceof Node)) {
-        return new Node(value, prev, next, list);
-      }
-      this.list = list;
-      this.value = value;
-      if (prev) {
-        prev.next = this;
-        this.prev = prev;
-      } else {
-        this.prev = null;
-      }
-      if (next) {
-        next.prev = this;
-        this.next = next;
-      } else {
-        this.next = null;
-      }
-    }
-    try {
-      require_iterator()(Yallist);
-    } catch (er) {
-    }
   }
 });
 
-// .yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-cb53e58278.zip/node_modules/lru-cache/index.js
-var require_lru_cache = __commonJS({
-  ".yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-cb53e58278.zip/node_modules/lru-cache/index.js"(exports, module2) {
-    "use strict";
-    var Yallist = require_yallist();
-    var MAX = Symbol("max");
-    var LENGTH = Symbol("length");
-    var LENGTH_CALCULATOR = Symbol("lengthCalculator");
-    var ALLOW_STALE = Symbol("allowStale");
-    var MAX_AGE = Symbol("maxAge");
-    var DISPOSE = Symbol("dispose");
-    var NO_DISPOSE_ON_SET = Symbol("noDisposeOnSet");
-    var LRU_LIST = Symbol("lruList");
-    var CACHE = Symbol("cache");
-    var UPDATE_AGE_ON_GET = Symbol("updateAgeOnGet");
-    var naiveLength = () => 1;
-    var LRUCache = class {
-      constructor(options) {
-        if (typeof options === "number")
-          options = { max: options };
-        if (!options)
-          options = {};
-        if (options.max && (typeof options.max !== "number" || options.max < 0))
-          throw new TypeError("max must be a non-negative number");
-        const max = this[MAX] = options.max || Infinity;
-        const lc = options.length || naiveLength;
-        this[LENGTH_CALCULATOR] = typeof lc !== "function" ? naiveLength : lc;
-        this[ALLOW_STALE] = options.stale || false;
-        if (options.maxAge && typeof options.maxAge !== "number")
-          throw new TypeError("maxAge must be a number");
-        this[MAX_AGE] = options.maxAge || 0;
-        this[DISPOSE] = options.dispose;
-        this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
-        this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
-        this.reset();
-      }
-      // resize the cache when the max changes.
-      set max(mL) {
-        if (typeof mL !== "number" || mL < 0)
-          throw new TypeError("max must be a non-negative number");
-        this[MAX] = mL || Infinity;
-        trim(this);
-      }
-      get max() {
-        return this[MAX];
-      }
-      set allowStale(allowStale) {
-        this[ALLOW_STALE] = !!allowStale;
-      }
-      get allowStale() {
-        return this[ALLOW_STALE];
-      }
-      set maxAge(mA) {
-        if (typeof mA !== "number")
-          throw new TypeError("maxAge must be a non-negative number");
-        this[MAX_AGE] = mA;
-        trim(this);
-      }
-      get maxAge() {
-        return this[MAX_AGE];
-      }
-      // resize the cache when the lengthCalculator changes.
-      set lengthCalculator(lC) {
-        if (typeof lC !== "function")
-          lC = naiveLength;
-        if (lC !== this[LENGTH_CALCULATOR]) {
-          this[LENGTH_CALCULATOR] = lC;
-          this[LENGTH] = 0;
-          this[LRU_LIST].forEach((hit) => {
-            hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
-            this[LENGTH] += hit.length;
-          });
-        }
-        trim(this);
-      }
-      get lengthCalculator() {
-        return this[LENGTH_CALCULATOR];
-      }
-      get length() {
-        return this[LENGTH];
-      }
-      get itemCount() {
-        return this[LRU_LIST].length;
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/comparator.js
+var require_comparator = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/comparator.js"(exports, module2) {
+    var ANY = Symbol("SemVer ANY");
+    var Comparator = class _Comparator {
+      static get ANY() {
+        return ANY;
       }
-      rforEach(fn2, thisp) {
-        thisp = thisp || this;
-        for (let walker = this[LRU_LIST].tail; walker !== null; ) {
-          const prev = walker.prev;
-          forEachStep(this, fn2, walker, thisp);
-          walker = prev;
+      constructor(comp, options) {
+        options = parseOptions(options);
+        if (comp instanceof _Comparator) {
+          if (comp.loose === !!options.loose) {
+            return comp;
+          } else {
+            comp = comp.value;
+          }
         }
-      }
-      forEach(fn2, thisp) {
-        thisp = thisp || this;
-        for (let walker = this[LRU_LIST].head; walker !== null; ) {
-          const next = walker.next;
-          forEachStep(this, fn2, walker, thisp);
-          walker = next;
+        comp = comp.trim().split(/\s+/).join(" ");
+        debug2("comparator", comp, options);
+        this.options = options;
+        this.loose = !!options.loose;
+        this.parse(comp);
+        if (this.semver === ANY) {
+          this.value = "";
+        } else {
+          this.value = this.operator + this.semver.version;
         }
+        debug2("comp", this);
       }
-      keys() {
-        return this[LRU_LIST].toArray().map((k) => k.key);
-      }
-      values() {
-        return this[LRU_LIST].toArray().map((k) => k.value);
-      }
-      reset() {
-        if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
-          this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value));
-        }
-        this[CACHE] = /* @__PURE__ */ new Map();
-        this[LRU_LIST] = new Yallist();
-        this[LENGTH] = 0;
-      }
-      dump() {
-        return this[LRU_LIST].map((hit) => isStale(this, hit) ? false : {
-          k: hit.key,
-          v: hit.value,
-          e: hit.now + (hit.maxAge || 0)
-        }).toArray().filter((h) => h);
-      }
-      dumpLru() {
-        return this[LRU_LIST];
-      }
-      set(key, value, maxAge) {
-        maxAge = maxAge || this[MAX_AGE];
-        if (maxAge && typeof maxAge !== "number")
-          throw new TypeError("maxAge must be a number");
-        const now = maxAge ? Date.now() : 0;
-        const len = this[LENGTH_CALCULATOR](value, key);
-        if (this[CACHE].has(key)) {
-          if (len > this[MAX]) {
-            del(this, this[CACHE].get(key));
-            return false;
-          }
-          const node = this[CACHE].get(key);
-          const item = node.value;
-          if (this[DISPOSE]) {
-            if (!this[NO_DISPOSE_ON_SET])
-              this[DISPOSE](key, item.value);
-          }
-          item.now = now;
-          item.maxAge = maxAge;
-          item.value = value;
-          this[LENGTH] += len - item.length;
-          item.length = len;
-          this.get(key);
-          trim(this);
-          return true;
+      parse(comp) {
+        const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+        const m = comp.match(r);
+        if (!m) {
+          throw new TypeError(`Invalid comparator: ${comp}`);
         }
-        const hit = new Entry(key, value, len, now, maxAge);
-        if (hit.length > this[MAX]) {
-          if (this[DISPOSE])
-            this[DISPOSE](key, value);
-          return false;
+        this.operator = m[1] !== void 0 ? m[1] : "";
+        if (this.operator === "=") {
+          this.operator = "";
+        }
+        if (!m[2]) {
+          this.semver = ANY;
+        } else {
+          this.semver = new SemVer(m[2], this.options.loose);
         }
-        this[LENGTH] += hit.length;
-        this[LRU_LIST].unshift(hit);
-        this[CACHE].set(key, this[LRU_LIST].head);
-        trim(this);
-        return true;
-      }
-      has(key) {
-        if (!this[CACHE].has(key))
-          return false;
-        const hit = this[CACHE].get(key).value;
-        return !isStale(this, hit);
-      }
-      get(key) {
-        return get(this, key, true);
       }
-      peek(key) {
-        return get(this, key, false);
+      toString() {
+        return this.value;
       }
-      pop() {
-        const node = this[LRU_LIST].tail;
-        if (!node)
-          return null;
-        del(this, node);
-        return node.value;
-      }
-      del(key) {
-        del(this, this[CACHE].get(key));
-      }
-      load(arr) {
-        this.reset();
-        const now = Date.now();
-        for (let l = arr.length - 1; l >= 0; l--) {
-          const hit = arr[l];
-          const expiresAt = hit.e || 0;
-          if (expiresAt === 0)
-            this.set(hit.k, hit.v);
-          else {
-            const maxAge = expiresAt - now;
-            if (maxAge > 0) {
-              this.set(hit.k, hit.v, maxAge);
-            }
+      test(version2) {
+        debug2("Comparator.test", version2, this.options.loose);
+        if (this.semver === ANY || version2 === ANY) {
+          return true;
+        }
+        if (typeof version2 === "string") {
+          try {
+            version2 = new SemVer(version2, this.options);
+          } catch (er) {
+            return false;
           }
         }
+        return cmp(version2, this.operator, this.semver, this.options);
       }
-      prune() {
-        this[CACHE].forEach((value, key) => get(this, key, false));
-      }
-    };
-    var get = (self2, key, doUse) => {
-      const node = self2[CACHE].get(key);
-      if (node) {
-        const hit = node.value;
-        if (isStale(self2, hit)) {
-          del(self2, node);
-          if (!self2[ALLOW_STALE])
-            return void 0;
-        } else {
-          if (doUse) {
-            if (self2[UPDATE_AGE_ON_GET])
-              node.value.now = Date.now();
-            self2[LRU_LIST].unshiftNode(node);
-          }
-        }
-        return hit.value;
-      }
-    };
-    var isStale = (self2, hit) => {
-      if (!hit || !hit.maxAge && !self2[MAX_AGE])
-        return false;
-      const diff = Date.now() - hit.now;
-      return hit.maxAge ? diff > hit.maxAge : self2[MAX_AGE] && diff > self2[MAX_AGE];
-    };
-    var trim = (self2) => {
-      if (self2[LENGTH] > self2[MAX]) {
-        for (let walker = self2[LRU_LIST].tail; self2[LENGTH] > self2[MAX] && walker !== null; ) {
-          const prev = walker.prev;
-          del(self2, walker);
-          walker = prev;
+      intersects(comp, options) {
+        if (!(comp instanceof _Comparator)) {
+          throw new TypeError("a Comparator is required");
         }
-      }
-    };
-    var del = (self2, node) => {
-      if (node) {
-        const hit = node.value;
-        if (self2[DISPOSE])
-          self2[DISPOSE](hit.key, hit.value);
-        self2[LENGTH] -= hit.length;
-        self2[CACHE].delete(hit.key);
-        self2[LRU_LIST].removeNode(node);
-      }
-    };
-    var Entry = class {
-      constructor(key, value, length, now, maxAge) {
-        this.key = key;
-        this.value = value;
-        this.length = length;
-        this.now = now;
-        this.maxAge = maxAge || 0;
-      }
-    };
-    var forEachStep = (self2, fn2, node, thisp) => {
-      let hit = node.value;
-      if (isStale(self2, hit)) {
-        del(self2, node);
-        if (!self2[ALLOW_STALE])
-          hit = void 0;
-      }
-      if (hit)
-        fn2.call(thisp, hit.value, hit.key, self2);
-    };
-    module2.exports = LRUCache;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/classes/range.js
-var require_range = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/classes/range.js"(exports, module2) {
-    var Range = class _Range {
-      constructor(range, options) {
-        options = parseOptions(options);
-        if (range instanceof _Range) {
-          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
-            return range;
-          } else {
-            return new _Range(range.raw, options);
+        if (this.operator === "") {
+          if (this.value === "") {
+            return true;
           }
-        }
-        if (range instanceof Comparator) {
-          this.raw = range.value;
-          this.set = [[range]];
-          this.format();
-          return this;
-        }
-        this.options = options;
-        this.loose = !!options.loose;
-        this.includePrerelease = !!options.includePrerelease;
-        this.raw = range.trim().split(/\s+/).join(" ");
-        this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length);
-        if (!this.set.length) {
-          throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
-        }
-        if (this.set.length > 1) {
-          const first = this.set[0];
-          this.set = this.set.filter((c) => !isNullSet(c[0]));
-          if (this.set.length === 0) {
-            this.set = [first];
-          } else if (this.set.length > 1) {
-            for (const c of this.set) {
-              if (c.length === 1 && isAny(c[0])) {
-                this.set = [c];
-                break;
-              }
-            }
+          return new Range(comp.value, options).test(this.value);
+        } else if (comp.operator === "") {
+          if (comp.value === "") {
+            return true;
           }
+          return new Range(this.value, options).test(comp.semver);
         }
-        this.format();
-      }
-      format() {
-        this.range = this.set.map((comps) => comps.join(" ").trim()).join("||").trim();
-        return this.range;
-      }
-      toString() {
-        return this.range;
-      }
-      parseRange(range) {
-        const memoOpts = (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE);
-        const memoKey = memoOpts + ":" + range;
-        const cached = cache.get(memoKey);
-        if (cached) {
-          return cached;
-        }
-        const loose = this.options.loose;
-        const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
-        range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
-        debug2("hyphen replace", range);
-        range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
-        debug2("comparator trim", range);
-        range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
-        debug2("tilde trim", range);
-        range = range.replace(re[t.CARETTRIM], caretTrimReplace);
-        debug2("caret trim", range);
-        let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
-        if (loose) {
-          rangeList = rangeList.filter((comp) => {
-            debug2("loose invalid filter", comp, this.options);
-            return !!comp.match(re[t.COMPARATORLOOSE]);
-          });
+        options = parseOptions(options);
+        if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
+          return false;
         }
-        debug2("range list", rangeList);
-        const rangeMap = /* @__PURE__ */ new Map();
-        const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
-        for (const comp of comparators) {
-          if (isNullSet(comp)) {
-            return [comp];
-          }
-          rangeMap.set(comp.value, comp);
+        if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
+          return false;
         }
-        if (rangeMap.size > 1 && rangeMap.has("")) {
-          rangeMap.delete("");
+        if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
+          return true;
         }
-        const result = [...rangeMap.values()];
-        cache.set(memoKey, result);
-        return result;
-      }
-      intersects(range, options) {
-        if (!(range instanceof _Range)) {
-          throw new TypeError("a Range is required");
+        if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
+          return true;
         }
-        return this.set.some((thisComparators) => {
-          return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {
-            return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
-              return rangeComparators.every((rangeComparator) => {
-                return thisComparator.intersects(rangeComparator, options);
-              });
-            });
-          });
-        });
-      }
-      // if ANY of the sets match ALL of its comparators, then pass
-      test(version2) {
-        if (!version2) {
-          return false;
+        if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
+          return true;
         }
-        if (typeof version2 === "string") {
-          try {
-            version2 = new SemVer(version2, this.options);
-          } catch (er) {
-            return false;
-          }
+        if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
+          return true;
         }
-        for (let i = 0; i < this.set.length; i++) {
-          if (testSet(this.set[i], version2, this.options)) {
-            return true;
-          }
+        if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
+          return true;
         }
         return false;
       }
     };
-    module2.exports = Range;
-    var LRU = require_lru_cache();
-    var cache = new LRU({ max: 1e3 });
+    module2.exports = Comparator;
     var parseOptions = require_parse_options();
-    var Comparator = require_comparator();
+    var { safeRe: re, t } = require_re();
+    var cmp = require_cmp();
     var debug2 = require_debug();
     var SemVer = require_semver();
-    var {
-      safeRe: re,
-      t,
-      comparatorTrimReplace,
-      tildeTrimReplace,
-      caretTrimReplace
-    } = require_re();
-    var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants();
-    var isNullSet = (c) => c.value === "<0.0.0-0";
-    var isAny = (c) => c.value === "";
-    var isSatisfiable = (comparators, options) => {
-      let result = true;
-      const remainingComparators = comparators.slice();
-      let testComparator = remainingComparators.pop();
-      while (result && remainingComparators.length) {
-        result = remainingComparators.every((otherComparator) => {
-          return testComparator.intersects(otherComparator, options);
-        });
-        testComparator = remainingComparators.pop();
+    var Range = require_range();
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/satisfies.js
+var require_satisfies = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/satisfies.js"(exports, module2) {
+    var Range = require_range();
+    var satisfies = (version2, range, options) => {
+      try {
+        range = new Range(range, options);
+      } catch (er) {
+        return false;
       }
-      return result;
-    };
-    var parseComparator = (comp, options) => {
-      debug2("comp", comp, options);
-      comp = replaceCarets(comp, options);
-      debug2("caret", comp);
-      comp = replaceTildes(comp, options);
-      debug2("tildes", comp);
-      comp = replaceXRanges(comp, options);
-      debug2("xrange", comp);
-      comp = replaceStars(comp, options);
-      debug2("stars", comp);
-      return comp;
-    };
-    var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
-    var replaceTildes = (comp, options) => {
-      return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" ");
+      return range.test(version2);
     };
-    var replaceTilde = (comp, options) => {
-      const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
-      return comp.replace(r, (_, M, m, p, pr) => {
-        debug2("tilde", comp, _, M, m, p, pr);
-        let ret;
-        if (isX(M)) {
-          ret = "";
-        } else if (isX(m)) {
-          ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
-        } else if (isX(p)) {
-          ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
-        } else if (pr) {
-          debug2("replaceTilde pr", pr);
-          ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
-        } else {
-          ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
+    module2.exports = satisfies;
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/to-comparators.js
+var require_to_comparators = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/to-comparators.js"(exports, module2) {
+    var Range = require_range();
+    var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
+    module2.exports = toComparators;
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/max-satisfying.js
+var require_max_satisfying = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/max-satisfying.js"(exports, module2) {
+    var SemVer = require_semver();
+    var Range = require_range();
+    var maxSatisfying = (versions, range, options) => {
+      let max = null;
+      let maxSV = null;
+      let rangeObj = null;
+      try {
+        rangeObj = new Range(range, options);
+      } catch (er) {
+        return null;
+      }
+      versions.forEach((v) => {
+        if (rangeObj.test(v)) {
+          if (!max || maxSV.compare(v) === -1) {
+            max = v;
+            maxSV = new SemVer(max, options);
+          }
         }
-        debug2("tilde return", ret);
-        return ret;
       });
+      return max;
     };
-    var replaceCarets = (comp, options) => {
-      return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
-    };
-    var replaceCaret = (comp, options) => {
-      debug2("caret", comp, options);
-      const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
-      const z = options.includePrerelease ? "-0" : "";
-      return comp.replace(r, (_, M, m, p, pr) => {
-        debug2("caret", comp, _, M, m, p, pr);
-        let ret;
-        if (isX(M)) {
-          ret = "";
-        } else if (isX(m)) {
-          ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
-        } else if (isX(p)) {
-          if (M === "0") {
-            ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
-          } else {
-            ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
-          }
-        } else if (pr) {
-          debug2("replaceCaret pr", pr);
-          if (M === "0") {
-            if (m === "0") {
-              ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
-            } else {
-              ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
-            }
-          } else {
-            ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
-          }
-        } else {
-          debug2("no pr");
-          if (M === "0") {
-            if (m === "0") {
-              ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
-            } else {
-              ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
-            }
-          } else {
-            ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
-          }
-        }
-        debug2("caret return", ret);
-        return ret;
-      });
-    };
-    var replaceXRanges = (comp, options) => {
-      debug2("replaceXRanges", comp, options);
-      return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
-    };
-    var replaceXRange = (comp, options) => {
-      comp = comp.trim();
-      const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
-      return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
-        debug2("xRange", comp, ret, gtlt, M, m, p, pr);
-        const xM = isX(M);
-        const xm = xM || isX(m);
-        const xp = xm || isX(p);
-        const anyX = xp;
-        if (gtlt === "=" && anyX) {
-          gtlt = "";
-        }
-        pr = options.includePrerelease ? "-0" : "";
-        if (xM) {
-          if (gtlt === ">" || gtlt === "<") {
-            ret = "<0.0.0-0";
-          } else {
-            ret = "*";
-          }
-        } else if (gtlt && anyX) {
-          if (xm) {
-            m = 0;
-          }
-          p = 0;
-          if (gtlt === ">") {
-            gtlt = ">=";
-            if (xm) {
-              M = +M + 1;
-              m = 0;
-              p = 0;
-            } else {
-              m = +m + 1;
-              p = 0;
-            }
-          } else if (gtlt === "<=") {
-            gtlt = "<";
-            if (xm) {
-              M = +M + 1;
-            } else {
-              m = +m + 1;
-            }
-          }
-          if (gtlt === "<") {
-            pr = "-0";
+    module2.exports = maxSatisfying;
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/min-satisfying.js
+var require_min_satisfying = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/min-satisfying.js"(exports, module2) {
+    var SemVer = require_semver();
+    var Range = require_range();
+    var minSatisfying = (versions, range, options) => {
+      let min = null;
+      let minSV = null;
+      let rangeObj = null;
+      try {
+        rangeObj = new Range(range, options);
+      } catch (er) {
+        return null;
+      }
+      versions.forEach((v) => {
+        if (rangeObj.test(v)) {
+          if (!min || minSV.compare(v) === 1) {
+            min = v;
+            minSV = new SemVer(min, options);
           }
-          ret = `${gtlt + M}.${m}.${p}${pr}`;
-        } else if (xm) {
-          ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
-        } else if (xp) {
-          ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
         }
-        debug2("xRange return", ret);
-        return ret;
       });
+      return min;
     };
-    var replaceStars = (comp, options) => {
-      debug2("replaceStars", comp, options);
-      return comp.trim().replace(re[t.STAR], "");
-    };
-    var replaceGTE0 = (comp, options) => {
-      debug2("replaceGTE0", comp, options);
-      return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
-    };
-    var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => {
-      if (isX(fM)) {
-        from = "";
-      } else if (isX(fm)) {
-        from = `>=${fM}.0.0${incPr ? "-0" : ""}`;
-      } else if (isX(fp)) {
-        from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`;
-      } else if (fpr) {
-        from = `>=${from}`;
-      } else {
-        from = `>=${from}${incPr ? "-0" : ""}`;
-      }
-      if (isX(tM)) {
-        to = "";
-      } else if (isX(tm)) {
-        to = `<${+tM + 1}.0.0-0`;
-      } else if (isX(tp)) {
-        to = `<${tM}.${+tm + 1}.0-0`;
-      } else if (tpr) {
-        to = `<=${tM}.${tm}.${tp}-${tpr}`;
-      } else if (incPr) {
-        to = `<${tM}.${tm}.${+tp + 1}-0`;
-      } else {
-        to = `<=${to}`;
+    module2.exports = minSatisfying;
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/min-version.js
+var require_min_version = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/min-version.js"(exports, module2) {
+    var SemVer = require_semver();
+    var Range = require_range();
+    var gt = require_gt();
+    var minVersion = (range, loose) => {
+      range = new Range(range, loose);
+      let minver = new SemVer("0.0.0");
+      if (range.test(minver)) {
+        return minver;
       }
-      return `${from} ${to}`.trim();
-    };
-    var testSet = (set, version2, options) => {
-      for (let i = 0; i < set.length; i++) {
-        if (!set[i].test(version2)) {
-          return false;
-        }
+      minver = new SemVer("0.0.0-0");
+      if (range.test(minver)) {
+        return minver;
       }
-      if (version2.prerelease.length && !options.includePrerelease) {
-        for (let i = 0; i < set.length; i++) {
-          debug2(set[i].semver);
-          if (set[i].semver === Comparator.ANY) {
-            continue;
-          }
-          if (set[i].semver.prerelease.length > 0) {
-            const allowed = set[i].semver;
-            if (allowed.major === version2.major && allowed.minor === version2.minor && allowed.patch === version2.patch) {
-              return true;
-            }
+      minver = null;
+      for (let i = 0; i < range.set.length; ++i) {
+        const comparators = range.set[i];
+        let setMin = null;
+        comparators.forEach((comparator) => {
+          const compver = new SemVer(comparator.semver.version);
+          switch (comparator.operator) {
+            case ">":
+              if (compver.prerelease.length === 0) {
+                compver.patch++;
+              } else {
+                compver.prerelease.push(0);
+              }
+              compver.raw = compver.format();
+            case "":
+            case ">=":
+              if (!setMin || gt(compver, setMin)) {
+                setMin = compver;
+              }
+              break;
+            case "<":
+            case "<=":
+              break;
+            default:
+              throw new Error(`Unexpected operation: ${comparator.operator}`);
           }
+        });
+        if (setMin && (!minver || gt(minver, setMin))) {
+          minver = setMin;
         }
-        return false;
       }
-      return true;
+      if (minver && range.test(minver)) {
+        return minver;
+      }
+      return null;
     };
+    module2.exports = minVersion;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/classes/comparator.js
-var require_comparator = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/classes/comparator.js"(exports, module2) {
-    var ANY = Symbol("SemVer ANY");
-    var Comparator = class _Comparator {
-      static get ANY() {
-        return ANY;
-      }
-      constructor(comp, options) {
-        options = parseOptions(options);
-        if (comp instanceof _Comparator) {
-          if (comp.loose === !!options.loose) {
-            return comp;
-          } else {
-            comp = comp.value;
-          }
-        }
-        comp = comp.trim().split(/\s+/).join(" ");
-        debug2("comparator", comp, options);
-        this.options = options;
-        this.loose = !!options.loose;
-        this.parse(comp);
-        if (this.semver === ANY) {
-          this.value = "";
-        } else {
-          this.value = this.operator + this.semver.version;
-        }
-        debug2("comp", this);
-      }
-      parse(comp) {
-        const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
-        const m = comp.match(r);
-        if (!m) {
-          throw new TypeError(`Invalid comparator: ${comp}`);
-        }
-        this.operator = m[1] !== void 0 ? m[1] : "";
-        if (this.operator === "=") {
-          this.operator = "";
-        }
-        if (!m[2]) {
-          this.semver = ANY;
-        } else {
-          this.semver = new SemVer(m[2], this.options.loose);
-        }
-      }
-      toString() {
-        return this.value;
-      }
-      test(version2) {
-        debug2("Comparator.test", version2, this.options.loose);
-        if (this.semver === ANY || version2 === ANY) {
-          return true;
-        }
-        if (typeof version2 === "string") {
-          try {
-            version2 = new SemVer(version2, this.options);
-          } catch (er) {
-            return false;
-          }
-        }
-        return cmp(version2, this.operator, this.semver, this.options);
-      }
-      intersects(comp, options) {
-        if (!(comp instanceof _Comparator)) {
-          throw new TypeError("a Comparator is required");
-        }
-        if (this.operator === "") {
-          if (this.value === "") {
-            return true;
-          }
-          return new Range(comp.value, options).test(this.value);
-        } else if (comp.operator === "") {
-          if (comp.value === "") {
-            return true;
-          }
-          return new Range(this.value, options).test(comp.semver);
-        }
-        options = parseOptions(options);
-        if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
-          return false;
-        }
-        if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
-          return false;
-        }
-        if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
-          return true;
-        }
-        if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
-          return true;
-        }
-        if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
-          return true;
-        }
-        if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
-          return true;
-        }
-        if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
-          return true;
-        }
-        return false;
-      }
-    };
-    module2.exports = Comparator;
-    var parseOptions = require_parse_options();
-    var { safeRe: re, t } = require_re();
-    var cmp = require_cmp();
-    var debug2 = require_debug();
-    var SemVer = require_semver();
-    var Range = require_range();
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/satisfies.js
-var require_satisfies = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/functions/satisfies.js"(exports, module2) {
-    var Range = require_range();
-    var satisfies = (version2, range, options) => {
-      try {
-        range = new Range(range, options);
-      } catch (er) {
-        return false;
-      }
-      return range.test(version2);
-    };
-    module2.exports = satisfies;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/to-comparators.js
-var require_to_comparators = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/to-comparators.js"(exports, module2) {
-    var Range = require_range();
-    var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
-    module2.exports = toComparators;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/max-satisfying.js
-var require_max_satisfying = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/max-satisfying.js"(exports, module2) {
-    var SemVer = require_semver();
-    var Range = require_range();
-    var maxSatisfying = (versions, range, options) => {
-      let max = null;
-      let maxSV = null;
-      let rangeObj = null;
-      try {
-        rangeObj = new Range(range, options);
-      } catch (er) {
-        return null;
-      }
-      versions.forEach((v) => {
-        if (rangeObj.test(v)) {
-          if (!max || maxSV.compare(v) === -1) {
-            max = v;
-            maxSV = new SemVer(max, options);
-          }
-        }
-      });
-      return max;
-    };
-    module2.exports = maxSatisfying;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/min-satisfying.js
-var require_min_satisfying = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/min-satisfying.js"(exports, module2) {
-    var SemVer = require_semver();
-    var Range = require_range();
-    var minSatisfying = (versions, range, options) => {
-      let min = null;
-      let minSV = null;
-      let rangeObj = null;
-      try {
-        rangeObj = new Range(range, options);
-      } catch (er) {
-        return null;
-      }
-      versions.forEach((v) => {
-        if (rangeObj.test(v)) {
-          if (!min || minSV.compare(v) === 1) {
-            min = v;
-            minSV = new SemVer(min, options);
-          }
-        }
-      });
-      return min;
-    };
-    module2.exports = minSatisfying;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/min-version.js
-var require_min_version = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/min-version.js"(exports, module2) {
-    var SemVer = require_semver();
-    var Range = require_range();
-    var gt = require_gt();
-    var minVersion = (range, loose) => {
-      range = new Range(range, loose);
-      let minver = new SemVer("0.0.0");
-      if (range.test(minver)) {
-        return minver;
-      }
-      minver = new SemVer("0.0.0-0");
-      if (range.test(minver)) {
-        return minver;
-      }
-      minver = null;
-      for (let i = 0; i < range.set.length; ++i) {
-        const comparators = range.set[i];
-        let setMin = null;
-        comparators.forEach((comparator) => {
-          const compver = new SemVer(comparator.semver.version);
-          switch (comparator.operator) {
-            case ">":
-              if (compver.prerelease.length === 0) {
-                compver.patch++;
-              } else {
-                compver.prerelease.push(0);
-              }
-              compver.raw = compver.format();
-            case "":
-            case ">=":
-              if (!setMin || gt(compver, setMin)) {
-                setMin = compver;
-              }
-              break;
-            case "<":
-            case "<=":
-              break;
-            default:
-              throw new Error(`Unexpected operation: ${comparator.operator}`);
-          }
-        });
-        if (setMin && (!minver || gt(minver, setMin))) {
-          minver = setMin;
-        }
-      }
-      if (minver && range.test(minver)) {
-        return minver;
-      }
-      return null;
-    };
-    module2.exports = minVersion;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/valid.js
-var require_valid2 = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/valid.js"(exports, module2) {
-    var Range = require_range();
-    var validRange = (range, options) => {
-      try {
-        return new Range(range, options).range || "*";
-      } catch (er) {
-        return null;
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/valid.js
+var require_valid2 = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/valid.js"(exports, module2) {
+    var Range = require_range();
+    var validRange = (range, options) => {
+      try {
+        return new Range(range, options).range || "*";
+      } catch (er) {
+        return null;
       }
     };
     module2.exports = validRange;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/outside.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/outside.js
 var require_outside = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/outside.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/outside.js"(exports, module2) {
     var SemVer = require_semver();
     var Comparator = require_comparator();
     var { ANY } = Comparator;
@@ -3142,27 +2526,27 @@ var require_outside = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/gtr.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/gtr.js
 var require_gtr = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/gtr.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/gtr.js"(exports, module2) {
     var outside = require_outside();
     var gtr = (version2, range, options) => outside(version2, range, ">", options);
     module2.exports = gtr;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/ltr.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/ltr.js
 var require_ltr = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/ltr.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/ltr.js"(exports, module2) {
     var outside = require_outside();
     var ltr = (version2, range, options) => outside(version2, range, "<", options);
     module2.exports = ltr;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/intersects.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/intersects.js
 var require_intersects = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/intersects.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/intersects.js"(exports, module2) {
     var Range = require_range();
     var intersects = (r1, r2, options) => {
       r1 = new Range(r1, options);
@@ -3173,9 +2557,9 @@ var require_intersects = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/simplify.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/simplify.js
 var require_simplify = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/simplify.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/simplify.js"(exports, module2) {
     var satisfies = require_satisfies();
     var compare = require_compare();
     module2.exports = (versions, range, options) => {
@@ -3222,9 +2606,9 @@ var require_simplify = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/subset.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/subset.js
 var require_subset = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/ranges/subset.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/subset.js"(exports, module2) {
     var Range = require_range();
     var Comparator = require_comparator();
     var { ANY } = Comparator;
@@ -3384,9 +2768,9 @@ var require_subset = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/index.js
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/index.js
 var require_semver2 = __commonJS({
-  ".yarn/cache/semver-npm-7.6.0-f4630729f6-fbfe717094.zip/node_modules/semver/index.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/index.js"(exports, module2) {
     var internalRe = require_re();
     var constants = require_constants();
     var SemVer = require_semver();
@@ -4316,9 +3700,9 @@ var require_proxy_from_env = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/errors.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/errors.js
 var require_errors = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/errors.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/errors.js"(exports, module2) {
     "use strict";
     var UndiciError = class extends Error {
       constructor(message) {
@@ -4530,9 +3914,9 @@ var require_errors = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/symbols.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/symbols.js
 var require_symbols = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/symbols.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/symbols.js"(exports, module2) {
     module2.exports = {
       kClose: Symbol("close"),
       kDestroy: Symbol("destroy"),
@@ -4543,7 +3927,6 @@ var require_symbols = __commonJS({
       kQueue: Symbol("queue"),
       kConnect: Symbol("connect"),
       kConnecting: Symbol("connecting"),
-      kHeadersList: Symbol("headers list"),
       kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"),
       kKeepAliveMaxTimeout: Symbol("max keep alive timeout"),
       kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"),
@@ -4556,6 +3939,7 @@ var require_symbols = __commonJS({
       kHost: Symbol("host"),
       kNoRef: Symbol("no ref"),
       kBodyUsed: Symbol("used"),
+      kBody: Symbol("abstracted request body"),
       kRunning: Symbol("running"),
       kBlocking: Symbol("blocking"),
       kPending: Symbol("pending"),
@@ -4595,14 +3979,17 @@ var require_symbols = __commonJS({
       kConstruct: Symbol("constructable"),
       kListeners: Symbol("listeners"),
       kHTTPContext: Symbol("http context"),
-      kMaxConcurrentStreams: Symbol("max concurrent streams")
+      kMaxConcurrentStreams: Symbol("max concurrent streams"),
+      kNoProxyAgent: Symbol("no proxy agent"),
+      kHttpProxyAgent: Symbol("http proxy agent"),
+      kHttpsProxyAgent: Symbol("https proxy agent")
     };
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/constants.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/constants.js
 var require_constants2 = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/constants.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/constants.js"(exports, module2) {
     "use strict";
     var headerNameLowerCasedRecord = {};
     var wellknownHeaderNames = [
@@ -4715,9 +4102,9 @@ var require_constants2 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/tree.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/tree.js
 var require_tree = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/tree.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/tree.js"(exports, module2) {
     "use strict";
     var {
       wellknownHeaderNames,
@@ -4855,22 +4242,56 @@ var require_tree = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/util.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/util.js
 var require_util = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/util.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/util.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
-    var { kDestroyed, kBodyUsed, kListeners } = require_symbols();
+    var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols();
     var { IncomingMessage } = require("node:http");
     var stream = require("node:stream");
     var net = require("node:net");
-    var { InvalidArgumentError } = require_errors();
     var { Blob: Blob2 } = require("node:buffer");
     var nodeUtil = require("node:util");
     var { stringify } = require("node:querystring");
+    var { EventEmitter: EE } = require("node:events");
+    var { InvalidArgumentError } = require_errors();
     var { headerNameLowerCasedRecord } = require_constants2();
     var { tree } = require_tree();
     var [nodeMajor, nodeMinor] = process.versions.node.split(".").map((v) => Number(v));
+    var BodyAsyncIterable = class {
+      constructor(body) {
+        this[kBody] = body;
+        this[kBodyUsed] = false;
+      }
+      async *[Symbol.asyncIterator]() {
+        assert3(!this[kBodyUsed], "disturbed");
+        this[kBodyUsed] = true;
+        yield* this[kBody];
+      }
+    };
+    function wrapRequestBody(body) {
+      if (isStream(body)) {
+        if (bodyLength(body) === 0) {
+          body.on("data", function() {
+            assert3(false);
+          });
+        }
+        if (typeof body.readableDidRead !== "boolean") {
+          body[kBodyUsed] = false;
+          EE.prototype.on.call(body, "data", function() {
+            this[kBodyUsed] = true;
+          });
+        }
+        return body;
+      } else if (body && typeof body.pipeTo === "function") {
+        return new BodyAsyncIterable(body);
+      } else if (body && typeof body !== "string" && !ArrayBuffer.isView(body) && isIterable(body)) {
+        return new BodyAsyncIterable(body);
+      } else {
+        return body;
+      }
+    }
     function nop() {
     }
     function isStream(obj) {
@@ -4898,10 +4319,17 @@ var require_util = __commonJS({
       }
       return url;
     }
+    function isValidPort(port) {
+      const value = parseInt(port, 10);
+      return value === Number(port) && value >= 0 && value <= 65535;
+    }
+    function isHttpOrHttpsPrefixed(value) {
+      return value != null && value[0] === "h" && value[1] === "t" && value[2] === "t" && value[3] === "p" && (value[4] === ":" || value[4] === "s" && value[5] === ":");
+    }
     function parseURL(url) {
       if (typeof url === "string") {
         url = new URL(url);
-        if (!/^https?:/.test(url.origin || url.protocol)) {
+        if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
           throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
         }
         return url;
@@ -4909,11 +4337,8 @@ var require_util = __commonJS({
       if (!url || typeof url !== "object") {
         throw new InvalidArgumentError("Invalid URL: The URL argument must be a non-null object.");
       }
-      if (!/^https?:/.test(url.origin || url.protocol)) {
-        throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
-      }
       if (!(url instanceof URL)) {
-        if (url.port != null && url.port !== "" && !Number.isFinite(parseInt(url.port))) {
+        if (url.port != null && url.port !== "" && isValidPort(url.port) === false) {
           throw new InvalidArgumentError("Invalid URL: port must be a valid integer or a string representation of an integer.");
         }
         if (url.path != null && typeof url.path !== "string") {
@@ -4928,16 +4353,22 @@ var require_util = __commonJS({
         if (url.origin != null && typeof url.origin !== "string") {
           throw new InvalidArgumentError("Invalid URL origin: the origin must be a string or null/undefined.");
         }
+        if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
+          throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
+        }
         const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80;
-        let origin = url.origin != null ? url.origin : `${url.protocol}//${url.hostname}:${port}`;
+        let origin = url.origin != null ? url.origin : `${url.protocol || ""}//${url.hostname || ""}:${port}`;
         let path10 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
-        if (origin.endsWith("/")) {
-          origin = origin.substring(0, origin.length - 1);
+        if (origin[origin.length - 1] === "/") {
+          origin = origin.slice(0, origin.length - 1);
         }
-        if (path10 && !path10.startsWith("/")) {
+        if (path10 && path10[0] !== "/") {
           path10 = `/${path10}`;
         }
-        url = new URL(origin + path10);
+        return new URL(`${origin}${path10}`);
+      }
+      if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
+        throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
       }
       return url;
     }
@@ -4995,10 +4426,6 @@ var require_util = __commonJS({
     function isDestroyed(body) {
       return body && !!(body.destroyed || body[kDestroyed] || stream.isDestroyed?.(body));
     }
-    function isReadableAborted(stream2) {
-      const state = stream2?._readableState;
-      return isDestroyed(stream2) && state && !state.endEmitted;
-    }
     function destroy(stream2, err) {
       if (stream2 == null || !isStream(stream2) || isDestroyed(stream2)) {
         return;
@@ -5218,7 +4645,7 @@ var require_util = __commonJS({
       return true;
     }
     var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
-    function isValidHeaderChar(characters) {
+    function isValidHeaderValue(characters) {
       return !headerCharRegex.test(characters);
     }
     function parseRangeHeader(range) {
@@ -5261,7 +4688,6 @@ var require_util = __commonJS({
       isReadable,
       toUSVString,
       isUSVString,
-      isReadableAborted,
       isBlobLike,
       parseOrigin,
       parseURL,
@@ -5289,20 +4715,22 @@ var require_util = __commonJS({
       buildURL,
       addAbortListener,
       isValidHTTPToken,
-      isValidHeaderChar,
+      isValidHeaderValue,
       isTokenCharCode,
       parseRangeHeader,
+      isValidPort,
+      isHttpOrHttpsPrefixed,
       nodeMajor,
       nodeMinor,
-      nodeHasAutoSelectFamily: nodeMajor > 18 || nodeMajor === 18 && nodeMinor >= 13,
-      safeHTTPMethods: ["GET", "HEAD", "OPTIONS", "TRACE"]
+      safeHTTPMethods: ["GET", "HEAD", "OPTIONS", "TRACE"],
+      wrapRequestBody
     };
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/readable.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/readable.js
 var require_readable = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/readable.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/readable.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { Readable: Readable2 } = require("node:stream");
@@ -5349,9 +4777,13 @@ var require_readable = __commonJS({
         return super.destroy(err);
       }
       _destroy(err, callback) {
-        setImmediate(() => {
+        if (!this[kReading]) {
+          setImmediate(() => {
+            callback(err);
+          });
+        } else {
           callback(err);
-        });
+        }
       }
       on(ev, ...args) {
         if (ev === "data" || ev === "readable") {
@@ -5573,9 +5005,9 @@ var require_readable = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/util.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/util.js
 var require_util2 = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/util.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/util.js"(exports, module2) {
     var assert3 = require("node:assert");
     var {
       ResponseStatusCodeError
@@ -5586,16 +5018,22 @@ var require_util2 = __commonJS({
       assert3(body);
       let chunks = [];
       let length = 0;
-      for await (const chunk of body) {
-        chunks.push(chunk);
-        length += chunk.length;
-        if (length > CHUNK_LIMIT) {
-          chunks = null;
-          break;
-        }
-      }
+      try {
+        for await (const chunk of body) {
+          chunks.push(chunk);
+          length += chunk.length;
+          if (length > CHUNK_LIMIT) {
+            chunks = [];
+            length = 0;
+            break;
+          }
+        }
+      } catch {
+        chunks = [];
+        length = 0;
+      }
       const message = `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ""}`;
-      if (statusCode === 204 || !contentType || !chunks) {
+      if (statusCode === 204 || !contentType || !length) {
         queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers)));
         return;
       }
@@ -5628,68 +5066,16 @@ var require_util2 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/abort-signal.js
-var require_abort_signal = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/abort-signal.js"(exports, module2) {
-    var { addAbortListener } = require_util();
-    var { RequestAbortedError } = require_errors();
-    var kListener = Symbol("kListener");
-    var kSignal = Symbol("kSignal");
-    function abort(self2) {
-      if (self2.abort) {
-        self2.abort(self2[kSignal]?.reason);
-      } else {
-        self2.reason = self2[kSignal]?.reason ?? new RequestAbortedError();
-      }
-      removeSignal(self2);
-    }
-    function addSignal(self2, signal) {
-      self2.reason = null;
-      self2[kSignal] = null;
-      self2[kListener] = null;
-      if (!signal) {
-        return;
-      }
-      if (signal.aborted) {
-        abort(self2);
-        return;
-      }
-      self2[kSignal] = signal;
-      self2[kListener] = () => {
-        abort(self2);
-      };
-      addAbortListener(self2[kSignal], self2[kListener]);
-    }
-    function removeSignal(self2) {
-      if (!self2[kSignal]) {
-        return;
-      }
-      if ("removeEventListener" in self2[kSignal]) {
-        self2[kSignal].removeEventListener("abort", self2[kListener]);
-      } else {
-        self2[kSignal].removeListener("abort", self2[kListener]);
-      }
-      self2[kSignal] = null;
-      self2[kListener] = null;
-    }
-    module2.exports = {
-      addSignal,
-      removeSignal
-    };
-  }
-});
-
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-request.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-request.js
 var require_api_request = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-request.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-request.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { Readable: Readable2 } = require_readable();
-    var { InvalidArgumentError } = require_errors();
+    var { InvalidArgumentError, RequestAbortedError } = require_errors();
     var util = require_util();
     var { getResolveErrorBodyCallback } = require_util2();
     var { AsyncResource } = require("node:async_hooks");
-    var { addSignal, removeSignal } = require_abort_signal();
     var RequestHandler = class extends AsyncResource {
       constructor(opts, callback) {
         if (!opts || typeof opts !== "object") {
@@ -5719,6 +5105,7 @@ var require_api_request = __commonJS({
           }
           throw err;
         }
+        this.method = method;
         this.responseHeaders = responseHeaders || null;
         this.opaque = opaque || null;
         this.callback = callback;
@@ -5730,12 +5117,33 @@ var require_api_request = __commonJS({
         this.onInfo = onInfo || null;
         this.throwOnError = throwOnError;
         this.highWaterMark = highWaterMark;
+        this.signal = signal;
+        this.reason = null;
+        this.removeAbortListener = null;
         if (util.isStream(body)) {
           body.on("error", (err) => {
             this.onError(err);
           });
         }
-        addSignal(this, signal);
+        if (this.signal) {
+          if (this.signal.aborted) {
+            this.reason = this.signal.reason ?? new RequestAbortedError();
+          } else {
+            this.removeAbortListener = util.addAbortListener(this.signal, () => {
+              this.reason = this.signal.reason ?? new RequestAbortedError();
+              if (this.res) {
+                util.destroy(this.res, this.reason);
+              } else if (this.abort) {
+                this.abort(this.reason);
+              }
+              if (this.removeAbortListener) {
+                this.res?.off("close", this.removeAbortListener);
+                this.removeAbortListener();
+                this.removeAbortListener = null;
+              }
+            });
+          }
+        }
       }
       onConnect(abort, context) {
         if (this.reason) {
@@ -5758,15 +5166,24 @@ var require_api_request = __commonJS({
         const parsedHeaders = responseHeaders === "raw" ? util.parseHeaders(rawHeaders) : headers;
         const contentType = parsedHeaders["content-type"];
         const contentLength = parsedHeaders["content-length"];
-        const body = new Readable2({ resume, abort, contentType, contentLength, highWaterMark });
+        const res = new Readable2({
+          resume,
+          abort,
+          contentType,
+          contentLength: this.method !== "HEAD" && contentLength ? Number(contentLength) : null,
+          highWaterMark
+        });
+        if (this.removeAbortListener) {
+          res.on("close", this.removeAbortListener);
+        }
         this.callback = null;
-        this.res = body;
+        this.res = res;
         if (callback !== null) {
           if (this.throwOnError && statusCode >= 400) {
             this.runInAsyncScope(
               getResolveErrorBodyCallback,
               null,
-              { callback, body, contentType, statusCode, statusMessage, headers }
+              { callback, body: res, contentType, statusCode, statusMessage, headers }
             );
           } else {
             this.runInAsyncScope(callback, null, null, {
@@ -5774,25 +5191,21 @@ var require_api_request = __commonJS({
               headers,
               trailers: this.trailers,
               opaque,
-              body,
+              body: res,
               context
             });
           }
         }
       }
       onData(chunk) {
-        const { res } = this;
-        return res.push(chunk);
+        return this.res.push(chunk);
       }
       onComplete(trailers) {
-        const { res } = this;
-        removeSignal(this);
         util.parseHeaders(trailers, this.trailers);
-        res.push(null);
+        this.res.push(null);
       }
       onError(err) {
         const { res, callback, body, opaque } = this;
-        removeSignal(this);
         if (callback) {
           this.callback = null;
           queueMicrotask(() => {
@@ -5809,6 +5222,11 @@ var require_api_request = __commonJS({
           this.body = null;
           util.destroy(body, err);
         }
+        if (this.removeAbortListener) {
+          res?.off("close", this.removeAbortListener);
+          this.removeAbortListener();
+          this.removeAbortListener = null;
+        }
       }
     };
     function request(opts, callback) {
@@ -5834,9 +5252,60 @@ var require_api_request = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-stream.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/abort-signal.js
+var require_abort_signal = __commonJS({
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/abort-signal.js"(exports, module2) {
+    var { addAbortListener } = require_util();
+    var { RequestAbortedError } = require_errors();
+    var kListener = Symbol("kListener");
+    var kSignal = Symbol("kSignal");
+    function abort(self2) {
+      if (self2.abort) {
+        self2.abort(self2[kSignal]?.reason);
+      } else {
+        self2.reason = self2[kSignal]?.reason ?? new RequestAbortedError();
+      }
+      removeSignal(self2);
+    }
+    function addSignal(self2, signal) {
+      self2.reason = null;
+      self2[kSignal] = null;
+      self2[kListener] = null;
+      if (!signal) {
+        return;
+      }
+      if (signal.aborted) {
+        abort(self2);
+        return;
+      }
+      self2[kSignal] = signal;
+      self2[kListener] = () => {
+        abort(self2);
+      };
+      addAbortListener(self2[kSignal], self2[kListener]);
+    }
+    function removeSignal(self2) {
+      if (!self2[kSignal]) {
+        return;
+      }
+      if ("removeEventListener" in self2[kSignal]) {
+        self2[kSignal].removeEventListener("abort", self2[kListener]);
+      } else {
+        self2[kSignal].removeListener("abort", self2[kListener]);
+      }
+      self2[kSignal] = null;
+      self2[kListener] = null;
+    }
+    module2.exports = {
+      addSignal,
+      removeSignal
+    };
+  }
+});
+
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-stream.js
 var require_api_stream = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-stream.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-stream.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { finished, PassThrough } = require("node:stream");
@@ -6007,9 +5476,9 @@ var require_api_stream = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-pipeline.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-pipeline.js
 var require_api_pipeline = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-pipeline.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-pipeline.js"(exports, module2) {
     "use strict";
     var {
       Readable: Readable2,
@@ -6207,9 +5676,9 @@ var require_api_pipeline = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-upgrade.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-upgrade.js
 var require_api_upgrade = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-upgrade.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-upgrade.js"(exports, module2) {
     "use strict";
     var { InvalidArgumentError, SocketError } = require_errors();
     var { AsyncResource } = require("node:async_hooks");
@@ -6299,9 +5768,9 @@ var require_api_upgrade = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-connect.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-connect.js
 var require_api_connect = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/api-connect.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-connect.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { AsyncResource } = require("node:async_hooks");
@@ -6389,9 +5858,9 @@ var require_api_connect = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/index.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/index.js
 var require_api = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/api/index.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/index.js"(exports, module2) {
     "use strict";
     module2.exports.request = require_api_request();
     module2.exports.stream = require_api_stream();
@@ -6401,9 +5870,9 @@ var require_api = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/dispatcher.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/dispatcher.js
 var require_dispatcher = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/dispatcher.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/dispatcher.js"(exports, module2) {
     "use strict";
     var EventEmitter = require("node:events");
     var Dispatcher = class extends EventEmitter {
@@ -6456,9 +5925,9 @@ var require_dispatcher = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js
 var require_dispatcher_base = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports, module2) {
     "use strict";
     var Dispatcher = require_dispatcher();
     var {
@@ -6466,9 +5935,7 @@ var require_dispatcher_base = __commonJS({
       ClientClosedError,
       InvalidArgumentError
     } = require_errors();
-    var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols();
-    var kDestroyed = Symbol("destroyed");
-    var kClosed = Symbol("closed");
+    var { kDestroy, kClose, kClosed, kDestroyed, kDispatch, kInterceptors } = require_symbols();
     var kOnDestroyed = Symbol("onDestroyed");
     var kOnClosed = Symbol("onClosed");
     var kInterceptedDispatch = Symbol("Intercepted Dispatch");
@@ -6619,9 +6086,9 @@ var require_dispatcher_base = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/fixed-queue.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/fixed-queue.js
 var require_fixed_queue = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/fixed-queue.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/fixed-queue.js"(exports, module2) {
     "use strict";
     var kSize = 2048;
     var kMask = kSize - 1;
@@ -6676,9 +6143,9 @@ var require_fixed_queue = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/pool-stats.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool-stats.js
 var require_pool_stats = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/pool-stats.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool-stats.js"(exports, module2) {
     var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols();
     var kPool = Symbol("pool");
     var PoolStats = class {
@@ -6708,9 +6175,9 @@ var require_pool_stats = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/pool-base.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool-base.js
 var require_pool_base = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/pool-base.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool-base.js"(exports, module2) {
     "use strict";
     var DispatcherBase = require_dispatcher_base();
     var FixedQueue = require_fixed_queue();
@@ -6863,9 +6330,9 @@ var require_pool_base = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/diagnostics.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/diagnostics.js
 var require_diagnostics = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/diagnostics.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/diagnostics.js"(exports, module2) {
     "use strict";
     var diagnosticsChannel = require("node:diagnostics_channel");
     var util = require("node:util");
@@ -7048,9 +6515,9 @@ var require_diagnostics = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/request.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/request.js
 var require_request = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/request.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/request.js"(exports, module2) {
     "use strict";
     var {
       InvalidArgumentError,
@@ -7059,7 +6526,7 @@ var require_request = __commonJS({
     var assert3 = require("node:assert");
     var {
       isValidHTTPToken,
-      isValidHeaderChar,
+      isValidHeaderValue,
       isStream,
       destroy,
       isBuffer,
@@ -7316,7 +6783,7 @@ var require_request = __commonJS({
         const arr = [];
         for (let i = 0; i < val.length; i++) {
           if (typeof val[i] === "string") {
-            if (!isValidHeaderChar(val[i])) {
+            if (!isValidHeaderValue(val[i])) {
               throw new InvalidArgumentError(`invalid ${key} header`);
             }
             arr.push(val[i]);
@@ -7330,13 +6797,11 @@ var require_request = __commonJS({
         }
         val = arr;
       } else if (typeof val === "string") {
-        if (!isValidHeaderChar(val)) {
+        if (!isValidHeaderValue(val)) {
           throw new InvalidArgumentError(`invalid ${key} header`);
         }
       } else if (val === null) {
         val = "";
-      } else if (typeof val === "object") {
-        throw new InvalidArgumentError(`invalid ${key} header`);
       } else {
         val = `${val}`;
       }
@@ -7373,9 +6838,9 @@ var require_request = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/connect.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/connect.js
 var require_connect = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/core/connect.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/connect.js"(exports, module2) {
     "use strict";
     var net = require("node:net");
     var assert3 = require("node:assert");
@@ -7533,10 +6998,11 @@ var require_connect = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/util/timers.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/util/timers.js
 var require_timers = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/util/timers.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/util/timers.js"(exports, module2) {
     "use strict";
+    var TICK_MS = 499;
     var fastNow = Date.now();
     var fastNowTimeout;
     var fastTimers = [];
@@ -7547,7 +7013,7 @@ var require_timers = __commonJS({
       while (idx < len) {
         const timer = fastTimers[idx];
         if (timer.state === 0) {
-          timer.state = fastNow + timer.delay;
+          timer.state = fastNow + timer.delay - TICK_MS;
         } else if (timer.state > 0 && fastNow >= timer.state) {
           timer.state = -1;
           timer.callback(timer.opaque);
@@ -7573,7 +7039,7 @@ var require_timers = __commonJS({
         fastNowTimeout.refresh();
       } else {
         clearTimeout(fastNowTimeout);
-        fastNowTimeout = setTimeout(onTimeout, 1e3);
+        fastNowTimeout = setTimeout(onTimeout, TICK_MS);
         if (fastNowTimeout.unref) {
           fastNowTimeout.unref();
         }
@@ -7602,7 +7068,7 @@ var require_timers = __commonJS({
     };
     module2.exports = {
       setTimeout(callback, delay, opaque) {
-        return delay < 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque);
+        return delay <= 1e3 ? setTimeout(callback, delay, opaque) : new Timeout(callback, delay, opaque);
       },
       clearTimeout(timeout) {
         if (timeout instanceof Timeout) {
@@ -7615,9 +7081,9 @@ var require_timers = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/llhttp/utils.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/utils.js
 var require_utils = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/llhttp/utils.js"(exports) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/utils.js"(exports) {
     "use strict";
     Object.defineProperty(exports, "__esModule", { value: true });
     exports.enumToMap = void 0;
@@ -7635,9 +7101,9 @@ var require_utils = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/llhttp/constants.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/constants.js
 var require_constants3 = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/llhttp/constants.js"(exports) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/constants.js"(exports) {
     "use strict";
     Object.defineProperty(exports, "__esModule", { value: true });
     exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;
@@ -7956,25 +7422,27 @@ var require_constants3 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js
 var require_llhttp_wasm = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports, module2) {
+    "use strict";
     var { Buffer: Buffer2 } = require("node:buffer");
-    module2.exports = Buffer2.from("AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8=", "base64");
+    module2.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
 var require_llhttp_simd_wasm = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports, module2) {
+    "use strict";
     var { Buffer: Buffer2 } = require("node:buffer");
-    module2.exports = Buffer2.from("AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AcsBygG4AckBuQHIAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBANwBC0EAIRAMxgELQQ4hEAzFAQtBDSEQDMQBC0EPIRAMwwELQRAhEAzCAQtBEyEQDMEBC0EUIRAMwAELQRUhEAy/AQtBFiEQDL4BC0EXIRAMvQELQRghEAy8AQtBGSEQDLsBC0EaIRAMugELQRshEAy5AQtBHCEQDLgBC0EIIRAMtwELQR0hEAy2AQtBICEQDLUBC0EfIRAMtAELQQchEAyzAQtBISEQDLIBC0EiIRAMsQELQR4hEAywAQtBIyEQDK8BC0ESIRAMrgELQREhEAytAQtBJCEQDKwBC0ElIRAMqwELQSYhEAyqAQtBJyEQDKkBC0HDASEQDKgBC0EpIRAMpwELQSshEAymAQtBLCEQDKUBC0EtIRAMpAELQS4hEAyjAQtBLyEQDKIBC0HEASEQDKEBC0EwIRAMoAELQTQhEAyfAQtBDCEQDJ4BC0ExIRAMnQELQTIhEAycAQtBMyEQDJsBC0E5IRAMmgELQTUhEAyZAQtBxQEhEAyYAQtBCyEQDJcBC0E6IRAMlgELQTYhEAyVAQtBCiEQDJQBC0E3IRAMkwELQTghEAySAQtBPCEQDJEBC0E7IRAMkAELQT0hEAyPAQtBCSEQDI4BC0EoIRAMjQELQT4hEAyMAQtBPyEQDIsBC0HAACEQDIoBC0HBACEQDIkBC0HCACEQDIgBC0HDACEQDIcBC0HEACEQDIYBC0HFACEQDIUBC0HGACEQDIQBC0EqIRAMgwELQccAIRAMggELQcgAIRAMgQELQckAIRAMgAELQcoAIRAMfwtBywAhEAx+C0HNACEQDH0LQcwAIRAMfAtBzgAhEAx7C0HPACEQDHoLQdAAIRAMeQtB0QAhEAx4C0HSACEQDHcLQdMAIRAMdgtB1AAhEAx1C0HWACEQDHQLQdUAIRAMcwtBBiEQDHILQdcAIRAMcQtBBSEQDHALQdgAIRAMbwtBBCEQDG4LQdkAIRAMbQtB2gAhEAxsC0HbACEQDGsLQdwAIRAMagtBAyEQDGkLQd0AIRAMaAtB3gAhEAxnC0HfACEQDGYLQeEAIRAMZQtB4AAhEAxkC0HiACEQDGMLQeMAIRAMYgtBAiEQDGELQeQAIRAMYAtB5QAhEAxfC0HmACEQDF4LQecAIRAMXQtB6AAhEAxcC0HpACEQDFsLQeoAIRAMWgtB6wAhEAxZC0HsACEQDFgLQe0AIRAMVwtB7gAhEAxWC0HvACEQDFULQfAAIRAMVAtB8QAhEAxTC0HyACEQDFILQfMAIRAMUQtB9AAhEAxQC0H1ACEQDE8LQfYAIRAMTgtB9wAhEAxNC0H4ACEQDEwLQfkAIRAMSwtB+gAhEAxKC0H7ACEQDEkLQfwAIRAMSAtB/QAhEAxHC0H+ACEQDEYLQf8AIRAMRQtBgAEhEAxEC0GBASEQDEMLQYIBIRAMQgtBgwEhEAxBC0GEASEQDEALQYUBIRAMPwtBhgEhEAw+C0GHASEQDD0LQYgBIRAMPAtBiQEhEAw7C0GKASEQDDoLQYsBIRAMOQtBjAEhEAw4C0GNASEQDDcLQY4BIRAMNgtBjwEhEAw1C0GQASEQDDQLQZEBIRAMMwtBkgEhEAwyC0GTASEQDDELQZQBIRAMMAtBlQEhEAwvC0GWASEQDC4LQZcBIRAMLQtBmAEhEAwsC0GZASEQDCsLQZoBIRAMKgtBmwEhEAwpC0GcASEQDCgLQZ0BIRAMJwtBngEhEAwmC0GfASEQDCULQaABIRAMJAtBoQEhEAwjC0GiASEQDCILQaMBIRAMIQtBpAEhEAwgC0GlASEQDB8LQaYBIRAMHgtBpwEhEAwdC0GoASEQDBwLQakBIRAMGwtBqgEhEAwaC0GrASEQDBkLQawBIRAMGAtBrQEhEAwXC0GuASEQDBYLQQEhEAwVC0GvASEQDBQLQbABIRAMEwtBsQEhEAwSC0GzASEQDBELQbIBIRAMEAtBtAEhEAwPC0G1ASEQDA4LQbYBIRAMDQtBtwEhEAwMC0G4ASEQDAsLQbkBIRAMCgtBugEhEAwJC0G7ASEQDAgLQcYBIRAMBwtBvAEhEAwGC0G9ASEQDAULQb4BIRAMBAtBvwEhEAwDC0HAASEQDAILQcIBIRAMAQtBwQEhEAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
+    module2.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/constants.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/constants.js
 var require_constants4 = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/constants.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/constants.js"(exports, module2) {
     "use strict";
     var corsSafeListedMethods = ["GET", "HEAD", "POST"];
     var corsSafeListedMethodsSet = new Set(corsSafeListedMethods);
@@ -8148,9 +7616,9 @@ var require_constants4 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/global.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/global.js
 var require_global = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/global.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/global.js"(exports, module2) {
     "use strict";
     var globalOrigin = Symbol.for("undici.globalOrigin.1");
     function getGlobalOrigin() {
@@ -8184,16 +7652,16 @@ var require_global = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/data-url.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/data-url.js
 var require_data_url = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/data-url.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/data-url.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var encoder = new TextEncoder();
-    var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/;
+    var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/;
     var HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/;
     var ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g;
-    var HTTP_QUOTED_STRING_TOKENS = /[\u0009\u0020-\u007E\u0080-\u00FF]/;
+    var HTTP_QUOTED_STRING_TOKENS = /^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;
     function dataURLProcessor(dataURL) {
       assert3(dataURL.protocol === "data:");
       let input = URLSerializer(dataURL, true);
@@ -8530,6 +7998,7 @@ var require_data_url = __commonJS({
       collectAnHTTPQuotedString,
       serializeAMimeType,
       removeChars,
+      removeHTTPWhitespace,
       minimizeSupportedMimeType,
       HTTP_TOKEN_CODEPOINTS,
       isomorphicDecode
@@ -8537,9 +8006,9 @@ var require_data_url = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/webidl.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/webidl.js
 var require_webidl = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/webidl.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/webidl.js"(exports, module2) {
     "use strict";
     var { types, inspect } = require("node:util");
     var { toUSVString } = require_util();
@@ -8564,14 +8033,18 @@ var require_webidl = __commonJS({
         message: `"${context.value}" is an invalid ${context.type}.`
       });
     };
-    webidl.brandCheck = function(V, I, opts = void 0) {
+    webidl.brandCheck = function(V, I, opts) {
       if (opts?.strict !== false) {
         if (!(V instanceof I)) {
-          throw new TypeError("Illegal invocation");
+          const err = new TypeError("Illegal invocation");
+          err.code = "ERR_INVALID_THIS";
+          throw err;
         }
       } else {
         if (V?.[Symbol.toStringTag] !== I.prototype[Symbol.toStringTag]) {
-          throw new TypeError("Illegal invocation");
+          const err = new TypeError("Illegal invocation");
+          err.code = "ERR_INVALID_THIS";
+          throw err;
         }
       }
     };
@@ -8579,7 +8052,7 @@ var require_webidl = __commonJS({
       if (length < min) {
         throw webidl.errors.exception({
           message: `${min} argument${min !== 1 ? "s" : ""} required, but${length ? " only" : ""} ${length} found.`,
-          ...ctx
+          header: ctx
         });
       }
     };
@@ -8612,7 +8085,7 @@ var require_webidl = __commonJS({
         }
       }
     };
-    webidl.util.ConvertToInt = function(V, bitLength, signedness, opts = {}) {
+    webidl.util.ConvertToInt = function(V, bitLength, signedness, opts) {
       let upperBound;
       let lowerBound;
       if (bitLength === 64) {
@@ -8633,7 +8106,7 @@ var require_webidl = __commonJS({
       if (x === 0) {
         x = 0;
       }
-      if (opts.enforceRange === true) {
+      if (opts?.enforceRange === true) {
         if (Number.isNaN(x) || x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY) {
           throw webidl.errors.exception({
             header: "Integer conversion",
@@ -8649,7 +8122,7 @@ var require_webidl = __commonJS({
         }
         return x;
       }
-      if (!Number.isNaN(x) && opts.clamp === true) {
+      if (!Number.isNaN(x) && opts?.clamp === true) {
         x = Math.min(Math.max(x, lowerBound), upperBound);
         if (Math.floor(x) % 2 === 0) {
           x = Math.floor(x);
@@ -8689,19 +8162,20 @@ var require_webidl = __commonJS({
       }
     };
     webidl.sequenceConverter = function(converter) {
-      return (V, Iterable) => {
+      return (V, prefix, argument, Iterable) => {
         if (webidl.util.Type(V) !== "Object") {
           throw webidl.errors.exception({
-            header: "Sequence",
-            message: `Value of type ${webidl.util.Type(V)} is not an Object.`
+            header: prefix,
+            message: `${argument} (${webidl.util.Stringify(V)}) is not iterable.`
           });
         }
         const method = typeof Iterable === "function" ? Iterable() : V?.[Symbol.iterator]?.();
         const seq = [];
+        let index = 0;
         if (method === void 0 || typeof method.next !== "function") {
           throw webidl.errors.exception({
-            header: "Sequence",
-            message: "Object is not an iterator."
+            header: prefix,
+            message: `${argument} is not iterable.`
           });
         }
         while (true) {
@@ -8709,25 +8183,25 @@ var require_webidl = __commonJS({
           if (done) {
             break;
           }
-          seq.push(converter(value));
+          seq.push(converter(value, prefix, `${argument}[${index++}]`));
         }
         return seq;
       };
     };
     webidl.recordConverter = function(keyConverter, valueConverter) {
-      return (O) => {
+      return (O, prefix, argument) => {
         if (webidl.util.Type(O) !== "Object") {
           throw webidl.errors.exception({
-            header: "Record",
-            message: `Value of type ${webidl.util.Type(O)} is not an Object.`
+            header: prefix,
+            message: `${argument} ("${webidl.util.Type(O)}") is not an Object.`
           });
         }
         const result = {};
         if (!types.isProxy(O)) {
           const keys2 = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)];
           for (const key of keys2) {
-            const typedKey = keyConverter(key);
-            const typedValue = valueConverter(O[key]);
+            const typedKey = keyConverter(key, prefix, argument);
+            const typedValue = valueConverter(O[key], prefix, argument);
             result[typedKey] = typedValue;
           }
           return result;
@@ -8736,8 +8210,8 @@ var require_webidl = __commonJS({
         for (const key of keys) {
           const desc = Reflect.getOwnPropertyDescriptor(O, key);
           if (desc?.enumerable) {
-            const typedKey = keyConverter(key);
-            const typedValue = valueConverter(O[key]);
+            const typedKey = keyConverter(key, prefix, argument);
+            const typedValue = valueConverter(O[key], prefix, argument);
             result[typedKey] = typedValue;
           }
         }
@@ -8745,25 +8219,25 @@ var require_webidl = __commonJS({
       };
     };
     webidl.interfaceConverter = function(i) {
-      return (V, opts = {}) => {
-        if (opts.strict !== false && !(V instanceof i)) {
+      return (V, prefix, argument, opts) => {
+        if (opts?.strict !== false && !(V instanceof i)) {
           throw webidl.errors.exception({
-            header: i.name,
-            message: `Expected ${webidl.util.Stringify(V)} to be an instance of ${i.name}.`
+            header: prefix,
+            message: `Expected ${argument} ("${webidl.util.Stringify(V)}") to be an instance of ${i.name}.`
           });
         }
         return V;
       };
     };
     webidl.dictionaryConverter = function(converters) {
-      return (dictionary) => {
+      return (dictionary, prefix, argument) => {
         const type = webidl.util.Type(dictionary);
         const dict = {};
         if (type === "Null" || type === "Undefined") {
           return dict;
         } else if (type !== "Object") {
           throw webidl.errors.exception({
-            header: "Dictionary",
+            header: prefix,
             message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`
           });
         }
@@ -8772,7 +8246,7 @@ var require_webidl = __commonJS({
           if (required === true) {
             if (!Object.hasOwn(dictionary, key)) {
               throw webidl.errors.exception({
-                header: "Dictionary",
+                header: prefix,
                 message: `Missing required key "${key}".`
               });
             }
@@ -8780,13 +8254,13 @@ var require_webidl = __commonJS({
           let value = dictionary[key];
           const hasDefault = Object.hasOwn(options, "defaultValue");
           if (hasDefault && value !== null) {
-            value = value ?? defaultValue;
+            value ??= defaultValue();
           }
           if (required || hasDefault || value !== void 0) {
-            value = converter(value);
+            value = converter(value, prefix, `${argument}.${key}`);
             if (options.allowedValues && !options.allowedValues.includes(value)) {
               throw webidl.errors.exception({
-                header: "Dictionary",
+                header: prefix,
                 message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(", ")}.`
               });
             }
@@ -8797,24 +8271,27 @@ var require_webidl = __commonJS({
       };
     };
     webidl.nullableConverter = function(converter) {
-      return (V) => {
+      return (V, prefix, argument) => {
         if (V === null) {
           return V;
         }
-        return converter(V);
+        return converter(V, prefix, argument);
       };
     };
-    webidl.converters.DOMString = function(V, opts = {}) {
-      if (V === null && opts.legacyNullToEmptyString) {
+    webidl.converters.DOMString = function(V, prefix, argument, opts) {
+      if (V === null && opts?.legacyNullToEmptyString) {
         return "";
       }
       if (typeof V === "symbol") {
-        throw new TypeError("Could not convert argument of type symbol to string.");
+        throw webidl.errors.exception({
+          header: prefix,
+          message: `${argument} is a symbol, which cannot be converted to a DOMString.`
+        });
       }
       return String(V);
     };
-    webidl.converters.ByteString = function(V) {
-      const x = webidl.converters.DOMString(V);
+    webidl.converters.ByteString = function(V, prefix, argument) {
+      const x = webidl.converters.DOMString(V, prefix, argument);
       for (let index = 0; index < x.length; index++) {
         if (x.charCodeAt(index) > 255) {
           throw new TypeError(
@@ -8832,31 +8309,31 @@ var require_webidl = __commonJS({
     webidl.converters.any = function(V) {
       return V;
     };
-    webidl.converters["long long"] = function(V) {
-      const x = webidl.util.ConvertToInt(V, 64, "signed");
+    webidl.converters["long long"] = function(V, prefix, argument) {
+      const x = webidl.util.ConvertToInt(V, 64, "signed", void 0, prefix, argument);
       return x;
     };
-    webidl.converters["unsigned long long"] = function(V) {
-      const x = webidl.util.ConvertToInt(V, 64, "unsigned");
+    webidl.converters["unsigned long long"] = function(V, prefix, argument) {
+      const x = webidl.util.ConvertToInt(V, 64, "unsigned", void 0, prefix, argument);
       return x;
     };
-    webidl.converters["unsigned long"] = function(V) {
-      const x = webidl.util.ConvertToInt(V, 32, "unsigned");
+    webidl.converters["unsigned long"] = function(V, prefix, argument) {
+      const x = webidl.util.ConvertToInt(V, 32, "unsigned", void 0, prefix, argument);
       return x;
     };
-    webidl.converters["unsigned short"] = function(V, opts) {
-      const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts);
+    webidl.converters["unsigned short"] = function(V, prefix, argument, opts) {
+      const x = webidl.util.ConvertToInt(V, 16, "unsigned", opts, prefix, argument);
       return x;
     };
-    webidl.converters.ArrayBuffer = function(V, opts = {}) {
+    webidl.converters.ArrayBuffer = function(V, prefix, argument, opts) {
       if (webidl.util.Type(V) !== "Object" || !types.isAnyArrayBuffer(V)) {
         throw webidl.errors.conversionFailed({
-          prefix: webidl.util.Stringify(V),
-          argument: webidl.util.Stringify(V),
+          prefix,
+          argument: `${argument} ("${webidl.util.Stringify(V)}")`,
           types: ["ArrayBuffer"]
         });
       }
-      if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {
+      if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) {
         throw webidl.errors.exception({
           header: "ArrayBuffer",
           message: "SharedArrayBuffer is not allowed."
@@ -8870,15 +8347,15 @@ var require_webidl = __commonJS({
       }
       return V;
     };
-    webidl.converters.TypedArray = function(V, T, opts = {}) {
+    webidl.converters.TypedArray = function(V, T, prefix, name, opts) {
       if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) {
         throw webidl.errors.conversionFailed({
-          prefix: `${T.name}`,
-          argument: webidl.util.Stringify(V),
+          prefix,
+          argument: `${name} ("${webidl.util.Stringify(V)}")`,
           types: [T.name]
         });
       }
-      if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
+      if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
         throw webidl.errors.exception({
           header: "ArrayBuffer",
           message: "SharedArrayBuffer is not allowed."
@@ -8892,14 +8369,14 @@ var require_webidl = __commonJS({
       }
       return V;
     };
-    webidl.converters.DataView = function(V, opts = {}) {
+    webidl.converters.DataView = function(V, prefix, name, opts) {
       if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) {
         throw webidl.errors.exception({
-          header: "DataView",
-          message: "Object is not a DataView."
+          header: prefix,
+          message: `${name} is not a DataView.`
         });
       }
-      if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
+      if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
         throw webidl.errors.exception({
           header: "ArrayBuffer",
           message: "SharedArrayBuffer is not allowed."
@@ -8913,17 +8390,21 @@ var require_webidl = __commonJS({
       }
       return V;
     };
-    webidl.converters.BufferSource = function(V, opts = {}) {
+    webidl.converters.BufferSource = function(V, prefix, name, opts) {
       if (types.isAnyArrayBuffer(V)) {
-        return webidl.converters.ArrayBuffer(V, { ...opts, allowShared: false });
+        return webidl.converters.ArrayBuffer(V, prefix, name, { ...opts, allowShared: false });
       }
       if (types.isTypedArray(V)) {
-        return webidl.converters.TypedArray(V, V.constructor, { ...opts, allowShared: false });
+        return webidl.converters.TypedArray(V, V.constructor, prefix, name, { ...opts, allowShared: false });
       }
       if (types.isDataView(V)) {
-        return webidl.converters.DataView(V, opts, { ...opts, allowShared: false });
+        return webidl.converters.DataView(V, prefix, name, { ...opts, allowShared: false });
       }
-      throw new TypeError(`Could not convert ${webidl.util.Stringify(V)} to a BufferSource.`);
+      throw webidl.errors.conversionFailed({
+        prefix,
+        argument: `${name} ("${webidl.util.Stringify(V)}")`,
+        types: ["BufferSource"]
+      });
     };
     webidl.converters["sequence"] = webidl.sequenceConverter(
       webidl.converters.ByteString
@@ -8941,9 +8422,9 @@ var require_webidl = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/util.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/util.js
 var require_util3 = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/util.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/util.js"(exports, module2) {
     "use strict";
     var { Transform } = require("node:stream");
     var zlib = require("node:zlib");
@@ -9058,10 +8539,11 @@ var require_util3 = __commonJS({
     }
     function appendRequestOriginHeader(request) {
       let serializedOrigin = request.origin;
+      if (serializedOrigin === "client") {
+        return;
+      }
       if (request.responseTainting === "cors" || request.mode === "websocket") {
-        if (serializedOrigin) {
-          request.headersList.append("origin", serializedOrigin, true);
-        }
+        request.headersList.append("origin", serializedOrigin, true);
       } else if (request.method !== "GET" && request.method !== "HEAD") {
         switch (request.referrerPolicy) {
           case "no-referrer":
@@ -9081,9 +8563,7 @@ var require_util3 = __commonJS({
             break;
           default:
         }
-        if (serializedOrigin) {
-          request.headersList.append("origin", serializedOrigin, true);
-        }
+        request.headersList.append("origin", serializedOrigin, true);
       }
     }
     function coarsenTime(timestamp, crossOriginIsolatedCapability) {
@@ -9480,7 +8960,7 @@ var require_util3 = __commonJS({
           configurable: true,
           value: function forEach(callbackfn, thisArg = globalThis) {
             webidl.brandCheck(this, object);
-            webidl.argumentLengthCheck(arguments, 1, { header: `${name}.forEach` });
+            webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`);
             if (typeof callbackfn !== "function") {
               throw new TypeError(
                 `Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.`
@@ -9502,7 +8982,7 @@ var require_util3 = __commonJS({
         }
       });
     }
-    async function fullyReadBody(body, processBody, processBodyError) {
+    async function fullyReadBody(body, processBody, processBodyError, shouldClone) {
       const successSteps = processBody;
       const errorSteps = processBodyError;
       let reader;
@@ -9513,8 +8993,7 @@ var require_util3 = __commonJS({
         return;
       }
       try {
-        const result = await readAllBytes(reader);
-        successSteps(result);
+        successSteps(await readAllBytes(reader, shouldClone));
       } catch (e) {
         errorSteps(e);
       }
@@ -9532,18 +9011,24 @@ var require_util3 = __commonJS({
         }
       }
     }
+    var invalidIsomorphicEncodeValueRegex = /[^\x00-\xFF]/;
     function isomorphicEncode(input) {
-      for (let i = 0; i < input.length; i++) {
-        assert3(input.charCodeAt(i) <= 255);
-      }
+      assert3(!invalidIsomorphicEncodeValueRegex.test(input));
       return input;
     }
-    async function readAllBytes(reader) {
+    async function readAllBytes(reader, shouldClone) {
       const bytes = [];
       let byteLength = 0;
       while (true) {
         const { done, value: chunk } = await reader.read();
         if (done) {
+          if (bytes.length === 1) {
+            const { buffer, byteOffset, byteLength: byteLength2 } = bytes[0];
+            if (shouldClone === false) {
+              return Buffer.from(buffer, byteOffset, byteLength2);
+            }
+            return Buffer.from(buffer.slice(byteOffset, byteOffset + byteLength2), 0, byteLength2);
+          }
           return Buffer.concat(bytes, byteLength);
         }
         if (!isUint8Array(chunk)) {
@@ -9749,6 +9234,19 @@ var require_util3 = __commonJS({
       const output = textDecoder.decode(buffer);
       return output;
     }
+    var EnvironmentSettingsObjectBase = class {
+      get baseUrl() {
+        return getGlobalOrigin();
+      }
+      get origin() {
+        return this.baseUrl?.origin;
+      }
+      policyContainer = makePolicyContainer();
+    };
+    var EnvironmentSettingsObject = class {
+      settingsObject = new EnvironmentSettingsObjectBase();
+    };
+    var environmentSettingsObject = new EnvironmentSettingsObject();
     module2.exports = {
       isAborted,
       isCancelled,
@@ -9800,80 +9298,33 @@ var require_util3 = __commonJS({
       createInflate,
       extractMimeType,
       getDecodeSplit,
-      utf8DecodeBytes
+      utf8DecodeBytes,
+      environmentSettingsObject
     };
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/symbols.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/symbols.js
 var require_symbols2 = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/symbols.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/symbols.js"(exports, module2) {
     "use strict";
     module2.exports = {
       kUrl: Symbol("url"),
       kHeaders: Symbol("headers"),
       kSignal: Symbol("signal"),
       kState: Symbol("state"),
-      kGuard: Symbol("guard"),
-      kRealm: Symbol("realm"),
       kDispatcher: Symbol("dispatcher")
     };
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/file.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/file.js
 var require_file = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/file.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/file.js"(exports, module2) {
     "use strict";
-    var { EOL } = require("node:os");
-    var { Blob: Blob2, File: NativeFile } = require("node:buffer");
-    var { types } = require("node:util");
+    var { Blob: Blob2, File } = require("node:buffer");
     var { kState } = require_symbols2();
-    var { isBlobLike } = require_util3();
     var { webidl } = require_webidl();
-    var { parseMIMEType, serializeAMimeType } = require_data_url();
-    var { kEnumerableProperty } = require_util();
-    var encoder = new TextEncoder();
-    var File = class _File extends Blob2 {
-      constructor(fileBits, fileName, options = {}) {
-        webidl.argumentLengthCheck(arguments, 2, { header: "File constructor" });
-        fileBits = webidl.converters["sequence"](fileBits);
-        fileName = webidl.converters.USVString(fileName);
-        options = webidl.converters.FilePropertyBag(options);
-        const n = fileName;
-        let t = options.type;
-        let d;
-        substep: {
-          if (t) {
-            t = parseMIMEType(t);
-            if (t === "failure") {
-              t = "";
-              break substep;
-            }
-            t = serializeAMimeType(t).toLowerCase();
-          }
-          d = options.lastModified;
-        }
-        super(processBlobParts(fileBits, options), { type: t });
-        this[kState] = {
-          name: n,
-          lastModified: d,
-          type: t
-        };
-      }
-      get name() {
-        webidl.brandCheck(this, _File);
-        return this[kState].name;
-      }
-      get lastModified() {
-        webidl.brandCheck(this, _File);
-        return this[kState].lastModified;
-      }
-      get type() {
-        webidl.brandCheck(this, _File);
-        return this[kState].type;
-      }
-    };
     var FileLike = class _FileLike {
       constructor(blobLike, fileName, options = {}) {
         const n = fileName;
@@ -9922,100 +9373,26 @@ var require_file = __commonJS({
         return "File";
       }
     };
-    Object.defineProperties(File.prototype, {
-      [Symbol.toStringTag]: {
-        value: "File",
-        configurable: true
-      },
-      name: kEnumerableProperty,
-      lastModified: kEnumerableProperty
-    });
     webidl.converters.Blob = webidl.interfaceConverter(Blob2);
-    webidl.converters.BlobPart = function(V, opts) {
-      if (webidl.util.Type(V) === "Object") {
-        if (isBlobLike(V)) {
-          return webidl.converters.Blob(V, { strict: false });
-        }
-        if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {
-          return webidl.converters.BufferSource(V, opts);
-        }
-      }
-      return webidl.converters.USVString(V, opts);
-    };
-    webidl.converters["sequence"] = webidl.sequenceConverter(
-      webidl.converters.BlobPart
-    );
-    webidl.converters.FilePropertyBag = webidl.dictionaryConverter([
-      {
-        key: "lastModified",
-        converter: webidl.converters["long long"],
-        get defaultValue() {
-          return Date.now();
-        }
-      },
-      {
-        key: "type",
-        converter: webidl.converters.DOMString,
-        defaultValue: ""
-      },
-      {
-        key: "endings",
-        converter: (value) => {
-          value = webidl.converters.DOMString(value);
-          value = value.toLowerCase();
-          if (value !== "native") {
-            value = "transparent";
-          }
-          return value;
-        },
-        defaultValue: "transparent"
-      }
-    ]);
-    function processBlobParts(parts, options) {
-      const bytes = [];
-      for (const element of parts) {
-        if (typeof element === "string") {
-          let s = element;
-          if (options.endings === "native") {
-            s = convertLineEndingsNative(s);
-          }
-          bytes.push(encoder.encode(s));
-        } else if (ArrayBuffer.isView(element) || types.isArrayBuffer(element)) {
-          if (element.buffer) {
-            bytes.push(
-              new Uint8Array(element.buffer, element.byteOffset, element.byteLength)
-            );
-          } else {
-            bytes.push(new Uint8Array(element));
-          }
-        } else if (isBlobLike(element)) {
-          bytes.push(element);
-        }
-      }
-      return bytes;
-    }
-    function convertLineEndingsNative(s) {
-      return s.replace(/\r?\n/g, EOL);
-    }
     function isFileLike(object) {
-      return NativeFile && object instanceof NativeFile || object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File";
+      return object instanceof File || object && (typeof object.stream === "function" || typeof object.arrayBuffer === "function") && object[Symbol.toStringTag] === "File";
     }
-    module2.exports = { File, FileLike, isFileLike };
+    module2.exports = { FileLike, isFileLike };
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/formdata.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/formdata.js
 var require_formdata = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/formdata.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/formdata.js"(exports, module2) {
     "use strict";
     var { isBlobLike, iteratorMixin } = require_util3();
     var { kState } = require_symbols2();
     var { kEnumerableProperty } = require_util();
-    var { File: UndiciFile, FileLike, isFileLike } = require_file();
+    var { FileLike, isFileLike } = require_file();
     var { webidl } = require_webidl();
     var { File: NativeFile } = require("node:buffer");
     var nodeUtil = require("node:util");
-    var File = NativeFile ?? UndiciFile;
+    var File = globalThis.File ?? NativeFile;
     var FormData = class _FormData {
       constructor(form) {
         if (form !== void 0) {
@@ -10029,28 +9406,31 @@ var require_formdata = __commonJS({
       }
       append(name, value, filename = void 0) {
         webidl.brandCheck(this, _FormData);
-        webidl.argumentLengthCheck(arguments, 2, { header: "FormData.append" });
+        const prefix = "FormData.append";
+        webidl.argumentLengthCheck(arguments, 2, prefix);
         if (arguments.length === 3 && !isBlobLike(value)) {
           throw new TypeError(
             "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"
           );
         }
-        name = webidl.converters.USVString(name);
-        value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value);
-        filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0;
+        name = webidl.converters.USVString(name, prefix, "name");
+        value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "value", { strict: false }) : webidl.converters.USVString(value, prefix, "value");
+        filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "filename") : void 0;
         const entry = makeEntry(name, value, filename);
         this[kState].push(entry);
       }
       delete(name) {
         webidl.brandCheck(this, _FormData);
-        webidl.argumentLengthCheck(arguments, 1, { header: "FormData.delete" });
-        name = webidl.converters.USVString(name);
+        const prefix = "FormData.delete";
+        webidl.argumentLengthCheck(arguments, 1, prefix);
+        name = webidl.converters.USVString(name, prefix, "name");
         this[kState] = this[kState].filter((entry) => entry.name !== name);
       }
       get(name) {
         webidl.brandCheck(this, _FormData);
-        webidl.argumentLengthCheck(arguments, 1, { header: "FormData.get" });
-        name = webidl.converters.USVString(name);
+        const prefix = "FormData.get";
+        webidl.argumentLengthCheck(arguments, 1, prefix);
+        name = webidl.converters.USVString(name, prefix, "name");
         const idx = this[kState].findIndex((entry) => entry.name === name);
         if (idx === -1) {
           return null;
@@ -10059,27 +9439,30 @@ var require_formdata = __commonJS({
       }
       getAll(name) {
         webidl.brandCheck(this, _FormData);
-        webidl.argumentLengthCheck(arguments, 1, { header: "FormData.getAll" });
-        name = webidl.converters.USVString(name);
+        const prefix = "FormData.getAll";
+        webidl.argumentLengthCheck(arguments, 1, prefix);
+        name = webidl.converters.USVString(name, prefix, "name");
         return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value);
       }
       has(name) {
         webidl.brandCheck(this, _FormData);
-        webidl.argumentLengthCheck(arguments, 1, { header: "FormData.has" });
-        name = webidl.converters.USVString(name);
+        const prefix = "FormData.has";
+        webidl.argumentLengthCheck(arguments, 1, prefix);
+        name = webidl.converters.USVString(name, prefix, "name");
         return this[kState].findIndex((entry) => entry.name === name) !== -1;
       }
       set(name, value, filename = void 0) {
         webidl.brandCheck(this, _FormData);
-        webidl.argumentLengthCheck(arguments, 2, { header: "FormData.set" });
+        const prefix = "FormData.set";
+        webidl.argumentLengthCheck(arguments, 2, prefix);
         if (arguments.length === 3 && !isBlobLike(value)) {
           throw new TypeError(
             "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"
           );
         }
-        name = webidl.converters.USVString(name);
-        value = isBlobLike(value) ? webidl.converters.Blob(value, { strict: false }) : webidl.converters.USVString(value);
-        filename = arguments.length === 3 ? webidl.converters.USVString(filename) : void 0;
+        name = webidl.converters.USVString(name, prefix, "name");
+        value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "name", { strict: false }) : webidl.converters.USVString(value, prefix, "name");
+        filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "name") : void 0;
         const entry = makeEntry(name, value, filename);
         const idx = this[kState].findIndex((entry2) => entry2.name === name);
         if (idx !== -1) {
@@ -10135,7 +9518,7 @@ var require_formdata = __commonJS({
             type: value.type,
             lastModified: value.lastModified
           };
-          value = NativeFile && value instanceof NativeFile || value instanceof UndiciFile ? new File([value], filename, options) : new FileLike(value, filename, options);
+          value = value instanceof NativeFile ? new File([value], filename, options) : new FileLike(value, filename, options);
         }
       }
       return { name, value };
@@ -10144,18 +9527,18 @@ var require_formdata = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/formdata-parser.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/formdata-parser.js
 var require_formdata_parser = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/formdata-parser.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/formdata-parser.js"(exports, module2) {
     "use strict";
     var { isUSVString, bufferToLowerCasedHeaderName } = require_util();
     var { utf8DecodeBytes } = require_util3();
     var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url();
-    var { isFileLike, File: UndiciFile } = require_file();
+    var { isFileLike } = require_file();
     var { makeEntry } = require_formdata();
     var assert3 = require("node:assert");
     var { File: NodeFile } = require("node:buffer");
-    var File = globalThis.File ?? NodeFile ?? UndiciFile;
+    var File = globalThis.File ?? NodeFile;
     var formDataNameBuffer = Buffer.from('form-data; name="');
     var filenameBuffer = Buffer.from("; filename");
     var dd = Buffer.from("--");
@@ -10390,9 +9773,9 @@ var require_formdata_parser = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/body.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/body.js
 var require_body = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/web/fetch/body.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/body.js"(exports, module2) {
     "use strict";
     var util = require_util();
     var {
@@ -10582,18 +9965,18 @@ Content-Type: ${value.type || "application/octet-stream"}\r
               mimeType = serializeAMimeType(mimeType);
             }
             return new Blob2([bytes], { type: mimeType });
-          }, instance);
+          }, instance, false);
         },
         arrayBuffer() {
           return consumeBody(this, (bytes) => {
-            return new Uint8Array(bytes).buffer;
-          }, instance);
+            return bytes.buffer;
+          }, instance, true);
         },
         text() {
-          return consumeBody(this, utf8DecodeBytes, instance);
+          return consumeBody(this, utf8DecodeBytes, instance, false);
         },
         json() {
-          return consumeBody(this, parseJSONFromBytes, instance);
+          return consumeBody(this, parseJSONFromBytes, instance, false);
         },
         formData() {
           return consumeBody(this, (value) => {
@@ -10622,7 +10005,12 @@ Content-Type: ${value.type || "application/octet-stream"}\r
             throw new TypeError(
               'Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".'
             );
-          }, instance);
+          }, instance, false);
+        },
+        bytes() {
+          return consumeBody(this, (bytes) => {
+            return new Uint8Array(bytes.buffer, 0, bytes.byteLength);
+          }, instance, true);
         }
       };
       return methods;
@@ -10630,10 +10018,10 @@ Content-Type: ${value.type || "application/octet-stream"}\r
     function mixinBody(prototype) {
       Object.assign(prototype.prototype, bodyMixinMethods(prototype));
     }
-    async function consumeBody(object, convertBytesToJSValue, instance) {
+    async function consumeBody(object, convertBytesToJSValue, instance, shouldClone) {
       webidl.brandCheck(object, instance);
       if (bodyUnusable(object[kState].body)) {
-        throw new TypeError("Body is unusable");
+        throw new TypeError("Body is unusable: Body has already been read");
       }
       throwIfAborted(object[kState]);
       const promise = createDeferredPromise();
@@ -10646,10 +10034,10 @@ Content-Type: ${value.type || "application/octet-stream"}\r
         }
       };
       if (object[kState].body == null) {
-        successSteps(new Uint8Array());
+        successSteps(Buffer.allocUnsafe(0));
         return promise.promise;
       }
-      await fullyReadBody(object[kState].body, successSteps, errorSteps);
+      await fullyReadBody(object[kState].body, successSteps, errorSteps, shouldClone);
       return promise.promise;
     }
     function bodyUnusable(body) {
@@ -10675,9 +10063,9 @@ Content-Type: ${value.type || "application/octet-stream"}\r
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/client-h1.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client-h1.js
 var require_client_h1 = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/client-h1.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client-h1.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var util = require_util();
@@ -11489,7 +10877,7 @@ upgrade: ${upgrade}\r
         setImmediate(onClose);
       }
     }
-    async function writeBuffer({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {
+    function writeBuffer({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {
       try {
         if (!body) {
           if (contentLength === 0) {
@@ -11690,9 +11078,9 @@ ${len.toString(16)}\r
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/client-h2.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client-h2.js
 var require_client_h2 = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/client-h2.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client-h2.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { pipeline } = require("node:stream");
@@ -11852,11 +11240,10 @@ var require_client_h2 = __commonJS({
       util.destroy(this[kSocket], err);
     }
     function onHTTP2GoAway(code) {
-      const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`);
+      const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`);
       this[kSocket][kError] = err;
       this[kClient][kOnError](err);
       this.unref();
-      this.destroy();
       util.destroy(this[kSocket], err);
     }
     function shouldSendContentLength(method) {
@@ -12055,6 +11442,7 @@ var require_client_h2 = __commonJS({
           }
         } else if (util.isStream(body)) {
           writeStream({
+            abort,
             body,
             client,
             request,
@@ -12066,6 +11454,7 @@ var require_client_h2 = __commonJS({
           });
         } else if (util.isIterable(body)) {
           writeIterable({
+            abort,
             body,
             client,
             request,
@@ -12190,9 +11579,9 @@ var require_client_h2 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/handler/redirect-handler.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/handler/redirect-handler.js
 var require_redirect_handler = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/handler/redirect-handler.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/handler/redirect-handler.js"(exports, module2) {
     "use strict";
     var util = require_util();
     var { kBodyUsed } = require_symbols();
@@ -12349,9 +11738,9 @@ var require_redirect_handler = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js
 var require_redirect_interceptor = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js"(exports, module2) {
     "use strict";
     var RedirectHandler = require_redirect_handler();
     function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {
@@ -12371,9 +11760,9 @@ var require_redirect_interceptor = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/client.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client.js
 var require_client = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/client.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client.js"(exports, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var net = require("node:net");
@@ -12544,7 +11933,7 @@ var require_client = __commonJS({
             allowH2,
             socketPath,
             timeout: connectTimeout,
-            ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
+            ...autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
             ...connect2
           });
         }
@@ -12565,7 +11954,7 @@ var require_client = __commonJS({
         this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize;
         this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout;
         this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 6e5 : keepAliveMaxTimeout;
-        this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold;
+        this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold;
         this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout];
         this[kServerName] = null;
         this[kLocalAddress] = localAddress != null ? localAddress : null;
@@ -12871,9 +12260,9 @@ var require_client = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/pool.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool.js
 var require_pool = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/pool.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool.js"(exports, module2) {
     "use strict";
     var {
       PoolBase,
@@ -12926,7 +12315,7 @@ var require_pool = __commonJS({
             allowH2,
             socketPath,
             timeout: connectTimeout,
-            ...util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
+            ...autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
             ...connect
           });
         }
@@ -12954,9 +12343,9 @@ var require_pool = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/agent.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/agent.js
 var require_agent = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/agent.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/agent.js"(exports, module2) {
     "use strict";
     var { InvalidArgumentError } = require_errors();
     var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
@@ -13051,9 +12440,9 @@ var require_agent = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/proxy-agent.js
+// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/proxy-agent.js
 var require_proxy_agent = __commonJS({
-  ".yarn/cache/undici-npm-6.13.0-1545cd855e-b1b0456e7d.zip/node_modules/undici/lib/dispatcher/proxy-agent.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/proxy-agent.js"(exports, module2) {
     "use strict";
     var { kProxy, kClose, kDestroy, kInterceptors } = require_symbols();
     var { URL: URL2 } = require("node:url");
@@ -14693,801 +14082,1114 @@ var require_minizlib = __commonJS({
       constructor(opts) {
         super(opts, "Gunzip");
       }
-    };
-    var DeflateRaw = class extends Zlib {
-      constructor(opts) {
-        super(opts, "DeflateRaw");
+    };
+    var DeflateRaw = class extends Zlib {
+      constructor(opts) {
+        super(opts, "DeflateRaw");
+      }
+    };
+    var InflateRaw = class extends Zlib {
+      constructor(opts) {
+        super(opts, "InflateRaw");
+      }
+    };
+    var Unzip = class extends Zlib {
+      constructor(opts) {
+        super(opts, "Unzip");
+      }
+    };
+    var Brotli = class extends ZlibBase {
+      constructor(opts, mode) {
+        opts = opts || {};
+        opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS;
+        opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH;
+        super(opts, mode);
+        this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH;
+      }
+    };
+    var BrotliCompress = class extends Brotli {
+      constructor(opts) {
+        super(opts, "BrotliCompress");
+      }
+    };
+    var BrotliDecompress = class extends Brotli {
+      constructor(opts) {
+        super(opts, "BrotliDecompress");
+      }
+    };
+    exports.Deflate = Deflate;
+    exports.Inflate = Inflate;
+    exports.Gzip = Gzip;
+    exports.Gunzip = Gunzip;
+    exports.DeflateRaw = DeflateRaw;
+    exports.InflateRaw = InflateRaw;
+    exports.Unzip = Unzip;
+    if (typeof realZlib.BrotliCompress === "function") {
+      exports.BrotliCompress = BrotliCompress;
+      exports.BrotliDecompress = BrotliDecompress;
+    } else {
+      exports.BrotliCompress = exports.BrotliDecompress = class {
+        constructor() {
+          throw new Error("Brotli is not supported in this version of Node.js");
+        }
+      };
+    }
+  }
+});
+
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js
+var require_normalize_windows_path = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js"(exports, module2) {
+    var platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
+    module2.exports = platform !== "win32" ? (p) => p : (p) => p && p.replace(/\\/g, "/");
+  }
+});
+
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js
+var require_read_entry = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js"(exports, module2) {
+    "use strict";
+    var { Minipass } = require_minipass();
+    var normPath = require_normalize_windows_path();
+    var SLURP = Symbol("slurp");
+    module2.exports = class ReadEntry extends Minipass {
+      constructor(header, ex, gex) {
+        super();
+        this.pause();
+        this.extended = ex;
+        this.globalExtended = gex;
+        this.header = header;
+        this.startBlockSize = 512 * Math.ceil(header.size / 512);
+        this.blockRemain = this.startBlockSize;
+        this.remain = header.size;
+        this.type = header.type;
+        this.meta = false;
+        this.ignore = false;
+        switch (this.type) {
+          case "File":
+          case "OldFile":
+          case "Link":
+          case "SymbolicLink":
+          case "CharacterDevice":
+          case "BlockDevice":
+          case "Directory":
+          case "FIFO":
+          case "ContiguousFile":
+          case "GNUDumpDir":
+            break;
+          case "NextFileHasLongLinkpath":
+          case "NextFileHasLongPath":
+          case "OldGnuLongPath":
+          case "GlobalExtendedHeader":
+          case "ExtendedHeader":
+          case "OldExtendedHeader":
+            this.meta = true;
+            break;
+          default:
+            this.ignore = true;
+        }
+        this.path = normPath(header.path);
+        this.mode = header.mode;
+        if (this.mode) {
+          this.mode = this.mode & 4095;
+        }
+        this.uid = header.uid;
+        this.gid = header.gid;
+        this.uname = header.uname;
+        this.gname = header.gname;
+        this.size = header.size;
+        this.mtime = header.mtime;
+        this.atime = header.atime;
+        this.ctime = header.ctime;
+        this.linkpath = normPath(header.linkpath);
+        this.uname = header.uname;
+        this.gname = header.gname;
+        if (ex) {
+          this[SLURP](ex);
+        }
+        if (gex) {
+          this[SLURP](gex, true);
+        }
+      }
+      write(data) {
+        const writeLen = data.length;
+        if (writeLen > this.blockRemain) {
+          throw new Error("writing more to entry than is appropriate");
+        }
+        const r = this.remain;
+        const br = this.blockRemain;
+        this.remain = Math.max(0, r - writeLen);
+        this.blockRemain = Math.max(0, br - writeLen);
+        if (this.ignore) {
+          return true;
+        }
+        if (r >= writeLen) {
+          return super.write(data);
+        }
+        return super.write(data.slice(0, r));
+      }
+      [SLURP](ex, global2) {
+        for (const k in ex) {
+          if (ex[k] !== null && ex[k] !== void 0 && !(global2 && k === "path")) {
+            this[k] = k === "path" || k === "linkpath" ? normPath(ex[k]) : ex[k];
+          }
+        }
+      }
+    };
+  }
+});
+
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js
+var require_types = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js"(exports) {
+    "use strict";
+    exports.name = /* @__PURE__ */ new Map([
+      ["0", "File"],
+      // same as File
+      ["", "OldFile"],
+      ["1", "Link"],
+      ["2", "SymbolicLink"],
+      // Devices and FIFOs aren't fully supported
+      // they are parsed, but skipped when unpacking
+      ["3", "CharacterDevice"],
+      ["4", "BlockDevice"],
+      ["5", "Directory"],
+      ["6", "FIFO"],
+      // same as File
+      ["7", "ContiguousFile"],
+      // pax headers
+      ["g", "GlobalExtendedHeader"],
+      ["x", "ExtendedHeader"],
+      // vendor-specific stuff
+      // skip
+      ["A", "SolarisACL"],
+      // like 5, but with data, which should be skipped
+      ["D", "GNUDumpDir"],
+      // metadata only, skip
+      ["I", "Inode"],
+      // data = link path of next file
+      ["K", "NextFileHasLongLinkpath"],
+      // data = path of next file
+      ["L", "NextFileHasLongPath"],
+      // skip
+      ["M", "ContinuationFile"],
+      // like L
+      ["N", "OldGnuLongPath"],
+      // skip
+      ["S", "SparseFile"],
+      // skip
+      ["V", "TapeVolumeHeader"],
+      // like x
+      ["X", "OldExtendedHeader"]
+    ]);
+    exports.code = new Map(Array.from(exports.name).map((kv) => [kv[1], kv[0]]));
+  }
+});
+
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js
+var require_large_numbers = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js"(exports, module2) {
+    "use strict";
+    var encode = (num, buf) => {
+      if (!Number.isSafeInteger(num)) {
+        throw Error("cannot encode number outside of javascript safe integer range");
+      } else if (num < 0) {
+        encodeNegative(num, buf);
+      } else {
+        encodePositive(num, buf);
+      }
+      return buf;
+    };
+    var encodePositive = (num, buf) => {
+      buf[0] = 128;
+      for (var i = buf.length; i > 1; i--) {
+        buf[i - 1] = num & 255;
+        num = Math.floor(num / 256);
+      }
+    };
+    var encodeNegative = (num, buf) => {
+      buf[0] = 255;
+      var flipped = false;
+      num = num * -1;
+      for (var i = buf.length; i > 1; i--) {
+        var byte = num & 255;
+        num = Math.floor(num / 256);
+        if (flipped) {
+          buf[i - 1] = onesComp(byte);
+        } else if (byte === 0) {
+          buf[i - 1] = 0;
+        } else {
+          flipped = true;
+          buf[i - 1] = twosComp(byte);
+        }
+      }
+    };
+    var parse = (buf) => {
+      const pre = buf[0];
+      const value = pre === 128 ? pos(buf.slice(1, buf.length)) : pre === 255 ? twos(buf) : null;
+      if (value === null) {
+        throw Error("invalid base256 encoding");
+      }
+      if (!Number.isSafeInteger(value)) {
+        throw Error("parsed number outside of javascript safe integer range");
+      }
+      return value;
+    };
+    var twos = (buf) => {
+      var len = buf.length;
+      var sum = 0;
+      var flipped = false;
+      for (var i = len - 1; i > -1; i--) {
+        var byte = buf[i];
+        var f;
+        if (flipped) {
+          f = onesComp(byte);
+        } else if (byte === 0) {
+          f = byte;
+        } else {
+          flipped = true;
+          f = twosComp(byte);
+        }
+        if (f !== 0) {
+          sum -= f * Math.pow(256, len - i - 1);
+        }
+      }
+      return sum;
+    };
+    var pos = (buf) => {
+      var len = buf.length;
+      var sum = 0;
+      for (var i = len - 1; i > -1; i--) {
+        var byte = buf[i];
+        if (byte !== 0) {
+          sum += byte * Math.pow(256, len - i - 1);
+        }
+      }
+      return sum;
+    };
+    var onesComp = (byte) => (255 ^ byte) & 255;
+    var twosComp = (byte) => (255 ^ byte) + 1 & 255;
+    module2.exports = {
+      encode,
+      parse
+    };
+  }
+});
+
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js
+var require_header = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js"(exports, module2) {
+    "use strict";
+    var types = require_types();
+    var pathModule = require("path").posix;
+    var large = require_large_numbers();
+    var SLURP = Symbol("slurp");
+    var TYPE = Symbol("type");
+    var Header = class {
+      constructor(data, off, ex, gex) {
+        this.cksumValid = false;
+        this.needPax = false;
+        this.nullBlock = false;
+        this.block = null;
+        this.path = null;
+        this.mode = null;
+        this.uid = null;
+        this.gid = null;
+        this.size = null;
+        this.mtime = null;
+        this.cksum = null;
+        this[TYPE] = "0";
+        this.linkpath = null;
+        this.uname = null;
+        this.gname = null;
+        this.devmaj = 0;
+        this.devmin = 0;
+        this.atime = null;
+        this.ctime = null;
+        if (Buffer.isBuffer(data)) {
+          this.decode(data, off || 0, ex, gex);
+        } else if (data) {
+          this.set(data);
+        }
+      }
+      decode(buf, off, ex, gex) {
+        if (!off) {
+          off = 0;
+        }
+        if (!buf || !(buf.length >= off + 512)) {
+          throw new Error("need 512 bytes for header");
+        }
+        this.path = decString(buf, off, 100);
+        this.mode = decNumber(buf, off + 100, 8);
+        this.uid = decNumber(buf, off + 108, 8);
+        this.gid = decNumber(buf, off + 116, 8);
+        this.size = decNumber(buf, off + 124, 12);
+        this.mtime = decDate(buf, off + 136, 12);
+        this.cksum = decNumber(buf, off + 148, 12);
+        this[SLURP](ex);
+        this[SLURP](gex, true);
+        this[TYPE] = decString(buf, off + 156, 1);
+        if (this[TYPE] === "") {
+          this[TYPE] = "0";
+        }
+        if (this[TYPE] === "0" && this.path.slice(-1) === "/") {
+          this[TYPE] = "5";
+        }
+        if (this[TYPE] === "5") {
+          this.size = 0;
+        }
+        this.linkpath = decString(buf, off + 157, 100);
+        if (buf.slice(off + 257, off + 265).toString() === "ustar\x0000") {
+          this.uname = decString(buf, off + 265, 32);
+          this.gname = decString(buf, off + 297, 32);
+          this.devmaj = decNumber(buf, off + 329, 8);
+          this.devmin = decNumber(buf, off + 337, 8);
+          if (buf[off + 475] !== 0) {
+            const prefix = decString(buf, off + 345, 155);
+            this.path = prefix + "/" + this.path;
+          } else {
+            const prefix = decString(buf, off + 345, 130);
+            if (prefix) {
+              this.path = prefix + "/" + this.path;
+            }
+            this.atime = decDate(buf, off + 476, 12);
+            this.ctime = decDate(buf, off + 488, 12);
+          }
+        }
+        let sum = 8 * 32;
+        for (let i = off; i < off + 148; i++) {
+          sum += buf[i];
+        }
+        for (let i = off + 156; i < off + 512; i++) {
+          sum += buf[i];
+        }
+        this.cksumValid = sum === this.cksum;
+        if (this.cksum === null && sum === 8 * 32) {
+          this.nullBlock = true;
+        }
+      }
+      [SLURP](ex, global2) {
+        for (const k in ex) {
+          if (ex[k] !== null && ex[k] !== void 0 && !(global2 && k === "path")) {
+            this[k] = ex[k];
+          }
+        }
+      }
+      encode(buf, off) {
+        if (!buf) {
+          buf = this.block = Buffer.alloc(512);
+          off = 0;
+        }
+        if (!off) {
+          off = 0;
+        }
+        if (!(buf.length >= off + 512)) {
+          throw new Error("need 512 bytes for header");
+        }
+        const prefixSize = this.ctime || this.atime ? 130 : 155;
+        const split = splitPrefix(this.path || "", prefixSize);
+        const path10 = split[0];
+        const prefix = split[1];
+        this.needPax = split[2];
+        this.needPax = encString(buf, off, 100, path10) || this.needPax;
+        this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax;
+        this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax;
+        this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax;
+        this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax;
+        this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax;
+        buf[off + 156] = this[TYPE].charCodeAt(0);
+        this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax;
+        buf.write("ustar\x0000", off + 257, 8);
+        this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax;
+        this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax;
+        this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax;
+        this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax;
+        this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax;
+        if (buf[off + 475] !== 0) {
+          this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax;
+        } else {
+          this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax;
+          this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax;
+          this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax;
+        }
+        let sum = 8 * 32;
+        for (let i = off; i < off + 148; i++) {
+          sum += buf[i];
+        }
+        for (let i = off + 156; i < off + 512; i++) {
+          sum += buf[i];
+        }
+        this.cksum = sum;
+        encNumber(buf, off + 148, 8, this.cksum);
+        this.cksumValid = true;
+        return this.needPax;
+      }
+      set(data) {
+        for (const i in data) {
+          if (data[i] !== null && data[i] !== void 0) {
+            this[i] = data[i];
+          }
+        }
       }
-    };
-    var InflateRaw = class extends Zlib {
-      constructor(opts) {
-        super(opts, "InflateRaw");
+      get type() {
+        return types.name.get(this[TYPE]) || this[TYPE];
       }
-    };
-    var Unzip = class extends Zlib {
-      constructor(opts) {
-        super(opts, "Unzip");
+      get typeKey() {
+        return this[TYPE];
       }
-    };
-    var Brotli = class extends ZlibBase {
-      constructor(opts, mode) {
-        opts = opts || {};
-        opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS;
-        opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH;
-        super(opts, mode);
-        this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH;
+      set type(type) {
+        if (types.code.has(type)) {
+          this[TYPE] = types.code.get(type);
+        } else {
+          this[TYPE] = type;
+        }
       }
     };
-    var BrotliCompress = class extends Brotli {
-      constructor(opts) {
-        super(opts, "BrotliCompress");
+    var splitPrefix = (p, prefixSize) => {
+      const pathSize = 100;
+      let pp = p;
+      let prefix = "";
+      let ret;
+      const root = pathModule.parse(p).root || ".";
+      if (Buffer.byteLength(pp) < pathSize) {
+        ret = [pp, prefix, false];
+      } else {
+        prefix = pathModule.dirname(pp);
+        pp = pathModule.basename(pp);
+        do {
+          if (Buffer.byteLength(pp) <= pathSize && Buffer.byteLength(prefix) <= prefixSize) {
+            ret = [pp, prefix, false];
+          } else if (Buffer.byteLength(pp) > pathSize && Buffer.byteLength(prefix) <= prefixSize) {
+            ret = [pp.slice(0, pathSize - 1), prefix, true];
+          } else {
+            pp = pathModule.join(pathModule.basename(prefix), pp);
+            prefix = pathModule.dirname(prefix);
+          }
+        } while (prefix !== root && !ret);
+        if (!ret) {
+          ret = [p.slice(0, pathSize - 1), "", true];
+        }
       }
+      return ret;
     };
-    var BrotliDecompress = class extends Brotli {
-      constructor(opts) {
-        super(opts, "BrotliDecompress");
-      }
+    var decString = (buf, off, size) => buf.slice(off, off + size).toString("utf8").replace(/\0.*/, "");
+    var decDate = (buf, off, size) => numToDate(decNumber(buf, off, size));
+    var numToDate = (num) => num === null ? null : new Date(num * 1e3);
+    var decNumber = (buf, off, size) => buf[off] & 128 ? large.parse(buf.slice(off, off + size)) : decSmallNumber(buf, off, size);
+    var nanNull = (value) => isNaN(value) ? null : value;
+    var decSmallNumber = (buf, off, size) => nanNull(parseInt(
+      buf.slice(off, off + size).toString("utf8").replace(/\0.*$/, "").trim(),
+      8
+    ));
+    var MAXNUM = {
+      12: 8589934591,
+      8: 2097151
     };
-    exports.Deflate = Deflate;
-    exports.Inflate = Inflate;
-    exports.Gzip = Gzip;
-    exports.Gunzip = Gunzip;
-    exports.DeflateRaw = DeflateRaw;
-    exports.InflateRaw = InflateRaw;
-    exports.Unzip = Unzip;
-    if (typeof realZlib.BrotliCompress === "function") {
-      exports.BrotliCompress = BrotliCompress;
-      exports.BrotliDecompress = BrotliDecompress;
-    } else {
-      exports.BrotliCompress = exports.BrotliDecompress = class {
-        constructor() {
-          throw new Error("Brotli is not supported in this version of Node.js");
-        }
-      };
-    }
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js
-var require_normalize_windows_path = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js"(exports, module2) {
-    var platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
-    module2.exports = platform !== "win32" ? (p) => p : (p) => p && p.replace(/\\/g, "/");
+    var encNumber = (buf, off, size, number) => number === null ? false : number > MAXNUM[size] || number < 0 ? (large.encode(number, buf.slice(off, off + size)), true) : (encSmallNumber(buf, off, size, number), false);
+    var encSmallNumber = (buf, off, size, number) => buf.write(octalString(number, size), off, size, "ascii");
+    var octalString = (number, size) => padOctal(Math.floor(number).toString(8), size);
+    var padOctal = (string, size) => (string.length === size - 1 ? string : new Array(size - string.length - 1).join("0") + string + " ") + "\0";
+    var encDate = (buf, off, size, date) => date === null ? false : encNumber(buf, off, size, date.getTime() / 1e3);
+    var NULLS = new Array(156).join("\0");
+    var encString = (buf, off, size, string) => string === null ? false : (buf.write(string + NULLS, off, size, "utf8"), string.length !== Buffer.byteLength(string) || string.length > size);
+    module2.exports = Header;
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js
-var require_read_entry = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js"(exports, module2) {
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js
+var require_pax = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js"(exports, module2) {
     "use strict";
-    var { Minipass } = require_minipass();
-    var normPath = require_normalize_windows_path();
-    var SLURP = Symbol("slurp");
-    module2.exports = class ReadEntry extends Minipass {
-      constructor(header, ex, gex) {
-        super();
-        this.pause();
-        this.extended = ex;
-        this.globalExtended = gex;
-        this.header = header;
-        this.startBlockSize = 512 * Math.ceil(header.size / 512);
-        this.blockRemain = this.startBlockSize;
-        this.remain = header.size;
-        this.type = header.type;
-        this.meta = false;
-        this.ignore = false;
-        switch (this.type) {
-          case "File":
-          case "OldFile":
-          case "Link":
-          case "SymbolicLink":
-          case "CharacterDevice":
-          case "BlockDevice":
-          case "Directory":
-          case "FIFO":
-          case "ContiguousFile":
-          case "GNUDumpDir":
-            break;
-          case "NextFileHasLongLinkpath":
-          case "NextFileHasLongPath":
-          case "OldGnuLongPath":
-          case "GlobalExtendedHeader":
-          case "ExtendedHeader":
-          case "OldExtendedHeader":
-            this.meta = true;
-            break;
-          default:
-            this.ignore = true;
-        }
-        this.path = normPath(header.path);
-        this.mode = header.mode;
-        if (this.mode) {
-          this.mode = this.mode & 4095;
-        }
-        this.uid = header.uid;
-        this.gid = header.gid;
-        this.uname = header.uname;
-        this.gname = header.gname;
-        this.size = header.size;
-        this.mtime = header.mtime;
-        this.atime = header.atime;
-        this.ctime = header.ctime;
-        this.linkpath = normPath(header.linkpath);
-        this.uname = header.uname;
-        this.gname = header.gname;
-        if (ex) {
-          this[SLURP](ex);
-        }
-        if (gex) {
-          this[SLURP](gex, true);
-        }
+    var Header = require_header();
+    var path10 = require("path");
+    var Pax = class {
+      constructor(obj, global2) {
+        this.atime = obj.atime || null;
+        this.charset = obj.charset || null;
+        this.comment = obj.comment || null;
+        this.ctime = obj.ctime || null;
+        this.gid = obj.gid || null;
+        this.gname = obj.gname || null;
+        this.linkpath = obj.linkpath || null;
+        this.mtime = obj.mtime || null;
+        this.path = obj.path || null;
+        this.size = obj.size || null;
+        this.uid = obj.uid || null;
+        this.uname = obj.uname || null;
+        this.dev = obj.dev || null;
+        this.ino = obj.ino || null;
+        this.nlink = obj.nlink || null;
+        this.global = global2 || false;
       }
-      write(data) {
-        const writeLen = data.length;
-        if (writeLen > this.blockRemain) {
-          throw new Error("writing more to entry than is appropriate");
+      encode() {
+        const body = this.encodeBody();
+        if (body === "") {
+          return null;
         }
-        const r = this.remain;
-        const br = this.blockRemain;
-        this.remain = Math.max(0, r - writeLen);
-        this.blockRemain = Math.max(0, br - writeLen);
-        if (this.ignore) {
-          return true;
+        const bodyLen = Buffer.byteLength(body);
+        const bufLen = 512 * Math.ceil(1 + bodyLen / 512);
+        const buf = Buffer.allocUnsafe(bufLen);
+        for (let i = 0; i < 512; i++) {
+          buf[i] = 0;
         }
-        if (r >= writeLen) {
-          return super.write(data);
+        new Header({
+          // XXX split the path
+          // then the path should be PaxHeader + basename, but less than 99,
+          // prepend with the dirname
+          path: ("PaxHeader/" + path10.basename(this.path)).slice(0, 99),
+          mode: this.mode || 420,
+          uid: this.uid || null,
+          gid: this.gid || null,
+          size: bodyLen,
+          mtime: this.mtime || null,
+          type: this.global ? "GlobalExtendedHeader" : "ExtendedHeader",
+          linkpath: "",
+          uname: this.uname || "",
+          gname: this.gname || "",
+          devmaj: 0,
+          devmin: 0,
+          atime: this.atime || null,
+          ctime: this.ctime || null
+        }).encode(buf);
+        buf.write(body, 512, bodyLen, "utf8");
+        for (let i = bodyLen + 512; i < buf.length; i++) {
+          buf[i] = 0;
         }
-        return super.write(data.slice(0, r));
+        return buf;
       }
-      [SLURP](ex, global2) {
-        for (const k in ex) {
-          if (ex[k] !== null && ex[k] !== void 0 && !(global2 && k === "path")) {
-            this[k] = k === "path" || k === "linkpath" ? normPath(ex[k]) : ex[k];
-          }
+      encodeBody() {
+        return this.encodeField("path") + this.encodeField("ctime") + this.encodeField("atime") + this.encodeField("dev") + this.encodeField("ino") + this.encodeField("nlink") + this.encodeField("charset") + this.encodeField("comment") + this.encodeField("gid") + this.encodeField("gname") + this.encodeField("linkpath") + this.encodeField("mtime") + this.encodeField("size") + this.encodeField("uid") + this.encodeField("uname");
+      }
+      encodeField(field) {
+        if (this[field] === null || this[field] === void 0) {
+          return "";
+        }
+        const v = this[field] instanceof Date ? this[field].getTime() / 1e3 : this[field];
+        const s = " " + (field === "dev" || field === "ino" || field === "nlink" ? "SCHILY." : "") + field + "=" + v + "\n";
+        const byteLen = Buffer.byteLength(s);
+        let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1;
+        if (byteLen + digits >= Math.pow(10, digits)) {
+          digits += 1;
         }
+        const len = digits + byteLen;
+        return len + s;
+      }
+    };
+    Pax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g);
+    var merge = (a, b) => b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a;
+    var parseKV = (string) => string.replace(/\n$/, "").split("\n").reduce(parseKVLine, /* @__PURE__ */ Object.create(null));
+    var parseKVLine = (set, line) => {
+      const n = parseInt(line, 10);
+      if (n !== Buffer.byteLength(line) + 1) {
+        return set;
+      }
+      line = line.slice((n + " ").length);
+      const kv = line.split("=");
+      const k = kv.shift().replace(/^SCHILY\.(dev|ino|nlink)/, "$1");
+      if (!k) {
+        return set;
       }
+      const v = kv.join("=");
+      set[k] = /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ? new Date(v * 1e3) : /^[0-9]+$/.test(v) ? +v : v;
+      return set;
     };
+    module2.exports = Pax;
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js
-var require_types = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js"(exports) {
-    "use strict";
-    exports.name = /* @__PURE__ */ new Map([
-      ["0", "File"],
-      // same as File
-      ["", "OldFile"],
-      ["1", "Link"],
-      ["2", "SymbolicLink"],
-      // Devices and FIFOs aren't fully supported
-      // they are parsed, but skipped when unpacking
-      ["3", "CharacterDevice"],
-      ["4", "BlockDevice"],
-      ["5", "Directory"],
-      ["6", "FIFO"],
-      // same as File
-      ["7", "ContiguousFile"],
-      // pax headers
-      ["g", "GlobalExtendedHeader"],
-      ["x", "ExtendedHeader"],
-      // vendor-specific stuff
-      // skip
-      ["A", "SolarisACL"],
-      // like 5, but with data, which should be skipped
-      ["D", "GNUDumpDir"],
-      // metadata only, skip
-      ["I", "Inode"],
-      // data = link path of next file
-      ["K", "NextFileHasLongLinkpath"],
-      // data = path of next file
-      ["L", "NextFileHasLongPath"],
-      // skip
-      ["M", "ContinuationFile"],
-      // like L
-      ["N", "OldGnuLongPath"],
-      // skip
-      ["S", "SparseFile"],
-      // skip
-      ["V", "TapeVolumeHeader"],
-      // like x
-      ["X", "OldExtendedHeader"]
-    ]);
-    exports.code = new Map(Array.from(exports.name).map((kv) => [kv[1], kv[0]]));
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js
+var require_strip_trailing_slashes = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js"(exports, module2) {
+    module2.exports = (str) => {
+      let i = str.length - 1;
+      let slashesStart = -1;
+      while (i > -1 && str.charAt(i) === "/") {
+        slashesStart = i;
+        i--;
+      }
+      return slashesStart === -1 ? str : str.slice(0, slashesStart);
+    };
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js
-var require_large_numbers = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js"(exports, module2) {
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js
+var require_warn_mixin = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js"(exports, module2) {
     "use strict";
-    var encode = (num, buf) => {
-      if (!Number.isSafeInteger(num)) {
-        throw Error("cannot encode number outside of javascript safe integer range");
-      } else if (num < 0) {
-        encodeNegative(num, buf);
-      } else {
-        encodePositive(num, buf);
-      }
-      return buf;
-    };
-    var encodePositive = (num, buf) => {
-      buf[0] = 128;
-      for (var i = buf.length; i > 1; i--) {
-        buf[i - 1] = num & 255;
-        num = Math.floor(num / 256);
-      }
-    };
-    var encodeNegative = (num, buf) => {
-      buf[0] = 255;
-      var flipped = false;
-      num = num * -1;
-      for (var i = buf.length; i > 1; i--) {
-        var byte = num & 255;
-        num = Math.floor(num / 256);
-        if (flipped) {
-          buf[i - 1] = onesComp(byte);
-        } else if (byte === 0) {
-          buf[i - 1] = 0;
+    module2.exports = (Base) => class extends Base {
+      warn(code, message, data = {}) {
+        if (this.file) {
+          data.file = this.file;
+        }
+        if (this.cwd) {
+          data.cwd = this.cwd;
+        }
+        data.code = message instanceof Error && message.code || code;
+        data.tarCode = code;
+        if (!this.strict && data.recoverable !== false) {
+          if (message instanceof Error) {
+            data = Object.assign(message, data);
+            message = message.message;
+          }
+          this.emit("warn", data.tarCode, message, data);
+        } else if (message instanceof Error) {
+          this.emit("error", Object.assign(message, data));
         } else {
-          flipped = true;
-          buf[i - 1] = twosComp(byte);
+          this.emit("error", Object.assign(new Error(`${code}: ${message}`), data));
         }
       }
     };
-    var parse = (buf) => {
-      const pre = buf[0];
-      const value = pre === 128 ? pos(buf.slice(1, buf.length)) : pre === 255 ? twos(buf) : null;
-      if (value === null) {
-        throw Error("invalid base256 encoding");
-      }
-      if (!Number.isSafeInteger(value)) {
-        throw Error("parsed number outside of javascript safe integer range");
-      }
-      return value;
+  }
+});
+
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js
+var require_winchars = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js"(exports, module2) {
+    "use strict";
+    var raw = [
+      "|",
+      "<",
+      ">",
+      "?",
+      ":"
+    ];
+    var win = raw.map((char) => String.fromCharCode(61440 + char.charCodeAt(0)));
+    var toWin = new Map(raw.map((char, i) => [char, win[i]]));
+    var toRaw = new Map(win.map((char, i) => [char, raw[i]]));
+    module2.exports = {
+      encode: (s) => raw.reduce((s2, c) => s2.split(c).join(toWin.get(c)), s),
+      decode: (s) => win.reduce((s2, c) => s2.split(c).join(toRaw.get(c)), s)
     };
-    var twos = (buf) => {
-      var len = buf.length;
-      var sum = 0;
-      var flipped = false;
-      for (var i = len - 1; i > -1; i--) {
-        var byte = buf[i];
-        var f;
-        if (flipped) {
-          f = onesComp(byte);
-        } else if (byte === 0) {
-          f = byte;
-        } else {
-          flipped = true;
-          f = twosComp(byte);
-        }
-        if (f !== 0) {
-          sum -= f * Math.pow(256, len - i - 1);
-        }
+  }
+});
+
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js
+var require_strip_absolute_path = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js"(exports, module2) {
+    var { isAbsolute, parse } = require("path").win32;
+    module2.exports = (path10) => {
+      let r = "";
+      let parsed = parse(path10);
+      while (isAbsolute(path10) || parsed.root) {
+        const root = path10.charAt(0) === "/" && path10.slice(0, 4) !== "//?/" ? "/" : parsed.root;
+        path10 = path10.slice(root.length);
+        r += root;
+        parsed = parse(path10);
       }
-      return sum;
+      return [r, path10];
     };
-    var pos = (buf) => {
-      var len = buf.length;
-      var sum = 0;
-      for (var i = len - 1; i > -1; i--) {
-        var byte = buf[i];
-        if (byte !== 0) {
-          sum += byte * Math.pow(256, len - i - 1);
-        }
+  }
+});
+
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js
+var require_mode_fix = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js"(exports, module2) {
+    "use strict";
+    module2.exports = (mode, isDir, portable) => {
+      mode &= 4095;
+      if (portable) {
+        mode = (mode | 384) & ~18;
       }
-      return sum;
-    };
-    var onesComp = (byte) => (255 ^ byte) & 255;
-    var twosComp = (byte) => (255 ^ byte) + 1 & 255;
-    module2.exports = {
-      encode,
-      parse
+      if (isDir) {
+        if (mode & 256) {
+          mode |= 64;
+        }
+        if (mode & 32) {
+          mode |= 8;
+        }
+        if (mode & 4) {
+          mode |= 1;
+        }
+      }
+      return mode;
     };
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js
-var require_header = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js"(exports, module2) {
+// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js
+var require_write_entry = __commonJS({
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js"(exports, module2) {
     "use strict";
-    var types = require_types();
-    var pathModule = require("path").posix;
-    var large = require_large_numbers();
-    var SLURP = Symbol("slurp");
-    var TYPE = Symbol("type");
-    var Header = class {
-      constructor(data, off, ex, gex) {
-        this.cksumValid = false;
-        this.needPax = false;
-        this.nullBlock = false;
-        this.block = null;
-        this.path = null;
-        this.mode = null;
-        this.uid = null;
-        this.gid = null;
-        this.size = null;
-        this.mtime = null;
-        this.cksum = null;
-        this[TYPE] = "0";
-        this.linkpath = null;
-        this.uname = null;
-        this.gname = null;
-        this.devmaj = 0;
-        this.devmin = 0;
-        this.atime = null;
-        this.ctime = null;
-        if (Buffer.isBuffer(data)) {
-          this.decode(data, off || 0, ex, gex);
-        } else if (data) {
-          this.set(data);
-        }
+    var { Minipass } = require_minipass();
+    var Pax = require_pax();
+    var Header = require_header();
+    var fs8 = require("fs");
+    var path10 = require("path");
+    var normPath = require_normalize_windows_path();
+    var stripSlash = require_strip_trailing_slashes();
+    var prefixPath = (path11, prefix) => {
+      if (!prefix) {
+        return normPath(path11);
       }
-      decode(buf, off, ex, gex) {
-        if (!off) {
-          off = 0;
-        }
-        if (!buf || !(buf.length >= off + 512)) {
-          throw new Error("need 512 bytes for header");
+      path11 = normPath(path11).replace(/^\.(\/|$)/, "");
+      return stripSlash(prefix) + "/" + path11;
+    };
+    var maxReadSize = 16 * 1024 * 1024;
+    var PROCESS = Symbol("process");
+    var FILE = Symbol("file");
+    var DIRECTORY = Symbol("directory");
+    var SYMLINK = Symbol("symlink");
+    var HARDLINK = Symbol("hardlink");
+    var HEADER = Symbol("header");
+    var READ = Symbol("read");
+    var LSTAT = Symbol("lstat");
+    var ONLSTAT = Symbol("onlstat");
+    var ONREAD = Symbol("onread");
+    var ONREADLINK = Symbol("onreadlink");
+    var OPENFILE = Symbol("openfile");
+    var ONOPENFILE = Symbol("onopenfile");
+    var CLOSE = Symbol("close");
+    var MODE = Symbol("mode");
+    var AWAITDRAIN = Symbol("awaitDrain");
+    var ONDRAIN = Symbol("ondrain");
+    var PREFIX = Symbol("prefix");
+    var HAD_ERROR = Symbol("hadError");
+    var warner = require_warn_mixin();
+    var winchars = require_winchars();
+    var stripAbsolutePath = require_strip_absolute_path();
+    var modeFix = require_mode_fix();
+    var WriteEntry = warner(class WriteEntry extends Minipass {
+      constructor(p, opt) {
+        opt = opt || {};
+        super(opt);
+        if (typeof p !== "string") {
+          throw new TypeError("path is required");
         }
-        this.path = decString(buf, off, 100);
-        this.mode = decNumber(buf, off + 100, 8);
-        this.uid = decNumber(buf, off + 108, 8);
-        this.gid = decNumber(buf, off + 116, 8);
-        this.size = decNumber(buf, off + 124, 12);
-        this.mtime = decDate(buf, off + 136, 12);
-        this.cksum = decNumber(buf, off + 148, 12);
-        this[SLURP](ex);
-        this[SLURP](gex, true);
-        this[TYPE] = decString(buf, off + 156, 1);
-        if (this[TYPE] === "") {
-          this[TYPE] = "0";
+        this.path = normPath(p);
+        this.portable = !!opt.portable;
+        this.myuid = process.getuid && process.getuid() || 0;
+        this.myuser = process.env.USER || "";
+        this.maxReadSize = opt.maxReadSize || maxReadSize;
+        this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
+        this.statCache = opt.statCache || /* @__PURE__ */ new Map();
+        this.preservePaths = !!opt.preservePaths;
+        this.cwd = normPath(opt.cwd || process.cwd());
+        this.strict = !!opt.strict;
+        this.noPax = !!opt.noPax;
+        this.noMtime = !!opt.noMtime;
+        this.mtime = opt.mtime || null;
+        this.prefix = opt.prefix ? normPath(opt.prefix) : null;
+        this.fd = null;
+        this.blockLen = null;
+        this.blockRemain = null;
+        this.buf = null;
+        this.offset = null;
+        this.length = null;
+        this.pos = null;
+        this.remain = null;
+        if (typeof opt.onwarn === "function") {
+          this.on("warn", opt.onwarn);
         }
-        if (this[TYPE] === "0" && this.path.slice(-1) === "/") {
-          this[TYPE] = "5";
+        let pathWarn = false;
+        if (!this.preservePaths) {
+          const [root, stripped] = stripAbsolutePath(this.path);
+          if (root) {
+            this.path = stripped;
+            pathWarn = root;
+          }
         }
-        if (this[TYPE] === "5") {
-          this.size = 0;
+        this.win32 = !!opt.win32 || process.platform === "win32";
+        if (this.win32) {
+          this.path = winchars.decode(this.path.replace(/\\/g, "/"));
+          p = p.replace(/\\/g, "/");
         }
-        this.linkpath = decString(buf, off + 157, 100);
-        if (buf.slice(off + 257, off + 265).toString() === "ustar\x0000") {
-          this.uname = decString(buf, off + 265, 32);
-          this.gname = decString(buf, off + 297, 32);
-          this.devmaj = decNumber(buf, off + 329, 8);
-          this.devmin = decNumber(buf, off + 337, 8);
-          if (buf[off + 475] !== 0) {
-            const prefix = decString(buf, off + 345, 155);
-            this.path = prefix + "/" + this.path;
-          } else {
-            const prefix = decString(buf, off + 345, 130);
-            if (prefix) {
-              this.path = prefix + "/" + this.path;
-            }
-            this.atime = decDate(buf, off + 476, 12);
-            this.ctime = decDate(buf, off + 488, 12);
-          }
+        this.absolute = normPath(opt.absolute || path10.resolve(this.cwd, p));
+        if (this.path === "") {
+          this.path = "./";
         }
-        let sum = 8 * 32;
-        for (let i = off; i < off + 148; i++) {
-          sum += buf[i];
+        if (pathWarn) {
+          this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
+            entry: this,
+            path: pathWarn + this.path
+          });
         }
-        for (let i = off + 156; i < off + 512; i++) {
-          sum += buf[i];
+        if (this.statCache.has(this.absolute)) {
+          this[ONLSTAT](this.statCache.get(this.absolute));
+        } else {
+          this[LSTAT]();
         }
-        this.cksumValid = sum === this.cksum;
-        if (this.cksum === null && sum === 8 * 32) {
-          this.nullBlock = true;
+      }
+      emit(ev, ...data) {
+        if (ev === "error") {
+          this[HAD_ERROR] = true;
         }
+        return super.emit(ev, ...data);
       }
-      [SLURP](ex, global2) {
-        for (const k in ex) {
-          if (ex[k] !== null && ex[k] !== void 0 && !(global2 && k === "path")) {
-            this[k] = ex[k];
+      [LSTAT]() {
+        fs8.lstat(this.absolute, (er, stat) => {
+          if (er) {
+            return this.emit("error", er);
           }
-        }
+          this[ONLSTAT](stat);
+        });
       }
-      encode(buf, off) {
-        if (!buf) {
-          buf = this.block = Buffer.alloc(512);
-          off = 0;
-        }
-        if (!off) {
-          off = 0;
-        }
-        if (!(buf.length >= off + 512)) {
-          throw new Error("need 512 bytes for header");
-        }
-        const prefixSize = this.ctime || this.atime ? 130 : 155;
-        const split = splitPrefix(this.path || "", prefixSize);
-        const path10 = split[0];
-        const prefix = split[1];
-        this.needPax = split[2];
-        this.needPax = encString(buf, off, 100, path10) || this.needPax;
-        this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax;
-        this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax;
-        this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax;
-        this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax;
-        this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax;
-        buf[off + 156] = this[TYPE].charCodeAt(0);
-        this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax;
-        buf.write("ustar\x0000", off + 257, 8);
-        this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax;
-        this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax;
-        this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax;
-        this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax;
-        this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax;
-        if (buf[off + 475] !== 0) {
-          this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax;
-        } else {
-          this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax;
-          this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax;
-          this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax;
-        }
-        let sum = 8 * 32;
-        for (let i = off; i < off + 148; i++) {
-          sum += buf[i];
-        }
-        for (let i = off + 156; i < off + 512; i++) {
-          sum += buf[i];
+      [ONLSTAT](stat) {
+        this.statCache.set(this.absolute, stat);
+        this.stat = stat;
+        if (!stat.isFile()) {
+          stat.size = 0;
         }
-        this.cksum = sum;
-        encNumber(buf, off + 148, 8, this.cksum);
-        this.cksumValid = true;
-        return this.needPax;
+        this.type = getType(stat);
+        this.emit("stat", stat);
+        this[PROCESS]();
       }
-      set(data) {
-        for (const i in data) {
-          if (data[i] !== null && data[i] !== void 0) {
-            this[i] = data[i];
-          }
+      [PROCESS]() {
+        switch (this.type) {
+          case "File":
+            return this[FILE]();
+          case "Directory":
+            return this[DIRECTORY]();
+          case "SymbolicLink":
+            return this[SYMLINK]();
+          default:
+            return this.end();
         }
       }
-      get type() {
-        return types.name.get(this[TYPE]) || this[TYPE];
+      [MODE](mode) {
+        return modeFix(mode, this.type === "Directory", this.portable);
       }
-      get typeKey() {
-        return this[TYPE];
+      [PREFIX](path11) {
+        return prefixPath(path11, this.prefix);
       }
-      set type(type) {
-        if (types.code.has(type)) {
-          this[TYPE] = types.code.get(type);
-        } else {
-          this[TYPE] = type;
+      [HEADER]() {
+        if (this.type === "Directory" && this.portable) {
+          this.noMtime = true;
+        }
+        this.header = new Header({
+          path: this[PREFIX](this.path),
+          // only apply the prefix to hard links.
+          linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
+          // only the permissions and setuid/setgid/sticky bitflags
+          // not the higher-order bits that specify file type
+          mode: this[MODE](this.stat.mode),
+          uid: this.portable ? null : this.stat.uid,
+          gid: this.portable ? null : this.stat.gid,
+          size: this.stat.size,
+          mtime: this.noMtime ? null : this.mtime || this.stat.mtime,
+          type: this.type,
+          uname: this.portable ? null : this.stat.uid === this.myuid ? this.myuser : "",
+          atime: this.portable ? null : this.stat.atime,
+          ctime: this.portable ? null : this.stat.ctime
+        });
+        if (this.header.encode() && !this.noPax) {
+          super.write(new Pax({
+            atime: this.portable ? null : this.header.atime,
+            ctime: this.portable ? null : this.header.ctime,
+            gid: this.portable ? null : this.header.gid,
+            mtime: this.noMtime ? null : this.mtime || this.header.mtime,
+            path: this[PREFIX](this.path),
+            linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
+            size: this.header.size,
+            uid: this.portable ? null : this.header.uid,
+            uname: this.portable ? null : this.header.uname,
+            dev: this.portable ? null : this.stat.dev,
+            ino: this.portable ? null : this.stat.ino,
+            nlink: this.portable ? null : this.stat.nlink
+          }).encode());
         }
+        super.write(this.header.block);
       }
-    };
-    var splitPrefix = (p, prefixSize) => {
-      const pathSize = 100;
-      let pp = p;
-      let prefix = "";
-      let ret;
-      const root = pathModule.parse(p).root || ".";
-      if (Buffer.byteLength(pp) < pathSize) {
-        ret = [pp, prefix, false];
-      } else {
-        prefix = pathModule.dirname(pp);
-        pp = pathModule.basename(pp);
-        do {
-          if (Buffer.byteLength(pp) <= pathSize && Buffer.byteLength(prefix) <= prefixSize) {
-            ret = [pp, prefix, false];
-          } else if (Buffer.byteLength(pp) > pathSize && Buffer.byteLength(prefix) <= prefixSize) {
-            ret = [pp.slice(0, pathSize - 1), prefix, true];
-          } else {
-            pp = pathModule.join(pathModule.basename(prefix), pp);
-            prefix = pathModule.dirname(prefix);
-          }
-        } while (prefix !== root && !ret);
-        if (!ret) {
-          ret = [p.slice(0, pathSize - 1), "", true];
+      [DIRECTORY]() {
+        if (this.path.slice(-1) !== "/") {
+          this.path += "/";
         }
+        this.stat.size = 0;
+        this[HEADER]();
+        this.end();
       }
-      return ret;
-    };
-    var decString = (buf, off, size) => buf.slice(off, off + size).toString("utf8").replace(/\0.*/, "");
-    var decDate = (buf, off, size) => numToDate(decNumber(buf, off, size));
-    var numToDate = (num) => num === null ? null : new Date(num * 1e3);
-    var decNumber = (buf, off, size) => buf[off] & 128 ? large.parse(buf.slice(off, off + size)) : decSmallNumber(buf, off, size);
-    var nanNull = (value) => isNaN(value) ? null : value;
-    var decSmallNumber = (buf, off, size) => nanNull(parseInt(
-      buf.slice(off, off + size).toString("utf8").replace(/\0.*$/, "").trim(),
-      8
-    ));
-    var MAXNUM = {
-      12: 8589934591,
-      8: 2097151
-    };
-    var encNumber = (buf, off, size, number) => number === null ? false : number > MAXNUM[size] || number < 0 ? (large.encode(number, buf.slice(off, off + size)), true) : (encSmallNumber(buf, off, size, number), false);
-    var encSmallNumber = (buf, off, size, number) => buf.write(octalString(number, size), off, size, "ascii");
-    var octalString = (number, size) => padOctal(Math.floor(number).toString(8), size);
-    var padOctal = (string, size) => (string.length === size - 1 ? string : new Array(size - string.length - 1).join("0") + string + " ") + "\0";
-    var encDate = (buf, off, size, date) => date === null ? false : encNumber(buf, off, size, date.getTime() / 1e3);
-    var NULLS = new Array(156).join("\0");
-    var encString = (buf, off, size, string) => string === null ? false : (buf.write(string + NULLS, off, size, "utf8"), string.length !== Buffer.byteLength(string) || string.length > size);
-    module2.exports = Header;
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js
-var require_pax = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js"(exports, module2) {
-    "use strict";
-    var Header = require_header();
-    var path10 = require("path");
-    var Pax = class {
-      constructor(obj, global2) {
-        this.atime = obj.atime || null;
-        this.charset = obj.charset || null;
-        this.comment = obj.comment || null;
-        this.ctime = obj.ctime || null;
-        this.gid = obj.gid || null;
-        this.gname = obj.gname || null;
-        this.linkpath = obj.linkpath || null;
-        this.mtime = obj.mtime || null;
-        this.path = obj.path || null;
-        this.size = obj.size || null;
-        this.uid = obj.uid || null;
-        this.uname = obj.uname || null;
-        this.dev = obj.dev || null;
-        this.ino = obj.ino || null;
-        this.nlink = obj.nlink || null;
-        this.global = global2 || false;
+      [SYMLINK]() {
+        fs8.readlink(this.absolute, (er, linkpath) => {
+          if (er) {
+            return this.emit("error", er);
+          }
+          this[ONREADLINK](linkpath);
+        });
       }
-      encode() {
-        const body = this.encodeBody();
-        if (body === "") {
-          return null;
-        }
-        const bodyLen = Buffer.byteLength(body);
-        const bufLen = 512 * Math.ceil(1 + bodyLen / 512);
-        const buf = Buffer.allocUnsafe(bufLen);
-        for (let i = 0; i < 512; i++) {
-          buf[i] = 0;
-        }
-        new Header({
-          // XXX split the path
-          // then the path should be PaxHeader + basename, but less than 99,
-          // prepend with the dirname
-          path: ("PaxHeader/" + path10.basename(this.path)).slice(0, 99),
-          mode: this.mode || 420,
-          uid: this.uid || null,
-          gid: this.gid || null,
-          size: bodyLen,
-          mtime: this.mtime || null,
-          type: this.global ? "GlobalExtendedHeader" : "ExtendedHeader",
-          linkpath: "",
-          uname: this.uname || "",
-          gname: this.gname || "",
-          devmaj: 0,
-          devmin: 0,
-          atime: this.atime || null,
-          ctime: this.ctime || null
-        }).encode(buf);
-        buf.write(body, 512, bodyLen, "utf8");
-        for (let i = bodyLen + 512; i < buf.length; i++) {
-          buf[i] = 0;
-        }
-        return buf;
+      [ONREADLINK](linkpath) {
+        this.linkpath = normPath(linkpath);
+        this[HEADER]();
+        this.end();
       }
-      encodeBody() {
-        return this.encodeField("path") + this.encodeField("ctime") + this.encodeField("atime") + this.encodeField("dev") + this.encodeField("ino") + this.encodeField("nlink") + this.encodeField("charset") + this.encodeField("comment") + this.encodeField("gid") + this.encodeField("gname") + this.encodeField("linkpath") + this.encodeField("mtime") + this.encodeField("size") + this.encodeField("uid") + this.encodeField("uname");
+      [HARDLINK](linkpath) {
+        this.type = "Link";
+        this.linkpath = normPath(path10.relative(this.cwd, linkpath));
+        this.stat.size = 0;
+        this[HEADER]();
+        this.end();
       }
-      encodeField(field) {
-        if (this[field] === null || this[field] === void 0) {
-          return "";
+      [FILE]() {
+        if (this.stat.nlink > 1) {
+          const linkKey = this.stat.dev + ":" + this.stat.ino;
+          if (this.linkCache.has(linkKey)) {
+            const linkpath = this.linkCache.get(linkKey);
+            if (linkpath.indexOf(this.cwd) === 0) {
+              return this[HARDLINK](linkpath);
+            }
+          }
+          this.linkCache.set(linkKey, this.absolute);
         }
-        const v = this[field] instanceof Date ? this[field].getTime() / 1e3 : this[field];
-        const s = " " + (field === "dev" || field === "ino" || field === "nlink" ? "SCHILY." : "") + field + "=" + v + "\n";
-        const byteLen = Buffer.byteLength(s);
-        let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1;
-        if (byteLen + digits >= Math.pow(10, digits)) {
-          digits += 1;
+        this[HEADER]();
+        if (this.stat.size === 0) {
+          return this.end();
         }
-        const len = digits + byteLen;
-        return len + s;
+        this[OPENFILE]();
       }
-    };
-    Pax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g);
-    var merge = (a, b) => b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a;
-    var parseKV = (string) => string.replace(/\n$/, "").split("\n").reduce(parseKVLine, /* @__PURE__ */ Object.create(null));
-    var parseKVLine = (set, line) => {
-      const n = parseInt(line, 10);
-      if (n !== Buffer.byteLength(line) + 1) {
-        return set;
+      [OPENFILE]() {
+        fs8.open(this.absolute, "r", (er, fd) => {
+          if (er) {
+            return this.emit("error", er);
+          }
+          this[ONOPENFILE](fd);
+        });
       }
-      line = line.slice((n + " ").length);
-      const kv = line.split("=");
-      const k = kv.shift().replace(/^SCHILY\.(dev|ino|nlink)/, "$1");
-      if (!k) {
-        return set;
+      [ONOPENFILE](fd) {
+        this.fd = fd;
+        if (this[HAD_ERROR]) {
+          return this[CLOSE]();
+        }
+        this.blockLen = 512 * Math.ceil(this.stat.size / 512);
+        this.blockRemain = this.blockLen;
+        const bufLen = Math.min(this.blockLen, this.maxReadSize);
+        this.buf = Buffer.allocUnsafe(bufLen);
+        this.offset = 0;
+        this.pos = 0;
+        this.remain = this.stat.size;
+        this.length = this.buf.length;
+        this[READ]();
+      }
+      [READ]() {
+        const { fd, buf, offset, length, pos } = this;
+        fs8.read(fd, buf, offset, length, pos, (er, bytesRead) => {
+          if (er) {
+            return this[CLOSE](() => this.emit("error", er));
+          }
+          this[ONREAD](bytesRead);
+        });
       }
-      const v = kv.join("=");
-      set[k] = /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ? new Date(v * 1e3) : /^[0-9]+$/.test(v) ? +v : v;
-      return set;
-    };
-    module2.exports = Pax;
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js
-var require_strip_trailing_slashes = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js"(exports, module2) {
-    module2.exports = (str) => {
-      let i = str.length - 1;
-      let slashesStart = -1;
-      while (i > -1 && str.charAt(i) === "/") {
-        slashesStart = i;
-        i--;
+      [CLOSE](cb) {
+        fs8.close(this.fd, cb);
       }
-      return slashesStart === -1 ? str : str.slice(0, slashesStart);
-    };
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js
-var require_warn_mixin = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js"(exports, module2) {
-    "use strict";
-    module2.exports = (Base) => class extends Base {
-      warn(code, message, data = {}) {
-        if (this.file) {
-          data.file = this.file;
+      [ONREAD](bytesRead) {
+        if (bytesRead <= 0 && this.remain > 0) {
+          const er = new Error("encountered unexpected EOF");
+          er.path = this.absolute;
+          er.syscall = "read";
+          er.code = "EOF";
+          return this[CLOSE](() => this.emit("error", er));
         }
-        if (this.cwd) {
-          data.cwd = this.cwd;
+        if (bytesRead > this.remain) {
+          const er = new Error("did not encounter expected EOF");
+          er.path = this.absolute;
+          er.syscall = "read";
+          er.code = "EOF";
+          return this[CLOSE](() => this.emit("error", er));
         }
-        data.code = message instanceof Error && message.code || code;
-        data.tarCode = code;
-        if (!this.strict && data.recoverable !== false) {
-          if (message instanceof Error) {
-            data = Object.assign(message, data);
-            message = message.message;
+        if (bytesRead === this.remain) {
+          for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {
+            this.buf[i + this.offset] = 0;
+            bytesRead++;
+            this.remain++;
           }
-          this.emit("warn", data.tarCode, message, data);
-        } else if (message instanceof Error) {
-          this.emit("error", Object.assign(message, data));
+        }
+        const writeBuf = this.offset === 0 && bytesRead === this.buf.length ? this.buf : this.buf.slice(this.offset, this.offset + bytesRead);
+        const flushed = this.write(writeBuf);
+        if (!flushed) {
+          this[AWAITDRAIN](() => this[ONDRAIN]());
         } else {
-          this.emit("error", Object.assign(new Error(`${code}: ${message}`), data));
+          this[ONDRAIN]();
         }
       }
-    };
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js
-var require_winchars = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js"(exports, module2) {
-    "use strict";
-    var raw = [
-      "|",
-      "<",
-      ">",
-      "?",
-      ":"
-    ];
-    var win = raw.map((char) => String.fromCharCode(61440 + char.charCodeAt(0)));
-    var toWin = new Map(raw.map((char, i) => [char, win[i]]));
-    var toRaw = new Map(win.map((char, i) => [char, raw[i]]));
-    module2.exports = {
-      encode: (s) => raw.reduce((s2, c) => s2.split(c).join(toWin.get(c)), s),
-      decode: (s) => win.reduce((s2, c) => s2.split(c).join(toRaw.get(c)), s)
-    };
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js
-var require_strip_absolute_path = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js"(exports, module2) {
-    var { isAbsolute, parse } = require("path").win32;
-    module2.exports = (path10) => {
-      let r = "";
-      let parsed = parse(path10);
-      while (isAbsolute(path10) || parsed.root) {
-        const root = path10.charAt(0) === "/" && path10.slice(0, 4) !== "//?/" ? "/" : parsed.root;
-        path10 = path10.slice(root.length);
-        r += root;
-        parsed = parse(path10);
+      [AWAITDRAIN](cb) {
+        this.once("drain", cb);
       }
-      return [r, path10];
-    };
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js
-var require_mode_fix = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js"(exports, module2) {
-    "use strict";
-    module2.exports = (mode, isDir, portable) => {
-      mode &= 4095;
-      if (portable) {
-        mode = (mode | 384) & ~18;
+      write(writeBuf) {
+        if (this.blockRemain < writeBuf.length) {
+          const er = new Error("writing more data than expected");
+          er.path = this.absolute;
+          return this.emit("error", er);
+        }
+        this.remain -= writeBuf.length;
+        this.blockRemain -= writeBuf.length;
+        this.pos += writeBuf.length;
+        this.offset += writeBuf.length;
+        return super.write(writeBuf);
       }
-      if (isDir) {
-        if (mode & 256) {
-          mode |= 64;
+      [ONDRAIN]() {
+        if (!this.remain) {
+          if (this.blockRemain) {
+            super.write(Buffer.alloc(this.blockRemain));
+          }
+          return this[CLOSE]((er) => er ? this.emit("error", er) : this.end());
         }
-        if (mode & 32) {
-          mode |= 8;
+        if (this.offset >= this.length) {
+          this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length));
+          this.offset = 0;
         }
-        if (mode & 4) {
-          mode |= 1;
+        this.length = this.buf.length - this.offset;
+        this[READ]();
+      }
+    });
+    var WriteEntrySync = class extends WriteEntry {
+      [LSTAT]() {
+        this[ONLSTAT](fs8.lstatSync(this.absolute));
+      }
+      [SYMLINK]() {
+        this[ONREADLINK](fs8.readlinkSync(this.absolute));
+      }
+      [OPENFILE]() {
+        this[ONOPENFILE](fs8.openSync(this.absolute, "r"));
+      }
+      [READ]() {
+        let threw = true;
+        try {
+          const { fd, buf, offset, length, pos } = this;
+          const bytesRead = fs8.readSync(fd, buf, offset, length, pos);
+          this[ONREAD](bytesRead);
+          threw = false;
+        } finally {
+          if (threw) {
+            try {
+              this[CLOSE](() => {
+              });
+            } catch (er) {
+            }
+          }
         }
       }
-      return mode;
-    };
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js
-var require_write_entry = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js"(exports, module2) {
-    "use strict";
-    var { Minipass } = require_minipass();
-    var Pax = require_pax();
-    var Header = require_header();
-    var fs8 = require("fs");
-    var path10 = require("path");
-    var normPath = require_normalize_windows_path();
-    var stripSlash = require_strip_trailing_slashes();
-    var prefixPath = (path11, prefix) => {
-      if (!prefix) {
-        return normPath(path11);
+      [AWAITDRAIN](cb) {
+        cb();
+      }
+      [CLOSE](cb) {
+        fs8.closeSync(this.fd);
+        cb();
       }
-      path11 = normPath(path11).replace(/^\.(\/|$)/, "");
-      return stripSlash(prefix) + "/" + path11;
     };
-    var maxReadSize = 16 * 1024 * 1024;
-    var PROCESS = Symbol("process");
-    var FILE = Symbol("file");
-    var DIRECTORY = Symbol("directory");
-    var SYMLINK = Symbol("symlink");
-    var HARDLINK = Symbol("hardlink");
-    var HEADER = Symbol("header");
-    var READ = Symbol("read");
-    var LSTAT = Symbol("lstat");
-    var ONLSTAT = Symbol("onlstat");
-    var ONREAD = Symbol("onread");
-    var ONREADLINK = Symbol("onreadlink");
-    var OPENFILE = Symbol("openfile");
-    var ONOPENFILE = Symbol("onopenfile");
-    var CLOSE = Symbol("close");
-    var MODE = Symbol("mode");
-    var AWAITDRAIN = Symbol("awaitDrain");
-    var ONDRAIN = Symbol("ondrain");
-    var PREFIX = Symbol("prefix");
-    var HAD_ERROR = Symbol("hadError");
-    var warner = require_warn_mixin();
-    var winchars = require_winchars();
-    var stripAbsolutePath = require_strip_absolute_path();
-    var modeFix = require_mode_fix();
-    var WriteEntry = warner(class WriteEntry extends Minipass {
-      constructor(p, opt) {
+    var WriteEntryTar = warner(class WriteEntryTar extends Minipass {
+      constructor(readEntry, opt) {
         opt = opt || {};
         super(opt);
-        if (typeof p !== "string") {
-          throw new TypeError("path is required");
-        }
-        this.path = normPath(p);
-        this.portable = !!opt.portable;
-        this.myuid = process.getuid && process.getuid() || 0;
-        this.myuser = process.env.USER || "";
-        this.maxReadSize = opt.maxReadSize || maxReadSize;
-        this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
-        this.statCache = opt.statCache || /* @__PURE__ */ new Map();
         this.preservePaths = !!opt.preservePaths;
-        this.cwd = normPath(opt.cwd || process.cwd());
+        this.portable = !!opt.portable;
         this.strict = !!opt.strict;
         this.noPax = !!opt.noPax;
-        this.noMtime = !!opt.noMtime;
-        this.mtime = opt.mtime || null;
-        this.prefix = opt.prefix ? normPath(opt.prefix) : null;
-        this.fd = null;
-        this.blockLen = null;
-        this.blockRemain = null;
-        this.buf = null;
-        this.offset = null;
-        this.length = null;
-        this.pos = null;
-        this.remain = null;
+        this.noMtime = !!opt.noMtime;
+        this.readEntry = readEntry;
+        this.type = readEntry.type;
+        if (this.type === "Directory" && this.portable) {
+          this.noMtime = true;
+        }
+        this.prefix = opt.prefix || null;
+        this.path = normPath(readEntry.path);
+        this.mode = this[MODE](readEntry.mode);
+        this.uid = this.portable ? null : readEntry.uid;
+        this.gid = this.portable ? null : readEntry.gid;
+        this.uname = this.portable ? null : readEntry.uname;
+        this.gname = this.portable ? null : readEntry.gname;
+        this.size = readEntry.size;
+        this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime;
+        this.atime = this.portable ? null : readEntry.atime;
+        this.ctime = this.portable ? null : readEntry.ctime;
+        this.linkpath = normPath(readEntry.linkpath);
         if (typeof opt.onwarn === "function") {
           this.on("warn", opt.onwarn);
         }
@@ -15499,386 +15201,456 @@ var require_write_entry = __commonJS({
             pathWarn = root;
           }
         }
-        this.win32 = !!opt.win32 || process.platform === "win32";
-        if (this.win32) {
-          this.path = winchars.decode(this.path.replace(/\\/g, "/"));
-          p = p.replace(/\\/g, "/");
-        }
-        this.absolute = normPath(opt.absolute || path10.resolve(this.cwd, p));
-        if (this.path === "") {
-          this.path = "./";
-        }
+        this.remain = readEntry.size;
+        this.blockRemain = readEntry.startBlockSize;
+        this.header = new Header({
+          path: this[PREFIX](this.path),
+          linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
+          // only the permissions and setuid/setgid/sticky bitflags
+          // not the higher-order bits that specify file type
+          mode: this.mode,
+          uid: this.portable ? null : this.uid,
+          gid: this.portable ? null : this.gid,
+          size: this.size,
+          mtime: this.noMtime ? null : this.mtime,
+          type: this.type,
+          uname: this.portable ? null : this.uname,
+          atime: this.portable ? null : this.atime,
+          ctime: this.portable ? null : this.ctime
+        });
         if (pathWarn) {
           this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
             entry: this,
             path: pathWarn + this.path
           });
         }
-        if (this.statCache.has(this.absolute)) {
-          this[ONLSTAT](this.statCache.get(this.absolute));
-        } else {
-          this[LSTAT]();
+        if (this.header.encode() && !this.noPax) {
+          super.write(new Pax({
+            atime: this.portable ? null : this.atime,
+            ctime: this.portable ? null : this.ctime,
+            gid: this.portable ? null : this.gid,
+            mtime: this.noMtime ? null : this.mtime,
+            path: this[PREFIX](this.path),
+            linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
+            size: this.size,
+            uid: this.portable ? null : this.uid,
+            uname: this.portable ? null : this.uname,
+            dev: this.portable ? null : this.readEntry.dev,
+            ino: this.portable ? null : this.readEntry.ino,
+            nlink: this.portable ? null : this.readEntry.nlink
+          }).encode());
+        }
+        super.write(this.header.block);
+        readEntry.pipe(this);
+      }
+      [PREFIX](path11) {
+        return prefixPath(path11, this.prefix);
+      }
+      [MODE](mode) {
+        return modeFix(mode, this.type === "Directory", this.portable);
+      }
+      write(data) {
+        const writeLen = data.length;
+        if (writeLen > this.blockRemain) {
+          throw new Error("writing more to entry than is appropriate");
+        }
+        this.blockRemain -= writeLen;
+        return super.write(data);
+      }
+      end() {
+        if (this.blockRemain) {
+          super.write(Buffer.alloc(this.blockRemain));
+        }
+        return super.end();
+      }
+    });
+    WriteEntry.Sync = WriteEntrySync;
+    WriteEntry.Tar = WriteEntryTar;
+    var getType = (stat) => stat.isFile() ? "File" : stat.isDirectory() ? "Directory" : stat.isSymbolicLink() ? "SymbolicLink" : "Unsupported";
+    module2.exports = WriteEntry;
+  }
+});
+
+// .yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js
+var require_iterator = __commonJS({
+  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js"(exports, module2) {
+    "use strict";
+    module2.exports = function(Yallist) {
+      Yallist.prototype[Symbol.iterator] = function* () {
+        for (let walker = this.head; walker; walker = walker.next) {
+          yield walker.value;
+        }
+      };
+    };
+  }
+});
+
+// .yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js
+var require_yallist = __commonJS({
+  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js"(exports, module2) {
+    "use strict";
+    module2.exports = Yallist;
+    Yallist.Node = Node;
+    Yallist.create = Yallist;
+    function Yallist(list) {
+      var self2 = this;
+      if (!(self2 instanceof Yallist)) {
+        self2 = new Yallist();
+      }
+      self2.tail = null;
+      self2.head = null;
+      self2.length = 0;
+      if (list && typeof list.forEach === "function") {
+        list.forEach(function(item) {
+          self2.push(item);
+        });
+      } else if (arguments.length > 0) {
+        for (var i = 0, l = arguments.length; i < l; i++) {
+          self2.push(arguments[i]);
         }
       }
-      emit(ev, ...data) {
-        if (ev === "error") {
-          this[HAD_ERROR] = true;
-        }
-        return super.emit(ev, ...data);
+      return self2;
+    }
+    Yallist.prototype.removeNode = function(node) {
+      if (node.list !== this) {
+        throw new Error("removing node which does not belong to this list");
+      }
+      var next = node.next;
+      var prev = node.prev;
+      if (next) {
+        next.prev = prev;
+      }
+      if (prev) {
+        prev.next = next;
+      }
+      if (node === this.head) {
+        this.head = next;
+      }
+      if (node === this.tail) {
+        this.tail = prev;
+      }
+      node.list.length--;
+      node.next = null;
+      node.prev = null;
+      node.list = null;
+      return next;
+    };
+    Yallist.prototype.unshiftNode = function(node) {
+      if (node === this.head) {
+        return;
+      }
+      if (node.list) {
+        node.list.removeNode(node);
+      }
+      var head = this.head;
+      node.list = this;
+      node.next = head;
+      if (head) {
+        head.prev = node;
+      }
+      this.head = node;
+      if (!this.tail) {
+        this.tail = node;
+      }
+      this.length++;
+    };
+    Yallist.prototype.pushNode = function(node) {
+      if (node === this.tail) {
+        return;
+      }
+      if (node.list) {
+        node.list.removeNode(node);
+      }
+      var tail = this.tail;
+      node.list = this;
+      node.prev = tail;
+      if (tail) {
+        tail.next = node;
+      }
+      this.tail = node;
+      if (!this.head) {
+        this.head = node;
+      }
+      this.length++;
+    };
+    Yallist.prototype.push = function() {
+      for (var i = 0, l = arguments.length; i < l; i++) {
+        push(this, arguments[i]);
+      }
+      return this.length;
+    };
+    Yallist.prototype.unshift = function() {
+      for (var i = 0, l = arguments.length; i < l; i++) {
+        unshift(this, arguments[i]);
+      }
+      return this.length;
+    };
+    Yallist.prototype.pop = function() {
+      if (!this.tail) {
+        return void 0;
+      }
+      var res = this.tail.value;
+      this.tail = this.tail.prev;
+      if (this.tail) {
+        this.tail.next = null;
+      } else {
+        this.head = null;
+      }
+      this.length--;
+      return res;
+    };
+    Yallist.prototype.shift = function() {
+      if (!this.head) {
+        return void 0;
+      }
+      var res = this.head.value;
+      this.head = this.head.next;
+      if (this.head) {
+        this.head.prev = null;
+      } else {
+        this.tail = null;
+      }
+      this.length--;
+      return res;
+    };
+    Yallist.prototype.forEach = function(fn2, thisp) {
+      thisp = thisp || this;
+      for (var walker = this.head, i = 0; walker !== null; i++) {
+        fn2.call(thisp, walker.value, i, this);
+        walker = walker.next;
+      }
+    };
+    Yallist.prototype.forEachReverse = function(fn2, thisp) {
+      thisp = thisp || this;
+      for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+        fn2.call(thisp, walker.value, i, this);
+        walker = walker.prev;
+      }
+    };
+    Yallist.prototype.get = function(n) {
+      for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+        walker = walker.next;
+      }
+      if (i === n && walker !== null) {
+        return walker.value;
+      }
+    };
+    Yallist.prototype.getReverse = function(n) {
+      for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+        walker = walker.prev;
       }
-      [LSTAT]() {
-        fs8.lstat(this.absolute, (er, stat) => {
-          if (er) {
-            return this.emit("error", er);
-          }
-          this[ONLSTAT](stat);
-        });
+      if (i === n && walker !== null) {
+        return walker.value;
       }
-      [ONLSTAT](stat) {
-        this.statCache.set(this.absolute, stat);
-        this.stat = stat;
-        if (!stat.isFile()) {
-          stat.size = 0;
-        }
-        this.type = getType(stat);
-        this.emit("stat", stat);
-        this[PROCESS]();
+    };
+    Yallist.prototype.map = function(fn2, thisp) {
+      thisp = thisp || this;
+      var res = new Yallist();
+      for (var walker = this.head; walker !== null; ) {
+        res.push(fn2.call(thisp, walker.value, this));
+        walker = walker.next;
       }
-      [PROCESS]() {
-        switch (this.type) {
-          case "File":
-            return this[FILE]();
-          case "Directory":
-            return this[DIRECTORY]();
-          case "SymbolicLink":
-            return this[SYMLINK]();
-          default:
-            return this.end();
-        }
+      return res;
+    };
+    Yallist.prototype.mapReverse = function(fn2, thisp) {
+      thisp = thisp || this;
+      var res = new Yallist();
+      for (var walker = this.tail; walker !== null; ) {
+        res.push(fn2.call(thisp, walker.value, this));
+        walker = walker.prev;
       }
-      [MODE](mode) {
-        return modeFix(mode, this.type === "Directory", this.portable);
+      return res;
+    };
+    Yallist.prototype.reduce = function(fn2, initial) {
+      var acc;
+      var walker = this.head;
+      if (arguments.length > 1) {
+        acc = initial;
+      } else if (this.head) {
+        walker = this.head.next;
+        acc = this.head.value;
+      } else {
+        throw new TypeError("Reduce of empty list with no initial value");
       }
-      [PREFIX](path11) {
-        return prefixPath(path11, this.prefix);
+      for (var i = 0; walker !== null; i++) {
+        acc = fn2(acc, walker.value, i);
+        walker = walker.next;
       }
-      [HEADER]() {
-        if (this.type === "Directory" && this.portable) {
-          this.noMtime = true;
-        }
-        this.header = new Header({
-          path: this[PREFIX](this.path),
-          // only apply the prefix to hard links.
-          linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
-          // only the permissions and setuid/setgid/sticky bitflags
-          // not the higher-order bits that specify file type
-          mode: this[MODE](this.stat.mode),
-          uid: this.portable ? null : this.stat.uid,
-          gid: this.portable ? null : this.stat.gid,
-          size: this.stat.size,
-          mtime: this.noMtime ? null : this.mtime || this.stat.mtime,
-          type: this.type,
-          uname: this.portable ? null : this.stat.uid === this.myuid ? this.myuser : "",
-          atime: this.portable ? null : this.stat.atime,
-          ctime: this.portable ? null : this.stat.ctime
-        });
-        if (this.header.encode() && !this.noPax) {
-          super.write(new Pax({
-            atime: this.portable ? null : this.header.atime,
-            ctime: this.portable ? null : this.header.ctime,
-            gid: this.portable ? null : this.header.gid,
-            mtime: this.noMtime ? null : this.mtime || this.header.mtime,
-            path: this[PREFIX](this.path),
-            linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
-            size: this.header.size,
-            uid: this.portable ? null : this.header.uid,
-            uname: this.portable ? null : this.header.uname,
-            dev: this.portable ? null : this.stat.dev,
-            ino: this.portable ? null : this.stat.ino,
-            nlink: this.portable ? null : this.stat.nlink
-          }).encode());
-        }
-        super.write(this.header.block);
+      return acc;
+    };
+    Yallist.prototype.reduceReverse = function(fn2, initial) {
+      var acc;
+      var walker = this.tail;
+      if (arguments.length > 1) {
+        acc = initial;
+      } else if (this.tail) {
+        walker = this.tail.prev;
+        acc = this.tail.value;
+      } else {
+        throw new TypeError("Reduce of empty list with no initial value");
       }
-      [DIRECTORY]() {
-        if (this.path.slice(-1) !== "/") {
-          this.path += "/";
-        }
-        this.stat.size = 0;
-        this[HEADER]();
-        this.end();
+      for (var i = this.length - 1; walker !== null; i--) {
+        acc = fn2(acc, walker.value, i);
+        walker = walker.prev;
       }
-      [SYMLINK]() {
-        fs8.readlink(this.absolute, (er, linkpath) => {
-          if (er) {
-            return this.emit("error", er);
-          }
-          this[ONREADLINK](linkpath);
-        });
+      return acc;
+    };
+    Yallist.prototype.toArray = function() {
+      var arr = new Array(this.length);
+      for (var i = 0, walker = this.head; walker !== null; i++) {
+        arr[i] = walker.value;
+        walker = walker.next;
       }
-      [ONREADLINK](linkpath) {
-        this.linkpath = normPath(linkpath);
-        this[HEADER]();
-        this.end();
+      return arr;
+    };
+    Yallist.prototype.toArrayReverse = function() {
+      var arr = new Array(this.length);
+      for (var i = 0, walker = this.tail; walker !== null; i++) {
+        arr[i] = walker.value;
+        walker = walker.prev;
       }
-      [HARDLINK](linkpath) {
-        this.type = "Link";
-        this.linkpath = normPath(path10.relative(this.cwd, linkpath));
-        this.stat.size = 0;
-        this[HEADER]();
-        this.end();
+      return arr;
+    };
+    Yallist.prototype.slice = function(from, to) {
+      to = to || this.length;
+      if (to < 0) {
+        to += this.length;
       }
-      [FILE]() {
-        if (this.stat.nlink > 1) {
-          const linkKey = this.stat.dev + ":" + this.stat.ino;
-          if (this.linkCache.has(linkKey)) {
-            const linkpath = this.linkCache.get(linkKey);
-            if (linkpath.indexOf(this.cwd) === 0) {
-              return this[HARDLINK](linkpath);
-            }
-          }
-          this.linkCache.set(linkKey, this.absolute);
-        }
-        this[HEADER]();
-        if (this.stat.size === 0) {
-          return this.end();
-        }
-        this[OPENFILE]();
+      from = from || 0;
+      if (from < 0) {
+        from += this.length;
       }
-      [OPENFILE]() {
-        fs8.open(this.absolute, "r", (er, fd) => {
-          if (er) {
-            return this.emit("error", er);
-          }
-          this[ONOPENFILE](fd);
-        });
+      var ret = new Yallist();
+      if (to < from || to < 0) {
+        return ret;
       }
-      [ONOPENFILE](fd) {
-        this.fd = fd;
-        if (this[HAD_ERROR]) {
-          return this[CLOSE]();
-        }
-        this.blockLen = 512 * Math.ceil(this.stat.size / 512);
-        this.blockRemain = this.blockLen;
-        const bufLen = Math.min(this.blockLen, this.maxReadSize);
-        this.buf = Buffer.allocUnsafe(bufLen);
-        this.offset = 0;
-        this.pos = 0;
-        this.remain = this.stat.size;
-        this.length = this.buf.length;
-        this[READ]();
+      if (from < 0) {
+        from = 0;
       }
-      [READ]() {
-        const { fd, buf, offset, length, pos } = this;
-        fs8.read(fd, buf, offset, length, pos, (er, bytesRead) => {
-          if (er) {
-            return this[CLOSE](() => this.emit("error", er));
-          }
-          this[ONREAD](bytesRead);
-        });
+      if (to > this.length) {
+        to = this.length;
       }
-      [CLOSE](cb) {
-        fs8.close(this.fd, cb);
+      for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+        walker = walker.next;
       }
-      [ONREAD](bytesRead) {
-        if (bytesRead <= 0 && this.remain > 0) {
-          const er = new Error("encountered unexpected EOF");
-          er.path = this.absolute;
-          er.syscall = "read";
-          er.code = "EOF";
-          return this[CLOSE](() => this.emit("error", er));
-        }
-        if (bytesRead > this.remain) {
-          const er = new Error("did not encounter expected EOF");
-          er.path = this.absolute;
-          er.syscall = "read";
-          er.code = "EOF";
-          return this[CLOSE](() => this.emit("error", er));
-        }
-        if (bytesRead === this.remain) {
-          for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {
-            this.buf[i + this.offset] = 0;
-            bytesRead++;
-            this.remain++;
-          }
-        }
-        const writeBuf = this.offset === 0 && bytesRead === this.buf.length ? this.buf : this.buf.slice(this.offset, this.offset + bytesRead);
-        const flushed = this.write(writeBuf);
-        if (!flushed) {
-          this[AWAITDRAIN](() => this[ONDRAIN]());
-        } else {
-          this[ONDRAIN]();
-        }
+      for (; walker !== null && i < to; i++, walker = walker.next) {
+        ret.push(walker.value);
       }
-      [AWAITDRAIN](cb) {
-        this.once("drain", cb);
+      return ret;
+    };
+    Yallist.prototype.sliceReverse = function(from, to) {
+      to = to || this.length;
+      if (to < 0) {
+        to += this.length;
       }
-      write(writeBuf) {
-        if (this.blockRemain < writeBuf.length) {
-          const er = new Error("writing more data than expected");
-          er.path = this.absolute;
-          return this.emit("error", er);
-        }
-        this.remain -= writeBuf.length;
-        this.blockRemain -= writeBuf.length;
-        this.pos += writeBuf.length;
-        this.offset += writeBuf.length;
-        return super.write(writeBuf);
+      from = from || 0;
+      if (from < 0) {
+        from += this.length;
       }
-      [ONDRAIN]() {
-        if (!this.remain) {
-          if (this.blockRemain) {
-            super.write(Buffer.alloc(this.blockRemain));
-          }
-          return this[CLOSE]((er) => er ? this.emit("error", er) : this.end());
-        }
-        if (this.offset >= this.length) {
-          this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length));
-          this.offset = 0;
-        }
-        this.length = this.buf.length - this.offset;
-        this[READ]();
+      var ret = new Yallist();
+      if (to < from || to < 0) {
+        return ret;
       }
-    });
-    var WriteEntrySync = class extends WriteEntry {
-      [LSTAT]() {
-        this[ONLSTAT](fs8.lstatSync(this.absolute));
+      if (from < 0) {
+        from = 0;
       }
-      [SYMLINK]() {
-        this[ONREADLINK](fs8.readlinkSync(this.absolute));
+      if (to > this.length) {
+        to = this.length;
       }
-      [OPENFILE]() {
-        this[ONOPENFILE](fs8.openSync(this.absolute, "r"));
+      for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+        walker = walker.prev;
       }
-      [READ]() {
-        let threw = true;
-        try {
-          const { fd, buf, offset, length, pos } = this;
-          const bytesRead = fs8.readSync(fd, buf, offset, length, pos);
-          this[ONREAD](bytesRead);
-          threw = false;
-        } finally {
-          if (threw) {
-            try {
-              this[CLOSE](() => {
-              });
-            } catch (er) {
-            }
-          }
-        }
+      for (; walker !== null && i > from; i--, walker = walker.prev) {
+        ret.push(walker.value);
       }
-      [AWAITDRAIN](cb) {
-        cb();
+      return ret;
+    };
+    Yallist.prototype.splice = function(start, deleteCount, ...nodes) {
+      if (start > this.length) {
+        start = this.length - 1;
       }
-      [CLOSE](cb) {
-        fs8.closeSync(this.fd);
-        cb();
+      if (start < 0) {
+        start = this.length + start;
+      }
+      for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
+        walker = walker.next;
+      }
+      var ret = [];
+      for (var i = 0; walker && i < deleteCount; i++) {
+        ret.push(walker.value);
+        walker = this.removeNode(walker);
+      }
+      if (walker === null) {
+        walker = this.tail;
+      }
+      if (walker !== this.head && walker !== this.tail) {
+        walker = walker.prev;
+      }
+      for (var i = 0; i < nodes.length; i++) {
+        walker = insert(this, walker, nodes[i]);
       }
+      return ret;
     };
-    var WriteEntryTar = warner(class WriteEntryTar extends Minipass {
-      constructor(readEntry, opt) {
-        opt = opt || {};
-        super(opt);
-        this.preservePaths = !!opt.preservePaths;
-        this.portable = !!opt.portable;
-        this.strict = !!opt.strict;
-        this.noPax = !!opt.noPax;
-        this.noMtime = !!opt.noMtime;
-        this.readEntry = readEntry;
-        this.type = readEntry.type;
-        if (this.type === "Directory" && this.portable) {
-          this.noMtime = true;
-        }
-        this.prefix = opt.prefix || null;
-        this.path = normPath(readEntry.path);
-        this.mode = this[MODE](readEntry.mode);
-        this.uid = this.portable ? null : readEntry.uid;
-        this.gid = this.portable ? null : readEntry.gid;
-        this.uname = this.portable ? null : readEntry.uname;
-        this.gname = this.portable ? null : readEntry.gname;
-        this.size = readEntry.size;
-        this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime;
-        this.atime = this.portable ? null : readEntry.atime;
-        this.ctime = this.portable ? null : readEntry.ctime;
-        this.linkpath = normPath(readEntry.linkpath);
-        if (typeof opt.onwarn === "function") {
-          this.on("warn", opt.onwarn);
-        }
-        let pathWarn = false;
-        if (!this.preservePaths) {
-          const [root, stripped] = stripAbsolutePath(this.path);
-          if (root) {
-            this.path = stripped;
-            pathWarn = root;
-          }
-        }
-        this.remain = readEntry.size;
-        this.blockRemain = readEntry.startBlockSize;
-        this.header = new Header({
-          path: this[PREFIX](this.path),
-          linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
-          // only the permissions and setuid/setgid/sticky bitflags
-          // not the higher-order bits that specify file type
-          mode: this.mode,
-          uid: this.portable ? null : this.uid,
-          gid: this.portable ? null : this.gid,
-          size: this.size,
-          mtime: this.noMtime ? null : this.mtime,
-          type: this.type,
-          uname: this.portable ? null : this.uname,
-          atime: this.portable ? null : this.atime,
-          ctime: this.portable ? null : this.ctime
-        });
-        if (pathWarn) {
-          this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
-            entry: this,
-            path: pathWarn + this.path
-          });
-        }
-        if (this.header.encode() && !this.noPax) {
-          super.write(new Pax({
-            atime: this.portable ? null : this.atime,
-            ctime: this.portable ? null : this.ctime,
-            gid: this.portable ? null : this.gid,
-            mtime: this.noMtime ? null : this.mtime,
-            path: this[PREFIX](this.path),
-            linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
-            size: this.size,
-            uid: this.portable ? null : this.uid,
-            uname: this.portable ? null : this.uname,
-            dev: this.portable ? null : this.readEntry.dev,
-            ino: this.portable ? null : this.readEntry.ino,
-            nlink: this.portable ? null : this.readEntry.nlink
-          }).encode());
-        }
-        super.write(this.header.block);
-        readEntry.pipe(this);
+    Yallist.prototype.reverse = function() {
+      var head = this.head;
+      var tail = this.tail;
+      for (var walker = head; walker !== null; walker = walker.prev) {
+        var p = walker.prev;
+        walker.prev = walker.next;
+        walker.next = p;
       }
-      [PREFIX](path11) {
-        return prefixPath(path11, this.prefix);
+      this.head = tail;
+      this.tail = head;
+      return this;
+    };
+    function insert(self2, node, value) {
+      var inserted = node === self2.head ? new Node(value, null, node, self2) : new Node(value, node, node.next, self2);
+      if (inserted.next === null) {
+        self2.tail = inserted;
       }
-      [MODE](mode) {
-        return modeFix(mode, this.type === "Directory", this.portable);
+      if (inserted.prev === null) {
+        self2.head = inserted;
       }
-      write(data) {
-        const writeLen = data.length;
-        if (writeLen > this.blockRemain) {
-          throw new Error("writing more to entry than is appropriate");
-        }
-        this.blockRemain -= writeLen;
-        return super.write(data);
+      self2.length++;
+      return inserted;
+    }
+    function push(self2, item) {
+      self2.tail = new Node(item, self2.tail, null, self2);
+      if (!self2.head) {
+        self2.head = self2.tail;
       }
-      end() {
-        if (this.blockRemain) {
-          super.write(Buffer.alloc(this.blockRemain));
-        }
-        return super.end();
+      self2.length++;
+    }
+    function unshift(self2, item) {
+      self2.head = new Node(item, null, self2.head, self2);
+      if (!self2.tail) {
+        self2.tail = self2.head;
       }
-    });
-    WriteEntry.Sync = WriteEntrySync;
-    WriteEntry.Tar = WriteEntryTar;
-    var getType = (stat) => stat.isFile() ? "File" : stat.isDirectory() ? "Directory" : stat.isSymbolicLink() ? "SymbolicLink" : "Unsupported";
-    module2.exports = WriteEntry;
+      self2.length++;
+    }
+    function Node(value, prev, next, list) {
+      if (!(this instanceof Node)) {
+        return new Node(value, prev, next, list);
+      }
+      this.list = list;
+      this.value = value;
+      if (prev) {
+        prev.next = this;
+        this.prev = prev;
+      } else {
+        this.prev = null;
+      }
+      if (next) {
+        next.prev = this;
+        this.next = next;
+      } else {
+        this.next = null;
+      }
+    }
+    try {
+      require_iterator()(Yallist);
+    } catch (er) {
+    }
   }
 });
 
@@ -22417,7 +22189,7 @@ function String2(descriptor, ...args) {
 }
 
 // package.json
-var version = "0.28.1";
+var version = "0.28.2";
 
 // sources/Engine.ts
 var import_fs4 = __toESM(require("fs"));
@@ -22429,7 +22201,7 @@ var import_semver4 = __toESM(require_semver2());
 var config_default = {
   definitions: {
     npm: {
-      default: "10.7.0+sha1.c87e0bbb7a53422670e423d0198120760f67c3b7",
+      default: "10.8.1+sha1.1f1cb1305cd9246b9efe07d8629874df23157a2f",
       fetchLatestFrom: {
         type: "npm",
         package: "npm"
@@ -22466,7 +22238,7 @@ var config_default = {
       }
     },
     pnpm: {
-      default: "9.1.0+sha1.217063ce3fcbf44f3051666f38b810f1ddefee4a",
+      default: "9.1.4+sha1.2432063d815cfa88fd9fef1d85a445e3f609851d",
       fetchLatestFrom: {
         type: "npm",
         package: "pnpm"
@@ -23695,7 +23467,7 @@ var EnableCommand = class extends Command {
   static usage = Command.Usage({
     description: `Add the Corepack shims to the install directories`,
     details: `
-      When run, this commmand will check whether the shims for the specified package managers can be found with the correct values inside the install directory. If not, or if they don't exist, they will be created.
+      When run, this command will check whether the shims for the specified package managers can be found with the correct values inside the install directory. If not, or if they don't exist, they will be created.
 
       By default it will locate the install directory by running the equivalent of \`which corepack\`, but this can be tweaked by explicitly passing the install directory via the \`--install-directory\` flag.
     `,
diff --git a/deps/corepack/package.json b/deps/corepack/package.json
index 3737c1920844d3..c1e1618ee1a8b2 100644
--- a/deps/corepack/package.json
+++ b/deps/corepack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "corepack",
-  "version": "0.28.1",
+  "version": "0.28.2",
   "homepage": "https://github.com/nodejs/corepack#readme",
   "bugs": {
     "url": "https://github.com/nodejs/corepack/issues"

From dbdfdd0226c8f7ed12fa229c864827e85047dbfb Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Tue, 16 Jul 2024 03:33:04 +0300
Subject: [PATCH 39/76] deps: update corepack to 0.29.2

PR-URL: https://github.com/nodejs/node/pull/53838
Reviewed-By: Marco Ippolito 
Reviewed-By: Antoine du Hamel 
---
 deps/corepack/CHANGELOG.md          |   28 +
 deps/corepack/dist/lib/corepack.cjs | 2479 +++++++++------------------
 deps/corepack/package.json          |   27 +-
 3 files changed, 845 insertions(+), 1689 deletions(-)

diff --git a/deps/corepack/CHANGELOG.md b/deps/corepack/CHANGELOG.md
index f3a4d9d83380e4..1621a5b04ddb1d 100644
--- a/deps/corepack/CHANGELOG.md
+++ b/deps/corepack/CHANGELOG.md
@@ -1,5 +1,33 @@
 # Changelog
 
+## [0.29.2](https://github.com/nodejs/corepack/compare/v0.29.1...v0.29.2) (2024-07-13)
+
+
+### Bug Fixes
+
+* trigger release after 0.29.1 failed to publish ([18e29ce](https://github.com/nodejs/corepack/commit/18e29ce3c465b64d48ccf3feef7cd1be94da70b0))
+
+## [0.29.1](https://github.com/nodejs/corepack/compare/v0.29.0...v0.29.1) (2024-07-13)
+
+
+### Bug Fixes
+
+* trigger release after 0.29.0 failed to publish ([e6ba066](https://github.com/nodejs/corepack/commit/e6ba06657b0985c112f288932ca39c0562129566))
+
+## [0.29.0](https://github.com/nodejs/corepack/compare/v0.28.2...v0.29.0) (2024-07-12)
+
+
+### Features
+
+* parallelize linking, unlinking and installing ([#524](https://github.com/nodejs/corepack/issues/524)) ([f0734e6](https://github.com/nodejs/corepack/commit/f0734e6e8023ff361dac179c0d8656740d550c27))
+* update package manager versions ([#492](https://github.com/nodejs/corepack/issues/492)) ([3e3b046](https://github.com/nodejs/corepack/commit/3e3b04619cb4a91f207a72fb450f6fc4e2f01aec))
+
+
+### Bug Fixes
+
+* replace npm registry domain in tarball URL ([#502](https://github.com/nodejs/corepack/issues/502)) ([db6fae5](https://github.com/nodejs/corepack/commit/db6fae50cf44884d1e9a6f7e99402e7e807ba3ca))
+* selectively import required semver functions ([#511](https://github.com/nodejs/corepack/issues/511)) ([e7ad533](https://github.com/nodejs/corepack/commit/e7ad533d43dc9495493f0d883c3cbbb94caa1d41))
+
 ## [0.28.2](https://github.com/nodejs/corepack/compare/v0.28.1...v0.28.2) (2024-05-31)
 
 
diff --git a/deps/corepack/dist/lib/corepack.cjs b/deps/corepack/dist/lib/corepack.cjs
index 5e3dbd3a1e5cf6..2714690cac4fe7 100644
--- a/deps/corepack/dist/lib/corepack.cjs
+++ b/deps/corepack/dist/lib/corepack.cjs
@@ -1037,9 +1037,18 @@ var init_lib = __esm({
   }
 });
 
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/debug.js
+var require_debug = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/debug.js"(exports2, module2) {
+    var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
+    };
+    module2.exports = debug2;
+  }
+});
+
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/constants.js
 var require_constants = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/constants.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/constants.js"(exports2, module2) {
     var SEMVER_SPEC_VERSION = "2.0.0";
     var MAX_LENGTH = 256;
     var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
@@ -1068,29 +1077,20 @@ var require_constants = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/debug.js
-var require_debug = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/debug.js"(exports, module2) {
-    var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
-    };
-    module2.exports = debug2;
-  }
-});
-
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/re.js
 var require_re = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/re.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/re.js"(exports2, module2) {
     var {
       MAX_SAFE_COMPONENT_LENGTH,
       MAX_SAFE_BUILD_LENGTH,
       MAX_LENGTH
     } = require_constants();
     var debug2 = require_debug();
-    exports = module2.exports = {};
-    var re = exports.re = [];
-    var safeRe = exports.safeRe = [];
-    var src = exports.src = [];
-    var t = exports.t = {};
+    exports2 = module2.exports = {};
+    var re = exports2.re = [];
+    var safeRe = exports2.safeRe = [];
+    var src = exports2.src = [];
+    var t = exports2.t = {};
     var R = 0;
     var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
     var safeRegexReplacements = [
@@ -1142,18 +1142,18 @@ var require_re = __commonJS({
     createToken("COERCERTLFULL", src[t.COERCEFULL], true);
     createToken("LONETILDE", "(?:~>?)");
     createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
-    exports.tildeTrimReplace = "$1~";
+    exports2.tildeTrimReplace = "$1~";
     createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
     createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
     createToken("LONECARET", "(?:\\^)");
     createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true);
-    exports.caretTrimReplace = "$1^";
+    exports2.caretTrimReplace = "$1^";
     createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
     createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
     createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
     createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
     createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
-    exports.comparatorTrimReplace = "$1$2$3";
+    exports2.comparatorTrimReplace = "$1$2$3";
     createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);
     createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);
     createToken("STAR", "(<|>)?=?\\s*\\*");
@@ -1164,7 +1164,7 @@ var require_re = __commonJS({
 
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/parse-options.js
 var require_parse_options = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/parse-options.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/parse-options.js"(exports2, module2) {
     var looseOption = Object.freeze({ loose: true });
     var emptyOpts = Object.freeze({});
     var parseOptions = (options) => {
@@ -1182,7 +1182,7 @@ var require_parse_options = __commonJS({
 
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/identifiers.js
 var require_identifiers = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/identifiers.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/identifiers.js"(exports2, module2) {
     var numeric = /^[0-9]+$/;
     var compareIdentifiers = (a, b) => {
       const anum = numeric.test(a);
@@ -1203,13 +1203,13 @@ var require_identifiers = __commonJS({
 
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/semver.js
 var require_semver = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/semver.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/semver.js"(exports2, module2) {
     var debug2 = require_debug();
     var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
     var { safeRe: re, t } = require_re();
     var parseOptions = require_parse_options();
     var { compareIdentifiers } = require_identifiers();
-    var SemVer = class _SemVer {
+    var SemVer3 = class _SemVer {
       constructor(version2, options) {
         options = parseOptions(options);
         if (version2 instanceof _SemVer) {
@@ -1439,20 +1439,38 @@ var require_semver = __commonJS({
         return this;
       }
     };
-    module2.exports = SemVer;
+    module2.exports = SemVer3;
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare.js
+var require_compare = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare.js"(exports2, module2) {
+    var SemVer3 = require_semver();
+    var compare = (a, b, loose) => new SemVer3(a, loose).compare(new SemVer3(b, loose));
+    module2.exports = compare;
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rcompare.js
+var require_rcompare = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rcompare.js"(exports2, module2) {
+    var compare = require_compare();
+    var rcompare = (a, b, loose) => compare(b, a, loose);
+    module2.exports = rcompare;
   }
 });
 
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/parse.js
 var require_parse = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/parse.js"(exports, module2) {
-    var SemVer = require_semver();
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/parse.js"(exports2, module2) {
+    var SemVer3 = require_semver();
     var parse = (version2, options, throwErrors = false) => {
-      if (version2 instanceof SemVer) {
+      if (version2 instanceof SemVer3) {
         return version2;
       }
       try {
-        return new SemVer(version2, options);
+        return new SemVer3(version2, options);
       } catch (er) {
         if (!throwErrors) {
           return null;
@@ -1466,7 +1484,7 @@ var require_parse = __commonJS({
 
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/valid.js
 var require_valid = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/valid.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/valid.js"(exports2, module2) {
     var parse = require_parse();
     var valid = (version2, options) => {
       const v = parse(version2, options);
@@ -1476,203 +1494,46 @@ var require_valid = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/clean.js
-var require_clean = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/clean.js"(exports, module2) {
-    var parse = require_parse();
-    var clean = (version2, options) => {
-      const s = parse(version2.trim().replace(/^[=v]+/, ""), options);
-      return s ? s.version : null;
-    };
-    module2.exports = clean;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/inc.js
-var require_inc = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/inc.js"(exports, module2) {
-    var SemVer = require_semver();
-    var inc = (version2, release, options, identifier, identifierBase) => {
-      if (typeof options === "string") {
-        identifierBase = identifier;
-        identifier = options;
-        options = void 0;
-      }
-      try {
-        return new SemVer(
-          version2 instanceof SemVer ? version2.version : version2,
-          options
-        ).inc(release, identifier, identifierBase).version;
-      } catch (er) {
-        return null;
-      }
-    };
-    module2.exports = inc;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/diff.js
-var require_diff = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/diff.js"(exports, module2) {
-    var parse = require_parse();
-    var diff = (version1, version2) => {
-      const v1 = parse(version1, null, true);
-      const v2 = parse(version2, null, true);
-      const comparison = v1.compare(v2);
-      if (comparison === 0) {
-        return null;
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/lrucache.js
+var require_lrucache = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/lrucache.js"(exports2, module2) {
+    var LRUCache = class {
+      constructor() {
+        this.max = 1e3;
+        this.map = /* @__PURE__ */ new Map();
       }
-      const v1Higher = comparison > 0;
-      const highVersion = v1Higher ? v1 : v2;
-      const lowVersion = v1Higher ? v2 : v1;
-      const highHasPre = !!highVersion.prerelease.length;
-      const lowHasPre = !!lowVersion.prerelease.length;
-      if (lowHasPre && !highHasPre) {
-        if (!lowVersion.patch && !lowVersion.minor) {
-          return "major";
-        }
-        if (highVersion.patch) {
-          return "patch";
-        }
-        if (highVersion.minor) {
-          return "minor";
+      get(key) {
+        const value = this.map.get(key);
+        if (value === void 0) {
+          return void 0;
+        } else {
+          this.map.delete(key);
+          this.map.set(key, value);
+          return value;
         }
-        return "major";
       }
-      const prefix = highHasPre ? "pre" : "";
-      if (v1.major !== v2.major) {
-        return prefix + "major";
-      }
-      if (v1.minor !== v2.minor) {
-        return prefix + "minor";
+      delete(key) {
+        return this.map.delete(key);
       }
-      if (v1.patch !== v2.patch) {
-        return prefix + "patch";
+      set(key, value) {
+        const deleted = this.delete(key);
+        if (!deleted && value !== void 0) {
+          if (this.map.size >= this.max) {
+            const firstKey = this.map.keys().next().value;
+            this.delete(firstKey);
+          }
+          this.map.set(key, value);
+        }
+        return this;
       }
-      return "prerelease";
-    };
-    module2.exports = diff;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/major.js
-var require_major = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/major.js"(exports, module2) {
-    var SemVer = require_semver();
-    var major = (a, loose) => new SemVer(a, loose).major;
-    module2.exports = major;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/minor.js
-var require_minor = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/minor.js"(exports, module2) {
-    var SemVer = require_semver();
-    var minor = (a, loose) => new SemVer(a, loose).minor;
-    module2.exports = minor;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/patch.js
-var require_patch = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/patch.js"(exports, module2) {
-    var SemVer = require_semver();
-    var patch = (a, loose) => new SemVer(a, loose).patch;
-    module2.exports = patch;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/prerelease.js
-var require_prerelease = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/prerelease.js"(exports, module2) {
-    var parse = require_parse();
-    var prerelease = (version2, options) => {
-      const parsed = parse(version2, options);
-      return parsed && parsed.prerelease.length ? parsed.prerelease : null;
-    };
-    module2.exports = prerelease;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare.js
-var require_compare = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare.js"(exports, module2) {
-    var SemVer = require_semver();
-    var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
-    module2.exports = compare;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rcompare.js
-var require_rcompare = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rcompare.js"(exports, module2) {
-    var compare = require_compare();
-    var rcompare = (a, b, loose) => compare(b, a, loose);
-    module2.exports = rcompare;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare-loose.js
-var require_compare_loose = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare-loose.js"(exports, module2) {
-    var compare = require_compare();
-    var compareLoose = (a, b) => compare(a, b, true);
-    module2.exports = compareLoose;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare-build.js
-var require_compare_build = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare-build.js"(exports, module2) {
-    var SemVer = require_semver();
-    var compareBuild = (a, b, loose) => {
-      const versionA = new SemVer(a, loose);
-      const versionB = new SemVer(b, loose);
-      return versionA.compare(versionB) || versionA.compareBuild(versionB);
     };
-    module2.exports = compareBuild;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/sort.js
-var require_sort = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/sort.js"(exports, module2) {
-    var compareBuild = require_compare_build();
-    var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
-    module2.exports = sort;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rsort.js
-var require_rsort = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rsort.js"(exports, module2) {
-    var compareBuild = require_compare_build();
-    var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
-    module2.exports = rsort;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gt.js
-var require_gt = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gt.js"(exports, module2) {
-    var compare = require_compare();
-    var gt = (a, b, loose) => compare(a, b, loose) > 0;
-    module2.exports = gt;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lt.js
-var require_lt = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lt.js"(exports, module2) {
-    var compare = require_compare();
-    var lt = (a, b, loose) => compare(a, b, loose) < 0;
-    module2.exports = lt;
+    module2.exports = LRUCache;
   }
 });
 
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/eq.js
 var require_eq = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/eq.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/eq.js"(exports2, module2) {
     var compare = require_compare();
     var eq = (a, b, loose) => compare(a, b, loose) === 0;
     module2.exports = eq;
@@ -1681,25 +1542,43 @@ var require_eq = __commonJS({
 
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/neq.js
 var require_neq = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/neq.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/neq.js"(exports2, module2) {
     var compare = require_compare();
     var neq = (a, b, loose) => compare(a, b, loose) !== 0;
     module2.exports = neq;
   }
 });
 
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gt.js
+var require_gt = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gt.js"(exports2, module2) {
+    var compare = require_compare();
+    var gt = (a, b, loose) => compare(a, b, loose) > 0;
+    module2.exports = gt;
+  }
+});
+
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gte.js
 var require_gte = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gte.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gte.js"(exports2, module2) {
     var compare = require_compare();
     var gte = (a, b, loose) => compare(a, b, loose) >= 0;
     module2.exports = gte;
   }
 });
 
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lt.js
+var require_lt = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lt.js"(exports2, module2) {
+    var compare = require_compare();
+    var lt = (a, b, loose) => compare(a, b, loose) < 0;
+    module2.exports = lt;
+  }
+});
+
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lte.js
 var require_lte = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lte.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lte.js"(exports2, module2) {
     var compare = require_compare();
     var lte = (a, b, loose) => compare(a, b, loose) <= 0;
     module2.exports = lte;
@@ -1708,7 +1587,7 @@ var require_lte = __commonJS({
 
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/cmp.js
 var require_cmp = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/cmp.js"(exports, module2) {
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/cmp.js"(exports2, module2) {
     var eq = require_eq();
     var neq = require_neq();
     var gt = require_gt();
@@ -1755,103 +1634,133 @@ var require_cmp = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/coerce.js
-var require_coerce = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/coerce.js"(exports, module2) {
-    var SemVer = require_semver();
-    var parse = require_parse();
-    var { safeRe: re, t } = require_re();
-    var coerce = (version2, options) => {
-      if (version2 instanceof SemVer) {
-        return version2;
-      }
-      if (typeof version2 === "number") {
-        version2 = String(version2);
-      }
-      if (typeof version2 !== "string") {
-        return null;
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/comparator.js
+var require_comparator = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/comparator.js"(exports2, module2) {
+    var ANY = Symbol("SemVer ANY");
+    var Comparator = class _Comparator {
+      static get ANY() {
+        return ANY;
       }
-      options = options || {};
-      let match = null;
-      if (!options.rtl) {
-        match = version2.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
-      } else {
-        const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];
-        let next;
-        while ((next = coerceRtlRegex.exec(version2)) && (!match || match.index + match[0].length !== version2.length)) {
-          if (!match || next.index + next[0].length !== match.index + match[0].length) {
-            match = next;
+      constructor(comp, options) {
+        options = parseOptions(options);
+        if (comp instanceof _Comparator) {
+          if (comp.loose === !!options.loose) {
+            return comp;
+          } else {
+            comp = comp.value;
           }
-          coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;
         }
-        coerceRtlRegex.lastIndex = -1;
-      }
-      if (match === null) {
-        return null;
-      }
-      const major = match[2];
-      const minor = match[3] || "0";
-      const patch = match[4] || "0";
-      const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : "";
-      const build = options.includePrerelease && match[6] ? `+${match[6]}` : "";
-      return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options);
-    };
-    module2.exports = coerce;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/lrucache.js
-var require_lrucache = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/lrucache.js"(exports, module2) {
-    var LRUCache = class {
-      constructor() {
-        this.max = 1e3;
-        this.map = /* @__PURE__ */ new Map();
+        comp = comp.trim().split(/\s+/).join(" ");
+        debug2("comparator", comp, options);
+        this.options = options;
+        this.loose = !!options.loose;
+        this.parse(comp);
+        if (this.semver === ANY) {
+          this.value = "";
+        } else {
+          this.value = this.operator + this.semver.version;
+        }
+        debug2("comp", this);
       }
-      get(key) {
-        const value = this.map.get(key);
-        if (value === void 0) {
-          return void 0;
+      parse(comp) {
+        const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+        const m = comp.match(r);
+        if (!m) {
+          throw new TypeError(`Invalid comparator: ${comp}`);
+        }
+        this.operator = m[1] !== void 0 ? m[1] : "";
+        if (this.operator === "=") {
+          this.operator = "";
+        }
+        if (!m[2]) {
+          this.semver = ANY;
         } else {
-          this.map.delete(key);
-          this.map.set(key, value);
-          return value;
+          this.semver = new SemVer3(m[2], this.options.loose);
         }
       }
-      delete(key) {
-        return this.map.delete(key);
+      toString() {
+        return this.value;
       }
-      set(key, value) {
-        const deleted = this.delete(key);
-        if (!deleted && value !== void 0) {
-          if (this.map.size >= this.max) {
-            const firstKey = this.map.keys().next().value;
-            this.delete(firstKey);
-          }
-          this.map.set(key, value);
+      test(version2) {
+        debug2("Comparator.test", version2, this.options.loose);
+        if (this.semver === ANY || version2 === ANY) {
+          return true;
         }
-        return this;
-      }
-    };
-    module2.exports = LRUCache;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/range.js
-var require_range = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/range.js"(exports, module2) {
-    var Range = class _Range {
-      constructor(range, options) {
-        options = parseOptions(options);
-        if (range instanceof _Range) {
-          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
-            return range;
-          } else {
-            return new _Range(range.raw, options);
+        if (typeof version2 === "string") {
+          try {
+            version2 = new SemVer3(version2, this.options);
+          } catch (er) {
+            return false;
           }
         }
-        if (range instanceof Comparator) {
-          this.raw = range.value;
+        return cmp(version2, this.operator, this.semver, this.options);
+      }
+      intersects(comp, options) {
+        if (!(comp instanceof _Comparator)) {
+          throw new TypeError("a Comparator is required");
+        }
+        if (this.operator === "") {
+          if (this.value === "") {
+            return true;
+          }
+          return new Range3(comp.value, options).test(this.value);
+        } else if (comp.operator === "") {
+          if (comp.value === "") {
+            return true;
+          }
+          return new Range3(this.value, options).test(comp.semver);
+        }
+        options = parseOptions(options);
+        if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
+          return false;
+        }
+        if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
+          return false;
+        }
+        if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
+          return true;
+        }
+        if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
+          return true;
+        }
+        if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
+          return true;
+        }
+        if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
+          return true;
+        }
+        if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
+          return true;
+        }
+        return false;
+      }
+    };
+    module2.exports = Comparator;
+    var parseOptions = require_parse_options();
+    var { safeRe: re, t } = require_re();
+    var cmp = require_cmp();
+    var debug2 = require_debug();
+    var SemVer3 = require_semver();
+    var Range3 = require_range();
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/range.js
+var require_range = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/range.js"(exports2, module2) {
+    var Range3 = class _Range {
+      constructor(range, options) {
+        options = parseOptions(options);
+        if (range instanceof _Range) {
+          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+            return range;
+          } else {
+            return new _Range(range.raw, options);
+          }
+        }
+        if (range instanceof Comparator) {
+          this.raw = range.value;
           this.set = [[range]];
           this.format();
           return this;
@@ -1948,7 +1857,7 @@ var require_range = __commonJS({
         }
         if (typeof version2 === "string") {
           try {
-            version2 = new SemVer(version2, this.options);
+            version2 = new SemVer3(version2, this.options);
           } catch (er) {
             return false;
           }
@@ -1961,13 +1870,13 @@ var require_range = __commonJS({
         return false;
       }
     };
-    module2.exports = Range;
+    module2.exports = Range3;
     var LRU = require_lrucache();
     var cache = new LRU();
     var parseOptions = require_parse_options();
     var Comparator = require_comparator();
     var debug2 = require_debug();
-    var SemVer = require_semver();
+    var SemVer3 = require_semver();
     var {
       safeRe: re,
       t,
@@ -2194,677 +2103,24 @@ var require_range = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/comparator.js
-var require_comparator = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/comparator.js"(exports, module2) {
-    var ANY = Symbol("SemVer ANY");
-    var Comparator = class _Comparator {
-      static get ANY() {
-        return ANY;
-      }
-      constructor(comp, options) {
-        options = parseOptions(options);
-        if (comp instanceof _Comparator) {
-          if (comp.loose === !!options.loose) {
-            return comp;
-          } else {
-            comp = comp.value;
-          }
-        }
-        comp = comp.trim().split(/\s+/).join(" ");
-        debug2("comparator", comp, options);
-        this.options = options;
-        this.loose = !!options.loose;
-        this.parse(comp);
-        if (this.semver === ANY) {
-          this.value = "";
-        } else {
-          this.value = this.operator + this.semver.version;
-        }
-        debug2("comp", this);
-      }
-      parse(comp) {
-        const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
-        const m = comp.match(r);
-        if (!m) {
-          throw new TypeError(`Invalid comparator: ${comp}`);
-        }
-        this.operator = m[1] !== void 0 ? m[1] : "";
-        if (this.operator === "=") {
-          this.operator = "";
-        }
-        if (!m[2]) {
-          this.semver = ANY;
-        } else {
-          this.semver = new SemVer(m[2], this.options.loose);
-        }
-      }
-      toString() {
-        return this.value;
-      }
-      test(version2) {
-        debug2("Comparator.test", version2, this.options.loose);
-        if (this.semver === ANY || version2 === ANY) {
-          return true;
-        }
-        if (typeof version2 === "string") {
-          try {
-            version2 = new SemVer(version2, this.options);
-          } catch (er) {
-            return false;
-          }
-        }
-        return cmp(version2, this.operator, this.semver, this.options);
-      }
-      intersects(comp, options) {
-        if (!(comp instanceof _Comparator)) {
-          throw new TypeError("a Comparator is required");
-        }
-        if (this.operator === "") {
-          if (this.value === "") {
-            return true;
-          }
-          return new Range(comp.value, options).test(this.value);
-        } else if (comp.operator === "") {
-          if (comp.value === "") {
-            return true;
-          }
-          return new Range(this.value, options).test(comp.semver);
-        }
-        options = parseOptions(options);
-        if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) {
-          return false;
-        }
-        if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) {
-          return false;
-        }
-        if (this.operator.startsWith(">") && comp.operator.startsWith(">")) {
-          return true;
-        }
-        if (this.operator.startsWith("<") && comp.operator.startsWith("<")) {
-          return true;
-        }
-        if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) {
-          return true;
-        }
-        if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) {
-          return true;
-        }
-        if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) {
-          return true;
-        }
-        return false;
-      }
-    };
-    module2.exports = Comparator;
-    var parseOptions = require_parse_options();
-    var { safeRe: re, t } = require_re();
-    var cmp = require_cmp();
-    var debug2 = require_debug();
-    var SemVer = require_semver();
-    var Range = require_range();
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/satisfies.js
-var require_satisfies = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/satisfies.js"(exports, module2) {
-    var Range = require_range();
-    var satisfies = (version2, range, options) => {
-      try {
-        range = new Range(range, options);
-      } catch (er) {
-        return false;
-      }
-      return range.test(version2);
-    };
-    module2.exports = satisfies;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/to-comparators.js
-var require_to_comparators = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/to-comparators.js"(exports, module2) {
-    var Range = require_range();
-    var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
-    module2.exports = toComparators;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/max-satisfying.js
-var require_max_satisfying = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/max-satisfying.js"(exports, module2) {
-    var SemVer = require_semver();
-    var Range = require_range();
-    var maxSatisfying = (versions, range, options) => {
-      let max = null;
-      let maxSV = null;
-      let rangeObj = null;
-      try {
-        rangeObj = new Range(range, options);
-      } catch (er) {
-        return null;
-      }
-      versions.forEach((v) => {
-        if (rangeObj.test(v)) {
-          if (!max || maxSV.compare(v) === -1) {
-            max = v;
-            maxSV = new SemVer(max, options);
-          }
-        }
-      });
-      return max;
-    };
-    module2.exports = maxSatisfying;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/min-satisfying.js
-var require_min_satisfying = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/min-satisfying.js"(exports, module2) {
-    var SemVer = require_semver();
-    var Range = require_range();
-    var minSatisfying = (versions, range, options) => {
-      let min = null;
-      let minSV = null;
-      let rangeObj = null;
-      try {
-        rangeObj = new Range(range, options);
-      } catch (er) {
-        return null;
-      }
-      versions.forEach((v) => {
-        if (rangeObj.test(v)) {
-          if (!min || minSV.compare(v) === 1) {
-            min = v;
-            minSV = new SemVer(min, options);
-          }
-        }
-      });
-      return min;
-    };
-    module2.exports = minSatisfying;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/min-version.js
-var require_min_version = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/min-version.js"(exports, module2) {
-    var SemVer = require_semver();
-    var Range = require_range();
-    var gt = require_gt();
-    var minVersion = (range, loose) => {
-      range = new Range(range, loose);
-      let minver = new SemVer("0.0.0");
-      if (range.test(minver)) {
-        return minver;
-      }
-      minver = new SemVer("0.0.0-0");
-      if (range.test(minver)) {
-        return minver;
-      }
-      minver = null;
-      for (let i = 0; i < range.set.length; ++i) {
-        const comparators = range.set[i];
-        let setMin = null;
-        comparators.forEach((comparator) => {
-          const compver = new SemVer(comparator.semver.version);
-          switch (comparator.operator) {
-            case ">":
-              if (compver.prerelease.length === 0) {
-                compver.patch++;
-              } else {
-                compver.prerelease.push(0);
-              }
-              compver.raw = compver.format();
-            case "":
-            case ">=":
-              if (!setMin || gt(compver, setMin)) {
-                setMin = compver;
-              }
-              break;
-            case "<":
-            case "<=":
-              break;
-            default:
-              throw new Error(`Unexpected operation: ${comparator.operator}`);
-          }
-        });
-        if (setMin && (!minver || gt(minver, setMin))) {
-          minver = setMin;
-        }
-      }
-      if (minver && range.test(minver)) {
-        return minver;
-      }
-      return null;
-    };
-    module2.exports = minVersion;
-  }
-});
-
 // .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/valid.js
 var require_valid2 = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/valid.js"(exports, module2) {
-    var Range = require_range();
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/valid.js"(exports2, module2) {
+    var Range3 = require_range();
     var validRange = (range, options) => {
       try {
-        return new Range(range, options).range || "*";
+        return new Range3(range, options).range || "*";
       } catch (er) {
         return null;
       }
     };
-    module2.exports = validRange;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/outside.js
-var require_outside = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/outside.js"(exports, module2) {
-    var SemVer = require_semver();
-    var Comparator = require_comparator();
-    var { ANY } = Comparator;
-    var Range = require_range();
-    var satisfies = require_satisfies();
-    var gt = require_gt();
-    var lt = require_lt();
-    var lte = require_lte();
-    var gte = require_gte();
-    var outside = (version2, range, hilo, options) => {
-      version2 = new SemVer(version2, options);
-      range = new Range(range, options);
-      let gtfn, ltefn, ltfn, comp, ecomp;
-      switch (hilo) {
-        case ">":
-          gtfn = gt;
-          ltefn = lte;
-          ltfn = lt;
-          comp = ">";
-          ecomp = ">=";
-          break;
-        case "<":
-          gtfn = lt;
-          ltefn = gte;
-          ltfn = gt;
-          comp = "<";
-          ecomp = "<=";
-          break;
-        default:
-          throw new TypeError('Must provide a hilo val of "<" or ">"');
-      }
-      if (satisfies(version2, range, options)) {
-        return false;
-      }
-      for (let i = 0; i < range.set.length; ++i) {
-        const comparators = range.set[i];
-        let high = null;
-        let low = null;
-        comparators.forEach((comparator) => {
-          if (comparator.semver === ANY) {
-            comparator = new Comparator(">=0.0.0");
-          }
-          high = high || comparator;
-          low = low || comparator;
-          if (gtfn(comparator.semver, high.semver, options)) {
-            high = comparator;
-          } else if (ltfn(comparator.semver, low.semver, options)) {
-            low = comparator;
-          }
-        });
-        if (high.operator === comp || high.operator === ecomp) {
-          return false;
-        }
-        if ((!low.operator || low.operator === comp) && ltefn(version2, low.semver)) {
-          return false;
-        } else if (low.operator === ecomp && ltfn(version2, low.semver)) {
-          return false;
-        }
-      }
-      return true;
-    };
-    module2.exports = outside;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/gtr.js
-var require_gtr = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/gtr.js"(exports, module2) {
-    var outside = require_outside();
-    var gtr = (version2, range, options) => outside(version2, range, ">", options);
-    module2.exports = gtr;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/ltr.js
-var require_ltr = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/ltr.js"(exports, module2) {
-    var outside = require_outside();
-    var ltr = (version2, range, options) => outside(version2, range, "<", options);
-    module2.exports = ltr;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/intersects.js
-var require_intersects = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/intersects.js"(exports, module2) {
-    var Range = require_range();
-    var intersects = (r1, r2, options) => {
-      r1 = new Range(r1, options);
-      r2 = new Range(r2, options);
-      return r1.intersects(r2, options);
-    };
-    module2.exports = intersects;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/simplify.js
-var require_simplify = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/simplify.js"(exports, module2) {
-    var satisfies = require_satisfies();
-    var compare = require_compare();
-    module2.exports = (versions, range, options) => {
-      const set = [];
-      let first = null;
-      let prev = null;
-      const v = versions.sort((a, b) => compare(a, b, options));
-      for (const version2 of v) {
-        const included = satisfies(version2, range, options);
-        if (included) {
-          prev = version2;
-          if (!first) {
-            first = version2;
-          }
-        } else {
-          if (prev) {
-            set.push([first, prev]);
-          }
-          prev = null;
-          first = null;
-        }
-      }
-      if (first) {
-        set.push([first, null]);
-      }
-      const ranges = [];
-      for (const [min, max] of set) {
-        if (min === max) {
-          ranges.push(min);
-        } else if (!max && min === v[0]) {
-          ranges.push("*");
-        } else if (!max) {
-          ranges.push(`>=${min}`);
-        } else if (min === v[0]) {
-          ranges.push(`<=${max}`);
-        } else {
-          ranges.push(`${min} - ${max}`);
-        }
-      }
-      const simplified = ranges.join(" || ");
-      const original = typeof range.raw === "string" ? range.raw : String(range);
-      return simplified.length < original.length ? simplified : range;
-    };
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/subset.js
-var require_subset = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/subset.js"(exports, module2) {
-    var Range = require_range();
-    var Comparator = require_comparator();
-    var { ANY } = Comparator;
-    var satisfies = require_satisfies();
-    var compare = require_compare();
-    var subset = (sub, dom, options = {}) => {
-      if (sub === dom) {
-        return true;
-      }
-      sub = new Range(sub, options);
-      dom = new Range(dom, options);
-      let sawNonNull = false;
-      OUTER:
-        for (const simpleSub of sub.set) {
-          for (const simpleDom of dom.set) {
-            const isSub = simpleSubset(simpleSub, simpleDom, options);
-            sawNonNull = sawNonNull || isSub !== null;
-            if (isSub) {
-              continue OUTER;
-            }
-          }
-          if (sawNonNull) {
-            return false;
-          }
-        }
-      return true;
-    };
-    var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")];
-    var minimumVersion = [new Comparator(">=0.0.0")];
-    var simpleSubset = (sub, dom, options) => {
-      if (sub === dom) {
-        return true;
-      }
-      if (sub.length === 1 && sub[0].semver === ANY) {
-        if (dom.length === 1 && dom[0].semver === ANY) {
-          return true;
-        } else if (options.includePrerelease) {
-          sub = minimumVersionWithPreRelease;
-        } else {
-          sub = minimumVersion;
-        }
-      }
-      if (dom.length === 1 && dom[0].semver === ANY) {
-        if (options.includePrerelease) {
-          return true;
-        } else {
-          dom = minimumVersion;
-        }
-      }
-      const eqSet = /* @__PURE__ */ new Set();
-      let gt, lt;
-      for (const c of sub) {
-        if (c.operator === ">" || c.operator === ">=") {
-          gt = higherGT(gt, c, options);
-        } else if (c.operator === "<" || c.operator === "<=") {
-          lt = lowerLT(lt, c, options);
-        } else {
-          eqSet.add(c.semver);
-        }
-      }
-      if (eqSet.size > 1) {
-        return null;
-      }
-      let gtltComp;
-      if (gt && lt) {
-        gtltComp = compare(gt.semver, lt.semver, options);
-        if (gtltComp > 0) {
-          return null;
-        } else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) {
-          return null;
-        }
-      }
-      for (const eq of eqSet) {
-        if (gt && !satisfies(eq, String(gt), options)) {
-          return null;
-        }
-        if (lt && !satisfies(eq, String(lt), options)) {
-          return null;
-        }
-        for (const c of dom) {
-          if (!satisfies(eq, String(c), options)) {
-            return false;
-          }
-        }
-        return true;
-      }
-      let higher, lower;
-      let hasDomLT, hasDomGT;
-      let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false;
-      let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false;
-      if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) {
-        needDomLTPre = false;
-      }
-      for (const c of dom) {
-        hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">=";
-        hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<=";
-        if (gt) {
-          if (needDomGTPre) {
-            if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) {
-              needDomGTPre = false;
-            }
-          }
-          if (c.operator === ">" || c.operator === ">=") {
-            higher = higherGT(gt, c, options);
-            if (higher === c && higher !== gt) {
-              return false;
-            }
-          } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) {
-            return false;
-          }
-        }
-        if (lt) {
-          if (needDomLTPre) {
-            if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) {
-              needDomLTPre = false;
-            }
-          }
-          if (c.operator === "<" || c.operator === "<=") {
-            lower = lowerLT(lt, c, options);
-            if (lower === c && lower !== lt) {
-              return false;
-            }
-          } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) {
-            return false;
-          }
-        }
-        if (!c.operator && (lt || gt) && gtltComp !== 0) {
-          return false;
-        }
-      }
-      if (gt && hasDomLT && !lt && gtltComp !== 0) {
-        return false;
-      }
-      if (lt && hasDomGT && !gt && gtltComp !== 0) {
-        return false;
-      }
-      if (needDomGTPre || needDomLTPre) {
-        return false;
-      }
-      return true;
-    };
-    var higherGT = (a, b, options) => {
-      if (!a) {
-        return b;
-      }
-      const comp = compare(a.semver, b.semver, options);
-      return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a;
-    };
-    var lowerLT = (a, b, options) => {
-      if (!a) {
-        return b;
-      }
-      const comp = compare(a.semver, b.semver, options);
-      return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a;
-    };
-    module2.exports = subset;
-  }
-});
-
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/index.js
-var require_semver2 = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/index.js"(exports, module2) {
-    var internalRe = require_re();
-    var constants = require_constants();
-    var SemVer = require_semver();
-    var identifiers = require_identifiers();
-    var parse = require_parse();
-    var valid = require_valid();
-    var clean = require_clean();
-    var inc = require_inc();
-    var diff = require_diff();
-    var major = require_major();
-    var minor = require_minor();
-    var patch = require_patch();
-    var prerelease = require_prerelease();
-    var compare = require_compare();
-    var rcompare = require_rcompare();
-    var compareLoose = require_compare_loose();
-    var compareBuild = require_compare_build();
-    var sort = require_sort();
-    var rsort = require_rsort();
-    var gt = require_gt();
-    var lt = require_lt();
-    var eq = require_eq();
-    var neq = require_neq();
-    var gte = require_gte();
-    var lte = require_lte();
-    var cmp = require_cmp();
-    var coerce = require_coerce();
-    var Comparator = require_comparator();
-    var Range = require_range();
-    var satisfies = require_satisfies();
-    var toComparators = require_to_comparators();
-    var maxSatisfying = require_max_satisfying();
-    var minSatisfying = require_min_satisfying();
-    var minVersion = require_min_version();
-    var validRange = require_valid2();
-    var outside = require_outside();
-    var gtr = require_gtr();
-    var ltr = require_ltr();
-    var intersects = require_intersects();
-    var simplifyRange = require_simplify();
-    var subset = require_subset();
-    module2.exports = {
-      parse,
-      valid,
-      clean,
-      inc,
-      diff,
-      major,
-      minor,
-      patch,
-      prerelease,
-      compare,
-      rcompare,
-      compareLoose,
-      compareBuild,
-      sort,
-      rsort,
-      gt,
-      lt,
-      eq,
-      neq,
-      gte,
-      lte,
-      cmp,
-      coerce,
-      Comparator,
-      Range,
-      satisfies,
-      toComparators,
-      maxSatisfying,
-      minSatisfying,
-      minVersion,
-      validRange,
-      outside,
-      gtr,
-      ltr,
-      intersects,
-      simplifyRange,
-      subset,
-      SemVer,
-      re: internalRe.re,
-      src: internalRe.src,
-      tokens: internalRe.t,
-      SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
-      RELEASE_TYPES: constants.RELEASE_TYPES,
-      compareIdentifiers: identifiers.compareIdentifiers,
-      rcompareIdentifiers: identifiers.rcompareIdentifiers
-    };
+    module2.exports = validRange;
   }
 });
 
 // .yarn/cache/ms-npm-2.1.2-ec0c1512ff-a437714e2f.zip/node_modules/ms/index.js
 var require_ms = __commonJS({
-  ".yarn/cache/ms-npm-2.1.2-ec0c1512ff-a437714e2f.zip/node_modules/ms/index.js"(exports, module2) {
+  ".yarn/cache/ms-npm-2.1.2-ec0c1512ff-a437714e2f.zip/node_modules/ms/index.js"(exports2, module2) {
     var s = 1e3;
     var m = s * 60;
     var h = m * 60;
@@ -2978,9 +2234,9 @@ var require_ms = __commonJS({
   }
 });
 
-// .yarn/__virtual__/debug-virtual-80c19f725b/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/src/common.js
+// .yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/common.js
 var require_common = __commonJS({
-  ".yarn/__virtual__/debug-virtual-80c19f725b/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/src/common.js"(exports, module2) {
+  ".yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/common.js"(exports2, module2) {
     function setup(env2) {
       createDebug.debug = createDebug;
       createDebug.default = createDebug;
@@ -3141,15 +2397,15 @@ var require_common = __commonJS({
   }
 });
 
-// .yarn/__virtual__/debug-virtual-80c19f725b/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/src/browser.js
+// .yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/browser.js
 var require_browser = __commonJS({
-  ".yarn/__virtual__/debug-virtual-80c19f725b/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/src/browser.js"(exports, module2) {
-    exports.formatArgs = formatArgs;
-    exports.save = save;
-    exports.load = load;
-    exports.useColors = useColors;
-    exports.storage = localstorage();
-    exports.destroy = (() => {
+  ".yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/browser.js"(exports2, module2) {
+    exports2.formatArgs = formatArgs;
+    exports2.save = save;
+    exports2.load = load;
+    exports2.useColors = useColors;
+    exports2.storage = localstorage();
+    exports2.destroy = /* @__PURE__ */ (() => {
       let warned = false;
       return () => {
         if (!warned) {
@@ -3158,7 +2414,7 @@ var require_browser = __commonJS({
         }
       };
     })();
-    exports.colors = [
+    exports2.colors = [
       "#0000CC",
       "#0000FF",
       "#0033CC",
@@ -3269,14 +2525,14 @@ var require_browser = __commonJS({
       });
       args.splice(lastC, 0, c);
     }
-    exports.log = console.debug || console.log || (() => {
+    exports2.log = console.debug || console.log || (() => {
     });
     function save(namespaces) {
       try {
         if (namespaces) {
-          exports.storage.setItem("debug", namespaces);
+          exports2.storage.setItem("debug", namespaces);
         } else {
-          exports.storage.removeItem("debug");
+          exports2.storage.removeItem("debug");
         }
       } catch (error) {
       }
@@ -3284,7 +2540,7 @@ var require_browser = __commonJS({
     function load() {
       let r;
       try {
-        r = exports.storage.getItem("debug");
+        r = exports2.storage.getItem("debug");
       } catch (error) {
       }
       if (!r && typeof process !== "undefined" && "env" in process) {
@@ -3298,7 +2554,7 @@ var require_browser = __commonJS({
       } catch (error) {
       }
     }
-    module2.exports = require_common()(exports);
+    module2.exports = require_common()(exports2);
     var { formatters } = module2.exports;
     formatters.j = function(v) {
       try {
@@ -3445,27 +2701,27 @@ var init_supports_color = __esm({
   }
 });
 
-// .yarn/__virtual__/debug-virtual-80c19f725b/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/src/node.js
+// .yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/node.js
 var require_node = __commonJS({
-  ".yarn/__virtual__/debug-virtual-80c19f725b/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/src/node.js"(exports, module2) {
+  ".yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/node.js"(exports2, module2) {
     var tty3 = require("tty");
     var util = require("util");
-    exports.init = init;
-    exports.log = log2;
-    exports.formatArgs = formatArgs;
-    exports.save = save;
-    exports.load = load;
-    exports.useColors = useColors;
-    exports.destroy = util.deprecate(
+    exports2.init = init;
+    exports2.log = log2;
+    exports2.formatArgs = formatArgs;
+    exports2.save = save;
+    exports2.load = load;
+    exports2.useColors = useColors;
+    exports2.destroy = util.deprecate(
       () => {
       },
       "Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."
     );
-    exports.colors = [6, 2, 3, 4, 5, 1];
+    exports2.colors = [6, 2, 3, 4, 5, 1];
     try {
       const supportsColor2 = (init_supports_color(), __toCommonJS(supports_color_exports));
       if (supportsColor2 && (supportsColor2.stderr || supportsColor2).level >= 2) {
-        exports.colors = [
+        exports2.colors = [
           20,
           21,
           26,
@@ -3546,7 +2802,7 @@ var require_node = __commonJS({
       }
     } catch (error) {
     }
-    exports.inspectOpts = Object.keys(process.env).filter((key) => {
+    exports2.inspectOpts = Object.keys(process.env).filter((key) => {
       return /^debug_/i.test(key);
     }).reduce((obj, key) => {
       const prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, (_, k) => {
@@ -3566,7 +2822,7 @@ var require_node = __commonJS({
       return obj;
     }, {});
     function useColors() {
-      return "colors" in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty3.isatty(process.stderr.fd);
+      return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty3.isatty(process.stderr.fd);
     }
     function formatArgs(args) {
       const { namespace: name, useColors: useColors2 } = this;
@@ -3581,13 +2837,13 @@ var require_node = __commonJS({
       }
     }
     function getDate() {
-      if (exports.inspectOpts.hideDate) {
+      if (exports2.inspectOpts.hideDate) {
         return "";
       }
       return (/* @__PURE__ */ new Date()).toISOString() + " ";
     }
     function log2(...args) {
-      return process.stderr.write(util.format(...args) + "\n");
+      return process.stderr.write(util.formatWithOptions(exports2.inspectOpts, ...args) + "\n");
     }
     function save(namespaces) {
       if (namespaces) {
@@ -3601,12 +2857,12 @@ var require_node = __commonJS({
     }
     function init(debug2) {
       debug2.inspectOpts = {};
-      const keys = Object.keys(exports.inspectOpts);
+      const keys = Object.keys(exports2.inspectOpts);
       for (let i = 0; i < keys.length; i++) {
-        debug2.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
+        debug2.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]];
       }
     }
-    module2.exports = require_common()(exports);
+    module2.exports = require_common()(exports2);
     var { formatters } = module2.exports;
     formatters.o = function(v) {
       this.inspectOpts.colors = this.useColors;
@@ -3619,9 +2875,9 @@ var require_node = __commonJS({
   }
 });
 
-// .yarn/__virtual__/debug-virtual-80c19f725b/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/src/index.js
+// .yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/index.js
 var require_src = __commonJS({
-  ".yarn/__virtual__/debug-virtual-80c19f725b/0/cache/debug-npm-4.3.4-4513954577-cedbec4529.zip/node_modules/debug/src/index.js"(exports, module2) {
+  ".yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/index.js"(exports2, module2) {
     if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
       module2.exports = require_browser();
     } else {
@@ -3632,7 +2888,7 @@ var require_src = __commonJS({
 
 // .yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-fe7dd8b1bd.zip/node_modules/proxy-from-env/index.js
 var require_proxy_from_env = __commonJS({
-  ".yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-fe7dd8b1bd.zip/node_modules/proxy-from-env/index.js"(exports) {
+  ".yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-fe7dd8b1bd.zip/node_modules/proxy-from-env/index.js"(exports2) {
     "use strict";
     var parseUrl = require("url").parse;
     var DEFAULT_PORTS = {
@@ -3696,13 +2952,13 @@ var require_proxy_from_env = __commonJS({
     function getEnv(key) {
       return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || "";
     }
-    exports.getProxyForUrl = getProxyForUrl;
+    exports2.getProxyForUrl = getProxyForUrl;
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/errors.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/errors.js
 var require_errors = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/errors.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/errors.js"(exports2, module2) {
     "use strict";
     var UndiciError = class extends Error {
       constructor(message) {
@@ -3914,9 +3170,9 @@ var require_errors = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/symbols.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/symbols.js
 var require_symbols = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/symbols.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/symbols.js"(exports2, module2) {
     module2.exports = {
       kClose: Symbol("close"),
       kDestroy: Symbol("destroy"),
@@ -3987,9 +3243,9 @@ var require_symbols = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/constants.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/constants.js
 var require_constants2 = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/constants.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/constants.js"(exports2, module2) {
     "use strict";
     var headerNameLowerCasedRecord = {};
     var wellknownHeaderNames = [
@@ -4102,9 +3358,9 @@ var require_constants2 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/tree.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/tree.js
 var require_tree = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/tree.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/tree.js"(exports2, module2) {
     "use strict";
     var {
       wellknownHeaderNames,
@@ -4242,9 +3498,9 @@ var require_tree = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/util.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/util.js
 var require_util = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/util.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/util.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols();
@@ -4386,8 +3642,7 @@ var require_util = __commonJS({
         return host.substring(1, idx2);
       }
       const idx = host.indexOf(":");
-      if (idx === -1)
-        return host;
+      if (idx === -1) return host;
       return host.substring(0, idx);
     }
     function getServerName(host) {
@@ -4456,8 +3711,7 @@ var require_util = __commonJS({
       return tree.lookup(value) ?? value.toString("latin1").toLowerCase();
     }
     function parseHeaders(headers, obj) {
-      if (obj === void 0)
-        obj = {};
+      if (obj === void 0) obj = {};
       for (let i = 0; i < headers.length; i += 2) {
         const key = headerNameToString(headers[i]);
         let val = obj[key];
@@ -4649,8 +3903,7 @@ var require_util = __commonJS({
       return !headerCharRegex.test(characters);
     }
     function parseRangeHeader(range) {
-      if (range == null || range === "")
-        return { start: 0, end: null, size: null };
+      if (range == null || range === "") return { start: 0, end: null, size: null };
       const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null;
       return m ? {
         start: parseInt(m[1]),
@@ -4680,6 +3933,27 @@ var require_util = __commonJS({
     }
     var kEnumerableProperty = /* @__PURE__ */ Object.create(null);
     kEnumerableProperty.enumerable = true;
+    var normalizedMethodRecordsBase = {
+      delete: "DELETE",
+      DELETE: "DELETE",
+      get: "GET",
+      GET: "GET",
+      head: "HEAD",
+      HEAD: "HEAD",
+      options: "OPTIONS",
+      OPTIONS: "OPTIONS",
+      post: "POST",
+      POST: "POST",
+      put: "PUT",
+      PUT: "PUT"
+    };
+    var normalizedMethodRecords = {
+      ...normalizedMethodRecordsBase,
+      patch: "patch",
+      PATCH: "PATCH"
+    };
+    Object.setPrototypeOf(normalizedMethodRecordsBase, null);
+    Object.setPrototypeOf(normalizedMethodRecords, null);
     module2.exports = {
       kEnumerableProperty,
       nop,
@@ -4718,6 +3992,8 @@ var require_util = __commonJS({
       isValidHeaderValue,
       isTokenCharCode,
       parseRangeHeader,
+      normalizedMethodRecordsBase,
+      normalizedMethodRecords,
       isValidPort,
       isHttpOrHttpsPrefixed,
       nodeMajor,
@@ -4728,9 +4004,9 @@ var require_util = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/readable.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/readable.js
 var require_readable = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/readable.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/readable.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { Readable: Readable2 } = require("node:stream");
@@ -5005,9 +4281,9 @@ var require_readable = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/util.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/util.js
 var require_util2 = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/util.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/util.js"(exports2, module2) {
     var assert3 = require("node:assert");
     var {
       ResponseStatusCodeError
@@ -5066,9 +4342,9 @@ var require_util2 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-request.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-request.js
 var require_api_request = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-request.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-request.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { Readable: Readable2 } = require_readable();
@@ -5252,9 +4528,9 @@ var require_api_request = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/abort-signal.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/abort-signal.js
 var require_abort_signal = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/abort-signal.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/abort-signal.js"(exports2, module2) {
     var { addAbortListener } = require_util();
     var { RequestAbortedError } = require_errors();
     var kListener = Symbol("kListener");
@@ -5303,9 +4579,9 @@ var require_abort_signal = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-stream.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-stream.js
 var require_api_stream = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-stream.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-stream.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { finished, PassThrough } = require("node:stream");
@@ -5476,9 +4752,9 @@ var require_api_stream = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-pipeline.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-pipeline.js
 var require_api_pipeline = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-pipeline.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-pipeline.js"(exports2, module2) {
     "use strict";
     var {
       Readable: Readable2,
@@ -5676,9 +4952,9 @@ var require_api_pipeline = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-upgrade.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-upgrade.js
 var require_api_upgrade = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-upgrade.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-upgrade.js"(exports2, module2) {
     "use strict";
     var { InvalidArgumentError, SocketError } = require_errors();
     var { AsyncResource } = require("node:async_hooks");
@@ -5768,9 +5044,9 @@ var require_api_upgrade = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-connect.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-connect.js
 var require_api_connect = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/api-connect.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-connect.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { AsyncResource } = require("node:async_hooks");
@@ -5858,9 +5134,9 @@ var require_api_connect = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/index.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/index.js
 var require_api = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/api/index.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/index.js"(exports2, module2) {
     "use strict";
     module2.exports.request = require_api_request();
     module2.exports.stream = require_api_stream();
@@ -5870,9 +5146,9 @@ var require_api = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/dispatcher.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/dispatcher.js
 var require_dispatcher = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/dispatcher.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/dispatcher.js"(exports2, module2) {
     "use strict";
     var EventEmitter = require("node:events");
     var Dispatcher = class extends EventEmitter {
@@ -5925,9 +5201,9 @@ var require_dispatcher = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js
 var require_dispatcher_base = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/dispatcher-base.js"(exports2, module2) {
     "use strict";
     var Dispatcher = require_dispatcher();
     var {
@@ -6086,9 +5362,9 @@ var require_dispatcher_base = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/fixed-queue.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/fixed-queue.js
 var require_fixed_queue = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/fixed-queue.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/fixed-queue.js"(exports2, module2) {
     "use strict";
     var kSize = 2048;
     var kMask = kSize - 1;
@@ -6143,9 +5419,9 @@ var require_fixed_queue = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool-stats.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/pool-stats.js
 var require_pool_stats = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool-stats.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/pool-stats.js"(exports2, module2) {
     var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols();
     var kPool = Symbol("pool");
     var PoolStats = class {
@@ -6175,9 +5451,9 @@ var require_pool_stats = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool-base.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/pool-base.js
 var require_pool_base = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool-base.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/pool-base.js"(exports2, module2) {
     "use strict";
     var DispatcherBase = require_dispatcher_base();
     var FixedQueue = require_fixed_queue();
@@ -6330,9 +5606,9 @@ var require_pool_base = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/diagnostics.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/diagnostics.js
 var require_diagnostics = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/diagnostics.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/diagnostics.js"(exports2, module2) {
     "use strict";
     var diagnosticsChannel = require("node:diagnostics_channel");
     var util = require("node:util");
@@ -6515,9 +5791,9 @@ var require_diagnostics = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/request.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/request.js
 var require_request = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/request.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/request.js"(exports2, module2) {
     "use strict";
     var {
       InvalidArgumentError,
@@ -6535,7 +5811,8 @@ var require_request = __commonJS({
       isBlobLike,
       buildURL,
       validateHandler,
-      getServerName
+      getServerName,
+      normalizedMethodRecords
     } = require_util();
     var { channels } = require_diagnostics();
     var { headerNameLowerCasedRecord } = require_constants2();
@@ -6562,12 +5839,12 @@ var require_request = __commonJS({
           throw new InvalidArgumentError("path must be a string");
         } else if (path10[0] !== "/" && !(path10.startsWith("http://") || path10.startsWith("https://")) && method !== "CONNECT") {
           throw new InvalidArgumentError("path must be an absolute URL or start with a slash");
-        } else if (invalidPathRegex.exec(path10) !== null) {
+        } else if (invalidPathRegex.test(path10)) {
           throw new InvalidArgumentError("invalid request path");
         }
         if (typeof method !== "string") {
           throw new InvalidArgumentError("method must be a string");
-        } else if (!isValidHTTPToken(method)) {
+        } else if (normalizedMethodRecords[method] === void 0 && !isValidHTTPToken(method)) {
           throw new InvalidArgumentError("invalid request method");
         }
         if (upgrade && typeof upgrade !== "string") {
@@ -6838,9 +6115,9 @@ var require_request = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/connect.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/connect.js
 var require_connect = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/core/connect.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/connect.js"(exports2, module2) {
     "use strict";
     var net = require("node:net");
     var assert3 = require("node:assert");
@@ -6896,7 +6173,7 @@ var require_connect = __commonJS({
         }
       };
     }
-    function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {
+    function buildConnector({ allowH2, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) {
       if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {
         throw new InvalidArgumentError("maxCachedSessions must be a positive integer or zero");
       }
@@ -6912,7 +6189,7 @@ var require_connect = __commonJS({
           }
           servername = servername || options.servername || util.getServerName(host) || null;
           const sessionKey = servername || hostname;
-          const session = sessionCache.get(sessionKey) || null;
+          const session = customSession || sessionCache.get(sessionKey) || null;
           assert3(sessionKey);
           socket = tls.connect({
             highWaterMark: 16384,
@@ -6998,9 +6275,9 @@ var require_connect = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/util/timers.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/util/timers.js
 var require_timers = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/util/timers.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/util/timers.js"(exports2, module2) {
     "use strict";
     var TICK_MS = 499;
     var fastNow = Date.now();
@@ -7081,12 +6358,12 @@ var require_timers = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/utils.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/utils.js
 var require_utils = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/utils.js"(exports) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/utils.js"(exports2) {
     "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.enumToMap = void 0;
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.enumToMap = void 0;
     function enumToMap(obj) {
       const res = {};
       Object.keys(obj).forEach((key) => {
@@ -7097,16 +6374,16 @@ var require_utils = __commonJS({
       });
       return res;
     }
-    exports.enumToMap = enumToMap;
+    exports2.enumToMap = enumToMap;
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/constants.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/constants.js
 var require_constants3 = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/constants.js"(exports) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/constants.js"(exports2) {
     "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0;
     var utils_1 = require_utils();
     var ERROR;
     (function(ERROR2) {
@@ -7135,13 +6412,13 @@ var require_constants3 = __commonJS({
       ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE";
       ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE";
       ERROR2[ERROR2["USER"] = 24] = "USER";
-    })(ERROR = exports.ERROR || (exports.ERROR = {}));
+    })(ERROR = exports2.ERROR || (exports2.ERROR = {}));
     var TYPE;
     (function(TYPE2) {
       TYPE2[TYPE2["BOTH"] = 0] = "BOTH";
       TYPE2[TYPE2["REQUEST"] = 1] = "REQUEST";
       TYPE2[TYPE2["RESPONSE"] = 2] = "RESPONSE";
-    })(TYPE = exports.TYPE || (exports.TYPE = {}));
+    })(TYPE = exports2.TYPE || (exports2.TYPE = {}));
     var FLAGS;
     (function(FLAGS2) {
       FLAGS2[FLAGS2["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE";
@@ -7153,13 +6430,13 @@ var require_constants3 = __commonJS({
       FLAGS2[FLAGS2["SKIPBODY"] = 64] = "SKIPBODY";
       FLAGS2[FLAGS2["TRAILING"] = 128] = "TRAILING";
       FLAGS2[FLAGS2["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING";
-    })(FLAGS = exports.FLAGS || (exports.FLAGS = {}));
+    })(FLAGS = exports2.FLAGS || (exports2.FLAGS = {}));
     var LENIENT_FLAGS;
     (function(LENIENT_FLAGS2) {
       LENIENT_FLAGS2[LENIENT_FLAGS2["HEADERS"] = 1] = "HEADERS";
       LENIENT_FLAGS2[LENIENT_FLAGS2["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH";
       LENIENT_FLAGS2[LENIENT_FLAGS2["KEEP_ALIVE"] = 4] = "KEEP_ALIVE";
-    })(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));
+    })(LENIENT_FLAGS = exports2.LENIENT_FLAGS || (exports2.LENIENT_FLAGS = {}));
     var METHODS;
     (function(METHODS2) {
       METHODS2[METHODS2["DELETE"] = 0] = "DELETE";
@@ -7208,8 +6485,8 @@ var require_constants3 = __commonJS({
       METHODS2[METHODS2["REDIRECT"] = 43] = "REDIRECT";
       METHODS2[METHODS2["RECORD"] = 44] = "RECORD";
       METHODS2[METHODS2["FLUSH"] = 45] = "FLUSH";
-    })(METHODS = exports.METHODS || (exports.METHODS = {}));
-    exports.METHODS_HTTP = [
+    })(METHODS = exports2.METHODS || (exports2.METHODS = {}));
+    exports2.METHODS_HTTP = [
       METHODS.DELETE,
       METHODS.GET,
       METHODS.HEAD,
@@ -7247,10 +6524,10 @@ var require_constants3 = __commonJS({
       // TODO(indutny): should we allow it with HTTP?
       METHODS.SOURCE
     ];
-    exports.METHODS_ICE = [
+    exports2.METHODS_ICE = [
       METHODS.SOURCE
     ];
-    exports.METHODS_RTSP = [
+    exports2.METHODS_RTSP = [
       METHODS.OPTIONS,
       METHODS.DESCRIBE,
       METHODS.ANNOUNCE,
@@ -7267,11 +6544,11 @@ var require_constants3 = __commonJS({
       METHODS.GET,
       METHODS.POST
     ];
-    exports.METHOD_MAP = utils_1.enumToMap(METHODS);
-    exports.H_METHOD_MAP = {};
-    Object.keys(exports.METHOD_MAP).forEach((key) => {
+    exports2.METHOD_MAP = utils_1.enumToMap(METHODS);
+    exports2.H_METHOD_MAP = {};
+    Object.keys(exports2.METHOD_MAP).forEach((key) => {
       if (/^H/.test(key)) {
-        exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];
+        exports2.H_METHOD_MAP[key] = exports2.METHOD_MAP[key];
       }
     });
     var FINISH;
@@ -7279,13 +6556,13 @@ var require_constants3 = __commonJS({
       FINISH2[FINISH2["SAFE"] = 0] = "SAFE";
       FINISH2[FINISH2["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB";
       FINISH2[FINISH2["UNSAFE"] = 2] = "UNSAFE";
-    })(FINISH = exports.FINISH || (exports.FINISH = {}));
-    exports.ALPHA = [];
+    })(FINISH = exports2.FINISH || (exports2.FINISH = {}));
+    exports2.ALPHA = [];
     for (let i = "A".charCodeAt(0); i <= "Z".charCodeAt(0); i++) {
-      exports.ALPHA.push(String.fromCharCode(i));
-      exports.ALPHA.push(String.fromCharCode(i + 32));
+      exports2.ALPHA.push(String.fromCharCode(i));
+      exports2.ALPHA.push(String.fromCharCode(i + 32));
     }
-    exports.NUM_MAP = {
+    exports2.NUM_MAP = {
       0: 0,
       1: 1,
       2: 2,
@@ -7297,7 +6574,7 @@ var require_constants3 = __commonJS({
       8: 8,
       9: 9
     };
-    exports.HEX_MAP = {
+    exports2.HEX_MAP = {
       0: 0,
       1: 1,
       2: 2,
@@ -7321,7 +6598,7 @@ var require_constants3 = __commonJS({
       e: 14,
       f: 15
     };
-    exports.NUM = [
+    exports2.NUM = [
       "0",
       "1",
       "2",
@@ -7333,10 +6610,10 @@ var require_constants3 = __commonJS({
       "8",
       "9"
     ];
-    exports.ALPHANUM = exports.ALPHA.concat(exports.NUM);
-    exports.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"];
-    exports.USERINFO_CHARS = exports.ALPHANUM.concat(exports.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]);
-    exports.STRICT_URL_CHAR = [
+    exports2.ALPHANUM = exports2.ALPHA.concat(exports2.NUM);
+    exports2.MARK = ["-", "_", ".", "!", "~", "*", "'", "(", ")"];
+    exports2.USERINFO_CHARS = exports2.ALPHANUM.concat(exports2.MARK).concat(["%", ";", ":", "&", "=", "+", "$", ","]);
+    exports2.STRICT_URL_CHAR = [
       "!",
       '"',
       "$",
@@ -7367,13 +6644,13 @@ var require_constants3 = __commonJS({
       "|",
       "}",
       "~"
-    ].concat(exports.ALPHANUM);
-    exports.URL_CHAR = exports.STRICT_URL_CHAR.concat(["	", "\f"]);
+    ].concat(exports2.ALPHANUM);
+    exports2.URL_CHAR = exports2.STRICT_URL_CHAR.concat(["	", "\f"]);
     for (let i = 128; i <= 255; i++) {
-      exports.URL_CHAR.push(i);
+      exports2.URL_CHAR.push(i);
     }
-    exports.HEX = exports.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]);
-    exports.STRICT_TOKEN = [
+    exports2.HEX = exports2.NUM.concat(["a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]);
+    exports2.STRICT_TOKEN = [
       "!",
       "#",
       "$",
@@ -7389,17 +6666,17 @@ var require_constants3 = __commonJS({
       "`",
       "|",
       "~"
-    ].concat(exports.ALPHANUM);
-    exports.TOKEN = exports.STRICT_TOKEN.concat([" "]);
-    exports.HEADER_CHARS = ["	"];
+    ].concat(exports2.ALPHANUM);
+    exports2.TOKEN = exports2.STRICT_TOKEN.concat([" "]);
+    exports2.HEADER_CHARS = ["	"];
     for (let i = 32; i <= 255; i++) {
       if (i !== 127) {
-        exports.HEADER_CHARS.push(i);
+        exports2.HEADER_CHARS.push(i);
       }
     }
-    exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);
-    exports.MAJOR = exports.NUM_MAP;
-    exports.MINOR = exports.MAJOR;
+    exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS.filter((c) => c !== 44);
+    exports2.MAJOR = exports2.NUM_MAP;
+    exports2.MINOR = exports2.MAJOR;
     var HEADER_STATE;
     (function(HEADER_STATE2) {
       HEADER_STATE2[HEADER_STATE2["GENERAL"] = 0] = "GENERAL";
@@ -7411,8 +6688,8 @@ var require_constants3 = __commonJS({
       HEADER_STATE2[HEADER_STATE2["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE";
       HEADER_STATE2[HEADER_STATE2["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE";
       HEADER_STATE2[HEADER_STATE2["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED";
-    })(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));
-    exports.SPECIAL_HEADERS = {
+    })(HEADER_STATE = exports2.HEADER_STATE || (exports2.HEADER_STATE = {}));
+    exports2.SPECIAL_HEADERS = {
       "connection": HEADER_STATE.CONNECTION,
       "content-length": HEADER_STATE.CONTENT_LENGTH,
       "proxy-connection": HEADER_STATE.CONNECTION,
@@ -7422,27 +6699,27 @@ var require_constants3 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js
 var require_llhttp_wasm = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) {
     "use strict";
     var { Buffer: Buffer2 } = require("node:buffer");
     module2.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVuaWVudF9oZWFkZXJzACEhbGxodHRwX3NldF9sZW5pZW50X2NodW5rZWRfbGVuZ3RoACIdbGxodHRwX3NldF9sZW5pZW50X2tlZXBfYWxpdmUAIyRsbGh0dHBfc2V0X2xlbmllbnRfdHJhbnNmZXJfZW5jb2RpbmcAJBhsbGh0dHBfbWVzc2FnZV9uZWVkc19lb2YALgkXAQBBAQsRAQIDBAUKBgcrLSwqKSglJyYK07MCLBYAQYjQACgCAARAAAtBiNAAQQE2AgALFAAgABAwIAAgAjYCOCAAIAE6ACgLFAAgACAALwEyIAAtAC4gABAvEAALHgEBf0HAABAyIgEQMCABQYAINgI4IAEgADoAKCABC48MAQd/AkAgAEUNACAAQQhrIgEgAEEEaygCACIAQXhxIgRqIQUCQCAAQQFxDQAgAEEDcUUNASABIAEoAgAiAGsiAUGc0AAoAgBJDQEgACAEaiEEAkACQEGg0AAoAgAgAUcEQCAAQf8BTQRAIABBA3YhAyABKAIIIgAgASgCDCICRgRAQYzQAEGM0AAoAgBBfiADd3E2AgAMBQsgAiAANgIIIAAgAjYCDAwECyABKAIYIQYgASABKAIMIgBHBEAgACABKAIIIgI2AgggAiAANgIMDAMLIAFBFGoiAygCACICRQRAIAEoAhAiAkUNAiABQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFKAIEIgBBA3FBA0cNAiAFIABBfnE2AgRBlNAAIAQ2AgAgBSAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCABKAIcIgJBAnRBvNIAaiIDKAIAIAFGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgAUYbaiAANgIAIABFDQELIAAgBjYCGCABKAIQIgIEQCAAIAI2AhAgAiAANgIYCyABQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAFTw0AIAUoAgQiAEEBcUUNAAJAAkACQAJAIABBAnFFBEBBpNAAKAIAIAVGBEBBpNAAIAE2AgBBmNAAQZjQACgCACAEaiIANgIAIAEgAEEBcjYCBCABQaDQACgCAEcNBkGU0ABBADYCAEGg0ABBADYCAAwGC0Gg0AAoAgAgBUYEQEGg0AAgATYCAEGU0ABBlNAAKAIAIARqIgA2AgAgASAAQQFyNgIEIAAgAWogADYCAAwGCyAAQXhxIARqIQQgAEH/AU0EQCAAQQN2IQMgBSgCCCIAIAUoAgwiAkYEQEGM0ABBjNAAKAIAQX4gA3dxNgIADAULIAIgADYCCCAAIAI2AgwMBAsgBSgCGCEGIAUgBSgCDCIARwRAQZzQACgCABogACAFKAIIIgI2AgggAiAANgIMDAMLIAVBFGoiAygCACICRQRAIAUoAhAiAkUNAiAFQRBqIQMLA0AgAyEHIAIiAEEUaiIDKAIAIgINACAAQRBqIQMgACgCECICDQALIAdBADYCAAwCCyAFIABBfnE2AgQgASAEaiAENgIAIAEgBEEBcjYCBAwDC0EAIQALIAZFDQACQCAFKAIcIgJBAnRBvNIAaiIDKAIAIAVGBEAgAyAANgIAIAANAUGQ0ABBkNAAKAIAQX4gAndxNgIADAILIAZBEEEUIAYoAhAgBUYbaiAANgIAIABFDQELIAAgBjYCGCAFKAIQIgIEQCAAIAI2AhAgAiAANgIYCyAFQRRqKAIAIgJFDQAgAEEUaiACNgIAIAIgADYCGAsgASAEaiAENgIAIAEgBEEBcjYCBCABQaDQACgCAEcNAEGU0AAgBDYCAAwBCyAEQf8BTQRAIARBeHFBtNAAaiEAAn9BjNAAKAIAIgJBASAEQQN2dCIDcUUEQEGM0AAgAiADcjYCACAADAELIAAoAggLIgIgATYCDCAAIAE2AgggASAANgIMIAEgAjYCCAwBC0EfIQIgBEH///8HTQRAIARBJiAEQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgASACNgIcIAFCADcCECACQQJ0QbzSAGohAAJAQZDQACgCACIDQQEgAnQiB3FFBEAgACABNgIAQZDQACADIAdyNgIAIAEgADYCGCABIAE2AgggASABNgIMDAELIARBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAAJAA0AgACIDKAIEQXhxIARGDQEgAkEddiEAIAJBAXQhAiADIABBBHFqQRBqIgcoAgAiAA0ACyAHIAE2AgAgASADNgIYIAEgATYCDCABIAE2AggMAQsgAygCCCIAIAE2AgwgAyABNgIIIAFBADYCGCABIAM2AgwgASAANgIIC0Gs0ABBrNAAKAIAQQFrIgBBfyAAGzYCAAsLBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LQAEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABAwIAAgBDYCOCAAIAM6ACggACACOgAtIAAgATYCGAu74gECB38DfiABIAJqIQQCQCAAIgIoAgwiAA0AIAIoAgQEQCACIAE2AgQLIwBBEGsiCCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAhwiA0EBaw7dAdoBAdkBAgMEBQYHCAkKCwwNDtgBDxDXARES1gETFBUWFxgZGhvgAd8BHB0e1QEfICEiIyQl1AEmJygpKiss0wHSAS0u0QHQAS8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRtsBR0hJSs8BzgFLzQFMzAFNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBywHKAbgByQG5AcgBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgEA3AELQQAMxgELQQ4MxQELQQ0MxAELQQ8MwwELQRAMwgELQRMMwQELQRQMwAELQRUMvwELQRYMvgELQRgMvQELQRkMvAELQRoMuwELQRsMugELQRwMuQELQR0MuAELQQgMtwELQR4MtgELQSAMtQELQR8MtAELQQcMswELQSEMsgELQSIMsQELQSMMsAELQSQMrwELQRIMrgELQREMrQELQSUMrAELQSYMqwELQScMqgELQSgMqQELQcMBDKgBC0EqDKcBC0ErDKYBC0EsDKUBC0EtDKQBC0EuDKMBC0EvDKIBC0HEAQyhAQtBMAygAQtBNAyfAQtBDAyeAQtBMQydAQtBMgycAQtBMwybAQtBOQyaAQtBNQyZAQtBxQEMmAELQQsMlwELQToMlgELQTYMlQELQQoMlAELQTcMkwELQTgMkgELQTwMkQELQTsMkAELQT0MjwELQQkMjgELQSkMjQELQT4MjAELQT8MiwELQcAADIoBC0HBAAyJAQtBwgAMiAELQcMADIcBC0HEAAyGAQtBxQAMhQELQcYADIQBC0EXDIMBC0HHAAyCAQtByAAMgQELQckADIABC0HKAAx/C0HLAAx+C0HNAAx9C0HMAAx8C0HOAAx7C0HPAAx6C0HQAAx5C0HRAAx4C0HSAAx3C0HTAAx2C0HUAAx1C0HWAAx0C0HVAAxzC0EGDHILQdcADHELQQUMcAtB2AAMbwtBBAxuC0HZAAxtC0HaAAxsC0HbAAxrC0HcAAxqC0EDDGkLQd0ADGgLQd4ADGcLQd8ADGYLQeEADGULQeAADGQLQeIADGMLQeMADGILQQIMYQtB5AAMYAtB5QAMXwtB5gAMXgtB5wAMXQtB6AAMXAtB6QAMWwtB6gAMWgtB6wAMWQtB7AAMWAtB7QAMVwtB7gAMVgtB7wAMVQtB8AAMVAtB8QAMUwtB8gAMUgtB8wAMUQtB9AAMUAtB9QAMTwtB9gAMTgtB9wAMTQtB+AAMTAtB+QAMSwtB+gAMSgtB+wAMSQtB/AAMSAtB/QAMRwtB/gAMRgtB/wAMRQtBgAEMRAtBgQEMQwtBggEMQgtBgwEMQQtBhAEMQAtBhQEMPwtBhgEMPgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
 var require_llhttp_simd_wasm = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) {
     "use strict";
     var { Buffer: Buffer2 } = require("node:buffer");
     module2.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/constants.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/constants.js
 var require_constants4 = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/constants.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/constants.js"(exports2, module2) {
     "use strict";
     var corsSafeListedMethods = ["GET", "HEAD", "POST"];
     var corsSafeListedMethodsSet = new Set(corsSafeListedMethods);
@@ -7616,9 +6893,9 @@ var require_constants4 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/global.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/global.js
 var require_global = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/global.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/global.js"(exports2, module2) {
     "use strict";
     var globalOrigin = Symbol.for("undici.globalOrigin.1");
     function getGlobalOrigin() {
@@ -7652,9 +6929,9 @@ var require_global = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/data-url.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/data-url.js
 var require_data_url = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/data-url.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/data-url.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var encoder = new TextEncoder();
@@ -7927,12 +7204,10 @@ var require_data_url = __commonJS({
       let lead = 0;
       let trail = str.length - 1;
       if (leading) {
-        while (lead < str.length && predicate(str.charCodeAt(lead)))
-          lead++;
+        while (lead < str.length && predicate(str.charCodeAt(lead))) lead++;
       }
       if (trailing) {
-        while (trail > 0 && predicate(str.charCodeAt(trail)))
-          trail--;
+        while (trail > 0 && predicate(str.charCodeAt(trail))) trail--;
       }
       return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1);
     }
@@ -8006,9 +7281,9 @@ var require_data_url = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/webidl.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/webidl.js
 var require_webidl = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/webidl.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/webidl.js"(exports2, module2) {
     "use strict";
     var { types, inspect } = require("node:util");
     var { toUSVString } = require_util();
@@ -8422,9 +7697,9 @@ var require_webidl = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/util.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/util.js
 var require_util3 = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/util.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/util.js"(exports2, module2) {
     "use strict";
     var { Transform } = require("node:stream");
     var zlib = require("node:zlib");
@@ -8432,7 +7707,7 @@ var require_util3 = __commonJS({
     var { getGlobalOrigin } = require_global();
     var { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require_data_url();
     var { performance } = require("node:perf_hooks");
-    var { isBlobLike, ReadableStreamFrom, isValidHTTPToken } = require_util();
+    var { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require_util();
     var assert3 = require("node:assert");
     var { isUint8Array } = require("node:util/types");
     var { webidl } = require_webidl();
@@ -8539,7 +7814,7 @@ var require_util3 = __commonJS({
     }
     function appendRequestOriginHeader(request) {
       let serializedOrigin = request.origin;
-      if (serializedOrigin === "client") {
+      if (serializedOrigin === "client" || serializedOrigin === void 0) {
         return;
       }
       if (request.responseTainting === "cors" || request.mode === "websocket") {
@@ -8684,14 +7959,11 @@ var require_util3 = __commonJS({
       if (url.href === "about:blank" || url.href === "about:srcdoc") {
         return true;
       }
-      if (url.protocol === "data:")
-        return true;
-      if (url.protocol === "file:")
-        return true;
+      if (url.protocol === "data:") return true;
+      if (url.protocol === "file:") return true;
       return isOriginPotentiallyTrustworthy(url.origin);
       function isOriginPotentiallyTrustworthy(origin) {
-        if (origin == null || origin === "null")
-          return false;
+        if (origin == null || origin === "null") return false;
         const originAsURL = new URL(origin);
         if (originAsURL.protocol === "https:" || originAsURL.protocol === "wss:") {
           return true;
@@ -8823,29 +8095,8 @@ var require_util3 = __commonJS({
     function isCancelled(fetchParams) {
       return fetchParams.controller.state === "aborted" || fetchParams.controller.state === "terminated";
     }
-    var normalizeMethodRecordBase = {
-      delete: "DELETE",
-      DELETE: "DELETE",
-      get: "GET",
-      GET: "GET",
-      head: "HEAD",
-      HEAD: "HEAD",
-      options: "OPTIONS",
-      OPTIONS: "OPTIONS",
-      post: "POST",
-      POST: "POST",
-      put: "PUT",
-      PUT: "PUT"
-    };
-    var normalizeMethodRecord = {
-      ...normalizeMethodRecordBase,
-      patch: "patch",
-      PATCH: "PATCH"
-    };
-    Object.setPrototypeOf(normalizeMethodRecordBase, null);
-    Object.setPrototypeOf(normalizeMethodRecord, null);
     function normalizeMethod(method) {
-      return normalizeMethodRecordBase[method.toLowerCase()] ?? method;
+      return normalizedMethodRecordsBase[method.toLowerCase()] ?? method;
     }
     function serializeJavascriptValueToJSONString(value) {
       const result = JSON.stringify(value);
@@ -8982,7 +8233,7 @@ var require_util3 = __commonJS({
         }
       });
     }
-    async function fullyReadBody(body, processBody, processBodyError, shouldClone) {
+    async function fullyReadBody(body, processBody, processBodyError) {
       const successSteps = processBody;
       const errorSteps = processBodyError;
       let reader;
@@ -8993,7 +8244,7 @@ var require_util3 = __commonJS({
         return;
       }
       try {
-        successSteps(await readAllBytes(reader, shouldClone));
+        successSteps(await readAllBytes(reader));
       } catch (e) {
         errorSteps(e);
       }
@@ -9016,19 +8267,12 @@ var require_util3 = __commonJS({
       assert3(!invalidIsomorphicEncodeValueRegex.test(input));
       return input;
     }
-    async function readAllBytes(reader, shouldClone) {
+    async function readAllBytes(reader) {
       const bytes = [];
       let byteLength = 0;
       while (true) {
         const { done, value: chunk } = await reader.read();
         if (done) {
-          if (bytes.length === 1) {
-            const { buffer, byteOffset, byteLength: byteLength2 } = bytes[0];
-            if (shouldClone === false) {
-              return Buffer.from(buffer, byteOffset, byteLength2);
-            }
-            return Buffer.from(buffer.slice(byteOffset, byteOffset + byteLength2), 0, byteLength2);
-          }
           return Buffer.concat(bytes, byteLength);
         }
         if (!isUint8Array(chunk)) {
@@ -9291,7 +8535,6 @@ var require_util3 = __commonJS({
       urlHasHttpsScheme,
       urlIsHttpHttpsScheme,
       readAllBytes,
-      normalizeMethodRecord,
       simpleRangeHeaderValue,
       buildContentRange,
       parseMetadata,
@@ -9304,9 +8547,9 @@ var require_util3 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/symbols.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/symbols.js
 var require_symbols2 = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/symbols.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/symbols.js"(exports2, module2) {
     "use strict";
     module2.exports = {
       kUrl: Symbol("url"),
@@ -9318,9 +8561,9 @@ var require_symbols2 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/file.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/file.js
 var require_file = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/file.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/file.js"(exports2, module2) {
     "use strict";
     var { Blob: Blob2, File } = require("node:buffer");
     var { kState } = require_symbols2();
@@ -9381,9 +8624,9 @@ var require_file = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/formdata.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/formdata.js
 var require_formdata = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/formdata.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/formdata.js"(exports2, module2) {
     "use strict";
     var { isBlobLike, iteratorMixin } = require_util3();
     var { kState } = require_symbols2();
@@ -9527,9 +8770,9 @@ var require_formdata = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/formdata-parser.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/formdata-parser.js
 var require_formdata_parser = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/formdata-parser.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/formdata-parser.js"(exports2, module2) {
     "use strict";
     var { isUSVString, bufferToLowerCasedHeaderName } = require_util();
     var { utf8DecodeBytes } = require_util3();
@@ -9746,12 +8989,10 @@ var require_formdata_parser = __commonJS({
       let lead = 0;
       let trail = buf.length - 1;
       if (leading) {
-        while (lead < buf.length && predicate(buf[lead]))
-          lead++;
+        while (lead < buf.length && predicate(buf[lead])) lead++;
       }
       if (trailing) {
-        while (trail > 0 && predicate(buf[trail]))
-          trail--;
+        while (trail > 0 && predicate(buf[trail])) trail--;
       }
       return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1);
     }
@@ -9773,9 +9014,9 @@ var require_formdata_parser = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/body.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/body.js
 var require_body = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/web/fetch/body.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/body.js"(exports2, module2) {
     "use strict";
     var util = require_util();
     var {
@@ -9965,18 +9206,18 @@ Content-Type: ${value.type || "application/octet-stream"}\r
               mimeType = serializeAMimeType(mimeType);
             }
             return new Blob2([bytes], { type: mimeType });
-          }, instance, false);
+          }, instance);
         },
         arrayBuffer() {
           return consumeBody(this, (bytes) => {
-            return bytes.buffer;
-          }, instance, true);
+            return new Uint8Array(bytes).buffer;
+          }, instance);
         },
         text() {
-          return consumeBody(this, utf8DecodeBytes, instance, false);
+          return consumeBody(this, utf8DecodeBytes, instance);
         },
         json() {
-          return consumeBody(this, parseJSONFromBytes, instance, false);
+          return consumeBody(this, parseJSONFromBytes, instance);
         },
         formData() {
           return consumeBody(this, (value) => {
@@ -10005,12 +9246,12 @@ Content-Type: ${value.type || "application/octet-stream"}\r
             throw new TypeError(
               'Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".'
             );
-          }, instance, false);
+          }, instance);
         },
         bytes() {
           return consumeBody(this, (bytes) => {
-            return new Uint8Array(bytes.buffer, 0, bytes.byteLength);
-          }, instance, true);
+            return new Uint8Array(bytes);
+          }, instance);
         }
       };
       return methods;
@@ -10018,7 +9259,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
     function mixinBody(prototype) {
       Object.assign(prototype.prototype, bodyMixinMethods(prototype));
     }
-    async function consumeBody(object, convertBytesToJSValue, instance, shouldClone) {
+    async function consumeBody(object, convertBytesToJSValue, instance) {
       webidl.brandCheck(object, instance);
       if (bodyUnusable(object[kState].body)) {
         throw new TypeError("Body is unusable: Body has already been read");
@@ -10037,7 +9278,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
         successSteps(Buffer.allocUnsafe(0));
         return promise.promise;
       }
-      await fullyReadBody(object[kState].body, successSteps, errorSteps, shouldClone);
+      await fullyReadBody(object[kState].body, successSteps, errorSteps);
       return promise.promise;
     }
     function bodyUnusable(body) {
@@ -10063,9 +9304,9 @@ Content-Type: ${value.type || "application/octet-stream"}\r
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client-h1.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client-h1.js
 var require_client_h1 = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client-h1.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client-h1.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var util = require_util();
@@ -10183,9 +9424,9 @@ var require_client_h1 = __commonJS({
     var TIMEOUT_BODY = 2;
     var TIMEOUT_IDLE = 3;
     var Parser = class {
-      constructor(client, socket, { exports: exports2 }) {
+      constructor(client, socket, { exports: exports3 }) {
         assert3(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);
-        this.llhttp = exports2;
+        this.llhttp = exports3;
         this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE);
         this.client = client;
         this.socket = socket;
@@ -10790,25 +10031,25 @@ upgrade: ${upgrade}\r
         channels.sendHeaders.publish({ request, headers: header, socket });
       }
       if (!body || bodyLength === 0) {
-        writeBuffer({ abort, body: null, client, request, socket, contentLength, header, expectsPayload });
+        writeBuffer(abort, null, client, request, socket, contentLength, header, expectsPayload);
       } else if (util.isBuffer(body)) {
-        writeBuffer({ abort, body, client, request, socket, contentLength, header, expectsPayload });
+        writeBuffer(abort, body, client, request, socket, contentLength, header, expectsPayload);
       } else if (util.isBlobLike(body)) {
         if (typeof body.stream === "function") {
-          writeIterable({ abort, body: body.stream(), client, request, socket, contentLength, header, expectsPayload });
+          writeIterable(abort, body.stream(), client, request, socket, contentLength, header, expectsPayload);
         } else {
-          writeBlob({ abort, body, client, request, socket, contentLength, header, expectsPayload });
+          writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload);
         }
       } else if (util.isStream(body)) {
-        writeStream({ abort, body, client, request, socket, contentLength, header, expectsPayload });
+        writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload);
       } else if (util.isIterable(body)) {
-        writeIterable({ abort, body, client, request, socket, contentLength, header, expectsPayload });
+        writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload);
       } else {
         assert3(false);
       }
       return true;
     }
-    function writeStream({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {
+    function writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload) {
       assert3(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
       let finished = false;
       const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header });
@@ -10877,7 +10118,7 @@ upgrade: ${upgrade}\r
         setImmediate(onClose);
       }
     }
-    function writeBuffer({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {
+    function writeBuffer(abort, body, client, request, socket, contentLength, header, expectsPayload) {
       try {
         if (!body) {
           if (contentLength === 0) {
@@ -10908,7 +10149,7 @@ upgrade: ${upgrade}\r
         abort(err);
       }
     }
-    async function writeBlob({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {
+    async function writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload) {
       assert3(contentLength === body.size, "blob body must have content length");
       try {
         if (contentLength != null && contentLength !== body.size) {
@@ -10931,7 +10172,7 @@ upgrade: ${upgrade}\r
         abort(err);
       }
     }
-    async function writeIterable({ abort, body, client, request, socket, contentLength, header, expectsPayload }) {
+    async function writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload) {
       assert3(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
       let callback = null;
       function onDrain() {
@@ -11078,9 +10319,9 @@ ${len.toString(16)}\r
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client-h2.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client-h2.js
 var require_client_h2 = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client-h2.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client-h2.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var { pipeline } = require("node:stream");
@@ -11309,8 +10550,7 @@ var require_client_h2 = __commonJS({
         }
         stream.once("close", () => {
           session[kOpenStreams] -= 1;
-          if (session[kOpenStreams] === 0)
-            session.unref();
+          if (session[kOpenStreams] === 0) session.unref();
         });
         return true;
       }
@@ -11395,81 +10635,79 @@ var require_client_h2 = __commonJS({
       return true;
       function writeBodyH2() {
         if (!body || contentLength === 0) {
-          writeBuffer({
+          writeBuffer(
             abort,
+            stream,
+            null,
             client,
             request,
+            client[kSocket],
             contentLength,
-            expectsPayload,
-            h2stream: stream,
-            body: null,
-            socket: client[kSocket]
-          });
+            expectsPayload
+          );
         } else if (util.isBuffer(body)) {
-          writeBuffer({
+          writeBuffer(
             abort,
+            stream,
+            body,
             client,
             request,
+            client[kSocket],
             contentLength,
-            body,
-            expectsPayload,
-            h2stream: stream,
-            socket: client[kSocket]
-          });
+            expectsPayload
+          );
         } else if (util.isBlobLike(body)) {
           if (typeof body.stream === "function") {
-            writeIterable({
+            writeIterable(
               abort,
+              stream,
+              body.stream(),
               client,
               request,
+              client[kSocket],
               contentLength,
-              expectsPayload,
-              h2stream: stream,
-              body: body.stream(),
-              socket: client[kSocket]
-            });
+              expectsPayload
+            );
           } else {
-            writeBlob({
+            writeBlob(
               abort,
+              stream,
               body,
               client,
               request,
+              client[kSocket],
               contentLength,
-              expectsPayload,
-              h2stream: stream,
-              socket: client[kSocket]
-            });
+              expectsPayload
+            );
           }
         } else if (util.isStream(body)) {
-          writeStream({
+          writeStream(
             abort,
+            client[kSocket],
+            expectsPayload,
+            stream,
             body,
             client,
             request,
-            contentLength,
-            expectsPayload,
-            socket: client[kSocket],
-            h2stream: stream,
-            header: ""
-          });
+            contentLength
+          );
         } else if (util.isIterable(body)) {
-          writeIterable({
+          writeIterable(
             abort,
+            stream,
             body,
             client,
             request,
+            client[kSocket],
             contentLength,
-            expectsPayload,
-            header: "",
-            h2stream: stream,
-            socket: client[kSocket]
-          });
+            expectsPayload
+          );
         } else {
           assert3(false);
         }
       }
     }
-    function writeBuffer({ abort, h2stream, body, client, request, socket, contentLength, expectsPayload }) {
+    function writeBuffer(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
       try {
         if (body != null && util.isBuffer(body)) {
           assert3(contentLength === body.byteLength, "buffer body must have content length");
@@ -11488,7 +10726,7 @@ var require_client_h2 = __commonJS({
         abort(error);
       }
     }
-    function writeStream({ abort, socket, expectsPayload, h2stream, body, client, request, contentLength }) {
+    function writeStream(abort, socket, expectsPayload, h2stream, body, client, request, contentLength) {
       assert3(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
       const pipe = pipeline(
         body,
@@ -11512,7 +10750,7 @@ var require_client_h2 = __commonJS({
         request.onBodySent(chunk);
       }
     }
-    async function writeBlob({ abort, h2stream, body, client, request, socket, contentLength, expectsPayload }) {
+    async function writeBlob(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
       assert3(contentLength === body.size, "blob body must have content length");
       try {
         if (contentLength != null && contentLength !== body.size) {
@@ -11533,7 +10771,7 @@ var require_client_h2 = __commonJS({
         abort(err);
       }
     }
-    async function writeIterable({ abort, h2stream, body, client, request, socket, contentLength, expectsPayload }) {
+    async function writeIterable(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
       assert3(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
       let callback = null;
       function onDrain() {
@@ -11579,9 +10817,9 @@ var require_client_h2 = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/handler/redirect-handler.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/handler/redirect-handler.js
 var require_redirect_handler = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/handler/redirect-handler.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/handler/redirect-handler.js"(exports2, module2) {
     "use strict";
     var util = require_util();
     var { kBodyUsed } = require_symbols();
@@ -11738,9 +10976,9 @@ var require_redirect_handler = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js
 var require_redirect_interceptor = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/interceptor/redirect-interceptor.js"(exports2, module2) {
     "use strict";
     var RedirectHandler = require_redirect_handler();
     function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {
@@ -11760,9 +10998,9 @@ var require_redirect_interceptor = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client.js
 var require_client = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/client.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client.js"(exports2, module2) {
     "use strict";
     var assert3 = require("node:assert");
     var net = require("node:net");
@@ -12260,9 +11498,9 @@ var require_client = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/pool.js
 var require_pool = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/pool.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/pool.js"(exports2, module2) {
     "use strict";
     var {
       PoolBase,
@@ -12343,9 +11581,9 @@ var require_pool = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/agent.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/agent.js
 var require_agent = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/agent.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/agent.js"(exports2, module2) {
     "use strict";
     var { InvalidArgumentError } = require_errors();
     var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
@@ -12440,9 +11678,9 @@ var require_agent = __commonJS({
   }
 });
 
-// .yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/proxy-agent.js
+// .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/proxy-agent.js
 var require_proxy_agent = __commonJS({
-  ".yarn/cache/undici-npm-6.18.2-c1115b72ab-271df2f77f.zip/node_modules/undici/lib/dispatcher/proxy-agent.js"(exports, module2) {
+  ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/proxy-agent.js"(exports2, module2) {
     "use strict";
     var { kProxy, kClose, kDestroy, kInterceptors } = require_symbols();
     var { URL: URL2 } = require("node:url");
@@ -12596,7 +11834,7 @@ var require_proxy_agent = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/high-level-opt.js
 var require_high_level_opt = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/high-level-opt.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/high-level-opt.js"(exports2, module2) {
     "use strict";
     var argmap = /* @__PURE__ */ new Map([
       ["C", "cwd"],
@@ -12628,7 +11866,7 @@ var require_high_level_opt = __commonJS({
 
 // .yarn/cache/minipass-npm-5.0.0-c64fb63c92-a91d8043f6.zip/node_modules/minipass/index.js
 var require_minipass = __commonJS({
-  ".yarn/cache/minipass-npm-5.0.0-c64fb63c92-a91d8043f6.zip/node_modules/minipass/index.js"(exports) {
+  ".yarn/cache/minipass-npm-5.0.0-c64fb63c92-a91d8043f6.zip/node_modules/minipass/index.js"(exports2) {
     "use strict";
     var proc = typeof process === "object" && process ? process : {
       stdout: null,
@@ -12690,8 +11928,7 @@ var require_minipass = __commonJS({
       }
       end() {
         this.unpipe();
-        if (this.opts.end)
-          this.dest.end();
+        if (this.opts.end) this.dest.end();
       }
     };
     var PipeProxyErrors = class extends Pipe {
@@ -12713,12 +11950,9 @@ var require_minipass = __commonJS({
         this[PIPES] = [];
         this[BUFFER] = [];
         this[OBJECTMODE] = options && options.objectMode || false;
-        if (this[OBJECTMODE])
-          this[ENCODING] = null;
-        else
-          this[ENCODING] = options && options.encoding || null;
-        if (this[ENCODING] === "buffer")
-          this[ENCODING] = null;
+        if (this[OBJECTMODE]) this[ENCODING] = null;
+        else this[ENCODING] = options && options.encoding || null;
+        if (this[ENCODING] === "buffer") this[ENCODING] = null;
         this[ASYNC] = options && !!options.async || false;
         this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null;
         this[EOF] = false;
@@ -12752,8 +11986,7 @@ var require_minipass = __commonJS({
         return this[ENCODING];
       }
       set encoding(enc) {
-        if (this[OBJECTMODE])
-          throw new Error("cannot set encoding in objectMode");
+        if (this[OBJECTMODE]) throw new Error("cannot set encoding in objectMode");
         if (this[ENCODING] && enc !== this[ENCODING] && (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))
           throw new Error("cannot change encoding");
         if (this[ENCODING] !== enc) {
@@ -12790,10 +12023,8 @@ var require_minipass = __commonJS({
       set aborted(_) {
       }
       write(chunk, encoding, cb) {
-        if (this[ABORTED])
-          return false;
-        if (this[EOF])
-          throw new Error("write after end");
+        if (this[ABORTED]) return false;
+        if (this[EOF]) throw new Error("write after end");
         if (this[DESTROYED]) {
           this.emit(
             "error",
@@ -12804,37 +12035,27 @@ var require_minipass = __commonJS({
           );
           return true;
         }
-        if (typeof encoding === "function")
-          cb = encoding, encoding = "utf8";
-        if (!encoding)
-          encoding = "utf8";
+        if (typeof encoding === "function") cb = encoding, encoding = "utf8";
+        if (!encoding) encoding = "utf8";
         const fn2 = this[ASYNC] ? defer : (f) => f();
         if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
           if (isArrayBufferView(chunk))
             chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
-          else if (isArrayBuffer(chunk))
-            chunk = Buffer.from(chunk);
+          else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk);
           else if (typeof chunk !== "string")
             this.objectMode = true;
         }
         if (this[OBJECTMODE]) {
-          if (this.flowing && this[BUFFERLENGTH] !== 0)
-            this[FLUSH](true);
-          if (this.flowing)
-            this.emit("data", chunk);
-          else
-            this[BUFFERPUSH](chunk);
-          if (this[BUFFERLENGTH] !== 0)
-            this.emit("readable");
-          if (cb)
-            fn2(cb);
+          if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true);
+          if (this.flowing) this.emit("data", chunk);
+          else this[BUFFERPUSH](chunk);
+          if (this[BUFFERLENGTH] !== 0) this.emit("readable");
+          if (cb) fn2(cb);
           return this.flowing;
         }
         if (!chunk.length) {
-          if (this[BUFFERLENGTH] !== 0)
-            this.emit("readable");
-          if (cb)
-            fn2(cb);
+          if (this[BUFFERLENGTH] !== 0) this.emit("readable");
+          if (cb) fn2(cb);
           return this.flowing;
         }
         if (typeof chunk === "string" && // unless it is a string already ready for us to use
@@ -12843,78 +12064,58 @@ var require_minipass = __commonJS({
         }
         if (Buffer.isBuffer(chunk) && this[ENCODING])
           chunk = this[DECODER].write(chunk);
-        if (this.flowing && this[BUFFERLENGTH] !== 0)
-          this[FLUSH](true);
-        if (this.flowing)
-          this.emit("data", chunk);
-        else
-          this[BUFFERPUSH](chunk);
-        if (this[BUFFERLENGTH] !== 0)
-          this.emit("readable");
-        if (cb)
-          fn2(cb);
+        if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true);
+        if (this.flowing) this.emit("data", chunk);
+        else this[BUFFERPUSH](chunk);
+        if (this[BUFFERLENGTH] !== 0) this.emit("readable");
+        if (cb) fn2(cb);
         return this.flowing;
       }
       read(n) {
-        if (this[DESTROYED])
-          return null;
+        if (this[DESTROYED]) return null;
         if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {
           this[MAYBE_EMIT_END]();
           return null;
         }
-        if (this[OBJECTMODE])
-          n = null;
+        if (this[OBJECTMODE]) n = null;
         if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {
-          if (this.encoding)
-            this[BUFFER] = [this[BUFFER].join("")];
-          else
-            this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])];
+          if (this.encoding) this[BUFFER] = [this[BUFFER].join("")];
+          else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])];
         }
         const ret = this[READ](n || null, this[BUFFER][0]);
         this[MAYBE_EMIT_END]();
         return ret;
       }
       [READ](n, chunk) {
-        if (n === chunk.length || n === null)
-          this[BUFFERSHIFT]();
+        if (n === chunk.length || n === null) this[BUFFERSHIFT]();
         else {
           this[BUFFER][0] = chunk.slice(n);
           chunk = chunk.slice(0, n);
           this[BUFFERLENGTH] -= n;
         }
         this.emit("data", chunk);
-        if (!this[BUFFER].length && !this[EOF])
-          this.emit("drain");
+        if (!this[BUFFER].length && !this[EOF]) this.emit("drain");
         return chunk;
       }
       end(chunk, encoding, cb) {
-        if (typeof chunk === "function")
-          cb = chunk, chunk = null;
-        if (typeof encoding === "function")
-          cb = encoding, encoding = "utf8";
-        if (chunk)
-          this.write(chunk, encoding);
-        if (cb)
-          this.once("end", cb);
+        if (typeof chunk === "function") cb = chunk, chunk = null;
+        if (typeof encoding === "function") cb = encoding, encoding = "utf8";
+        if (chunk) this.write(chunk, encoding);
+        if (cb) this.once("end", cb);
         this[EOF] = true;
         this.writable = false;
-        if (this.flowing || !this[PAUSED])
-          this[MAYBE_EMIT_END]();
+        if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]();
         return this;
       }
       // don't let the internal resume be overwritten
       [RESUME]() {
-        if (this[DESTROYED])
-          return;
+        if (this[DESTROYED]) return;
         this[PAUSED] = false;
         this[FLOWING] = true;
         this.emit("resume");
-        if (this[BUFFER].length)
-          this[FLUSH]();
-        else if (this[EOF])
-          this[MAYBE_EMIT_END]();
-        else
-          this.emit("drain");
+        if (this[BUFFER].length) this[FLUSH]();
+        else if (this[EOF]) this[MAYBE_EMIT_END]();
+        else this.emit("drain");
       }
       resume() {
         return this[RESUME]();
@@ -12933,50 +12134,39 @@ var require_minipass = __commonJS({
         return this[PAUSED];
       }
       [BUFFERPUSH](chunk) {
-        if (this[OBJECTMODE])
-          this[BUFFERLENGTH] += 1;
-        else
-          this[BUFFERLENGTH] += chunk.length;
+        if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1;
+        else this[BUFFERLENGTH] += chunk.length;
         this[BUFFER].push(chunk);
       }
       [BUFFERSHIFT]() {
-        if (this[OBJECTMODE])
-          this[BUFFERLENGTH] -= 1;
-        else
-          this[BUFFERLENGTH] -= this[BUFFER][0].length;
+        if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1;
+        else this[BUFFERLENGTH] -= this[BUFFER][0].length;
         return this[BUFFER].shift();
       }
       [FLUSH](noDrain) {
         do {
         } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length);
-        if (!noDrain && !this[BUFFER].length && !this[EOF])
-          this.emit("drain");
+        if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit("drain");
       }
       [FLUSHCHUNK](chunk) {
         this.emit("data", chunk);
         return this.flowing;
       }
       pipe(dest, opts) {
-        if (this[DESTROYED])
-          return;
+        if (this[DESTROYED]) return;
         const ended = this[EMITTED_END];
         opts = opts || {};
-        if (dest === proc.stdout || dest === proc.stderr)
-          opts.end = false;
-        else
-          opts.end = opts.end !== false;
+        if (dest === proc.stdout || dest === proc.stderr) opts.end = false;
+        else opts.end = opts.end !== false;
         opts.proxyErrors = !!opts.proxyErrors;
         if (ended) {
-          if (opts.end)
-            dest.end();
+          if (opts.end) dest.end();
         } else {
           this[PIPES].push(
             !opts.proxyErrors ? new Pipe(this, dest, opts) : new PipeProxyErrors(this, dest, opts)
           );
-          if (this[ASYNC])
-            defer(() => this[RESUME]());
-          else
-            this[RESUME]();
+          if (this[ASYNC]) defer(() => this[RESUME]());
+          else this[RESUME]();
         }
         return dest;
       }
@@ -12992,18 +12182,15 @@ var require_minipass = __commonJS({
       }
       on(ev, fn2) {
         const ret = super.on(ev, fn2);
-        if (ev === "data" && !this[PIPES].length && !this.flowing)
-          this[RESUME]();
+        if (ev === "data" && !this[PIPES].length && !this.flowing) this[RESUME]();
         else if (ev === "readable" && this[BUFFERLENGTH] !== 0)
           super.emit("readable");
         else if (isEndish(ev) && this[EMITTED_END]) {
           super.emit(ev);
           this.removeAllListeners(ev);
         } else if (ev === "error" && this[EMITTED_ERROR]) {
-          if (this[ASYNC])
-            defer(() => fn2.call(this, this[EMITTED_ERROR]));
-          else
-            fn2.call(this, this[EMITTED_ERROR]);
+          if (this[ASYNC]) defer(() => fn2.call(this, this[EMITTED_ERROR]));
+          else fn2.call(this, this[EMITTED_ERROR]);
         }
         return ret;
       }
@@ -13016,8 +12203,7 @@ var require_minipass = __commonJS({
           this.emit("end");
           this.emit("prefinish");
           this.emit("finish");
-          if (this[CLOSED])
-            this.emit("close");
+          if (this[CLOSED]) this.emit("close");
           this[EMITTING_END] = false;
         }
       }
@@ -13030,8 +12216,7 @@ var require_minipass = __commonJS({
           return this[EMITEND]();
         } else if (ev === "close") {
           this[CLOSED] = true;
-          if (!this[EMITTED_END] && !this[DESTROYED])
-            return;
+          if (!this[EMITTED_END] && !this[DESTROYED]) return;
           const ret2 = super.emit("close");
           this.removeAllListeners("close");
           return ret2;
@@ -13056,22 +12241,18 @@ var require_minipass = __commonJS({
       }
       [EMITDATA](data) {
         for (const p of this[PIPES]) {
-          if (p.dest.write(data) === false)
-            this.pause();
+          if (p.dest.write(data) === false) this.pause();
         }
         const ret = super.emit("data", data);
         this[MAYBE_EMIT_END]();
         return ret;
       }
       [EMITEND]() {
-        if (this[EMITTED_END])
-          return;
+        if (this[EMITTED_END]) return;
         this[EMITTED_END] = true;
         this.readable = false;
-        if (this[ASYNC])
-          defer(() => this[EMITEND2]());
-        else
-          this[EMITEND2]();
+        if (this[ASYNC]) defer(() => this[EMITEND2]());
+        else this[EMITEND2]();
       }
       [EMITEND2]() {
         if (this[DECODER]) {
@@ -13093,13 +12274,11 @@ var require_minipass = __commonJS({
       // const all = await stream.collect()
       collect() {
         const buf = [];
-        if (!this[OBJECTMODE])
-          buf.dataLength = 0;
+        if (!this[OBJECTMODE]) buf.dataLength = 0;
         const p = this.promise();
         this.on("data", (c) => {
           buf.push(c);
-          if (!this[OBJECTMODE])
-            buf.dataLength += c.length;
+          if (!this[OBJECTMODE]) buf.dataLength += c.length;
         });
         return p.then(() => buf);
       }
@@ -13126,13 +12305,10 @@ var require_minipass = __commonJS({
           return Promise.resolve({ done: true });
         };
         const next = () => {
-          if (stopped)
-            return stop();
+          if (stopped) return stop();
           const res = this.read();
-          if (res !== null)
-            return Promise.resolve({ done: false, value: res });
-          if (this[EOF])
-            return stop();
+          if (res !== null) return Promise.resolve({ done: false, value: res });
+          if (this[EOF]) return stop();
           let resolve = null;
           let reject = null;
           const onerr = (er) => {
@@ -13187,8 +12363,7 @@ var require_minipass = __commonJS({
           return { done: true };
         };
         const next = () => {
-          if (stopped)
-            return stop();
+          if (stopped) return stop();
           const value = this.read();
           return value === null ? stop() : { value };
         };
@@ -13206,21 +12381,16 @@ var require_minipass = __commonJS({
       }
       destroy(er) {
         if (this[DESTROYED]) {
-          if (er)
-            this.emit("error", er);
-          else
-            this.emit(DESTROYED);
+          if (er) this.emit("error", er);
+          else this.emit(DESTROYED);
           return this;
         }
         this[DESTROYED] = true;
         this[BUFFER].length = 0;
         this[BUFFERLENGTH] = 0;
-        if (typeof this.close === "function" && !this[CLOSED])
-          this.close();
-        if (er)
-          this.emit("error", er);
-        else
-          this.emit(DESTROYED);
+        if (typeof this.close === "function" && !this[CLOSED]) this.close();
+        if (er) this.emit("error", er);
+        else this.emit(DESTROYED);
         return this;
       }
       static isStream(s) {
@@ -13229,13 +12399,13 @@ var require_minipass = __commonJS({
         typeof s.write === "function" && typeof s.end === "function"));
       }
     };
-    exports.Minipass = Minipass;
+    exports2.Minipass = Minipass;
   }
 });
 
 // .yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/constants.js
 var require_constants5 = __commonJS({
-  ".yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/constants.js"(exports, module2) {
+  ".yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/constants.js"(exports2, module2) {
     var realZlibConstants = require("zlib").constants || /* istanbul ignore next */
     { ZLIB_VERNUM: 4736 };
     module2.exports = Object.freeze(Object.assign(/* @__PURE__ */ Object.create(null), {
@@ -13351,7 +12521,7 @@ var require_constants5 = __commonJS({
 
 // .yarn/cache/minipass-npm-3.3.6-b8d93a945b-a114746943.zip/node_modules/minipass/index.js
 var require_minipass2 = __commonJS({
-  ".yarn/cache/minipass-npm-3.3.6-b8d93a945b-a114746943.zip/node_modules/minipass/index.js"(exports, module2) {
+  ".yarn/cache/minipass-npm-3.3.6-b8d93a945b-a114746943.zip/node_modules/minipass/index.js"(exports2, module2) {
     "use strict";
     var proc = typeof process === "object" && process ? process : {
       stdout: null,
@@ -13875,12 +13045,12 @@ var require_minipass2 = __commonJS({
 
 // .yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/index.js
 var require_minizlib = __commonJS({
-  ".yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/index.js"(exports) {
+  ".yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/index.js"(exports2) {
     "use strict";
     var assert3 = require("assert");
     var Buffer2 = require("buffer").Buffer;
     var realZlib = require("zlib");
-    var constants = exports.constants = require_constants5();
+    var constants = exports2.constants = require_constants5();
     var Minipass = require_minipass2();
     var OriginalBufferConcat = Buffer2.concat;
     var _superWrite = Symbol("_superWrite");
@@ -14117,18 +13287,18 @@ var require_minizlib = __commonJS({
         super(opts, "BrotliDecompress");
       }
     };
-    exports.Deflate = Deflate;
-    exports.Inflate = Inflate;
-    exports.Gzip = Gzip;
-    exports.Gunzip = Gunzip;
-    exports.DeflateRaw = DeflateRaw;
-    exports.InflateRaw = InflateRaw;
-    exports.Unzip = Unzip;
+    exports2.Deflate = Deflate;
+    exports2.Inflate = Inflate;
+    exports2.Gzip = Gzip;
+    exports2.Gunzip = Gunzip;
+    exports2.DeflateRaw = DeflateRaw;
+    exports2.InflateRaw = InflateRaw;
+    exports2.Unzip = Unzip;
     if (typeof realZlib.BrotliCompress === "function") {
-      exports.BrotliCompress = BrotliCompress;
-      exports.BrotliDecompress = BrotliDecompress;
+      exports2.BrotliCompress = BrotliCompress;
+      exports2.BrotliDecompress = BrotliDecompress;
     } else {
-      exports.BrotliCompress = exports.BrotliDecompress = class {
+      exports2.BrotliCompress = exports2.BrotliDecompress = class {
         constructor() {
           throw new Error("Brotli is not supported in this version of Node.js");
         }
@@ -14139,7 +13309,7 @@ var require_minizlib = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js
 var require_normalize_windows_path = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js"(exports2, module2) {
     var platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
     module2.exports = platform !== "win32" ? (p) => p : (p) => p && p.replace(/\\/g, "/");
   }
@@ -14147,7 +13317,7 @@ var require_normalize_windows_path = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js
 var require_read_entry = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js"(exports2, module2) {
     "use strict";
     var { Minipass } = require_minipass();
     var normPath = require_normalize_windows_path();
@@ -14241,9 +13411,9 @@ var require_read_entry = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js
 var require_types = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js"(exports) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js"(exports2) {
     "use strict";
-    exports.name = /* @__PURE__ */ new Map([
+    exports2.name = /* @__PURE__ */ new Map([
       ["0", "File"],
       // same as File
       ["", "OldFile"],
@@ -14282,13 +13452,13 @@ var require_types = __commonJS({
       // like x
       ["X", "OldExtendedHeader"]
     ]);
-    exports.code = new Map(Array.from(exports.name).map((kv) => [kv[1], kv[0]]));
+    exports2.code = new Map(Array.from(exports2.name).map((kv) => [kv[1], kv[0]]));
   }
 });
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js
 var require_large_numbers = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js"(exports2, module2) {
     "use strict";
     var encode = (num, buf) => {
       if (!Number.isSafeInteger(num)) {
@@ -14378,7 +13548,7 @@ var require_large_numbers = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js
 var require_header = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js"(exports2, module2) {
     "use strict";
     var types = require_types();
     var pathModule = require("path").posix;
@@ -14598,7 +13768,7 @@ var require_header = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js
 var require_pax = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js"(exports2, module2) {
     "use strict";
     var Header = require_header();
     var path10 = require("path");
@@ -14699,7 +13869,7 @@ var require_pax = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js
 var require_strip_trailing_slashes = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js"(exports2, module2) {
     module2.exports = (str) => {
       let i = str.length - 1;
       let slashesStart = -1;
@@ -14714,7 +13884,7 @@ var require_strip_trailing_slashes = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js
 var require_warn_mixin = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js"(exports2, module2) {
     "use strict";
     module2.exports = (Base) => class extends Base {
       warn(code, message, data = {}) {
@@ -14744,7 +13914,7 @@ var require_warn_mixin = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js
 var require_winchars = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js"(exports2, module2) {
     "use strict";
     var raw = [
       "|",
@@ -14765,7 +13935,7 @@ var require_winchars = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js
 var require_strip_absolute_path = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js"(exports2, module2) {
     var { isAbsolute, parse } = require("path").win32;
     module2.exports = (path10) => {
       let r = "";
@@ -14783,7 +13953,7 @@ var require_strip_absolute_path = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js
 var require_mode_fix = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js"(exports2, module2) {
     "use strict";
     module2.exports = (mode, isDir, portable) => {
       mode &= 4095;
@@ -14808,7 +13978,7 @@ var require_mode_fix = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js
 var require_write_entry = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js"(exports2, module2) {
     "use strict";
     var { Minipass } = require_minipass();
     var Pax = require_pax();
@@ -15273,7 +14443,7 @@ var require_write_entry = __commonJS({
 
 // .yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js
 var require_iterator = __commonJS({
-  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js"(exports, module2) {
+  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js"(exports2, module2) {
     "use strict";
     module2.exports = function(Yallist) {
       Yallist.prototype[Symbol.iterator] = function* () {
@@ -15287,7 +14457,7 @@ var require_iterator = __commonJS({
 
 // .yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js
 var require_yallist = __commonJS({
-  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js"(exports, module2) {
+  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js"(exports2, module2) {
     "use strict";
     module2.exports = Yallist;
     Yallist.Node = Node;
@@ -15656,7 +14826,7 @@ var require_yallist = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pack.js
 var require_pack = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pack.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pack.js"(exports2, module2) {
     "use strict";
     var PackJob = class {
       constructor(path11, absolute) {
@@ -16025,7 +15195,7 @@ var require_pack = __commonJS({
 
 // .yarn/cache/fs-minipass-npm-2.1.0-501ef87306-703d16522b.zip/node_modules/fs-minipass/index.js
 var require_fs_minipass = __commonJS({
-  ".yarn/cache/fs-minipass-npm-2.1.0-501ef87306-703d16522b.zip/node_modules/fs-minipass/index.js"(exports) {
+  ".yarn/cache/fs-minipass-npm-2.1.0-501ef87306-703d16522b.zip/node_modules/fs-minipass/index.js"(exports2) {
     "use strict";
     var MiniPass = require_minipass2();
     var EE = require("events").EventEmitter;
@@ -16391,16 +15561,16 @@ var require_fs_minipass = __commonJS({
         }
       }
     };
-    exports.ReadStream = ReadStream;
-    exports.ReadStreamSync = ReadStreamSync;
-    exports.WriteStream = WriteStream;
-    exports.WriteStreamSync = WriteStreamSync;
+    exports2.ReadStream = ReadStream;
+    exports2.ReadStreamSync = ReadStreamSync;
+    exports2.WriteStream = WriteStream;
+    exports2.WriteStreamSync = WriteStreamSync;
   }
 });
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/parse.js
 var require_parse2 = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/parse.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/parse.js"(exports2, module2) {
     "use strict";
     var warner = require_warn_mixin();
     var Header = require_header();
@@ -16812,8 +15982,7 @@ var require_parse2 = __commonJS({
             this[UNZIP].end(chunk);
           } else {
             this[ENDED] = true;
-            if (this.brotli === void 0)
-              chunk = chunk || Buffer.alloc(0);
+            if (this.brotli === void 0) chunk = chunk || Buffer.alloc(0);
             this.write(chunk);
           }
         }
@@ -16824,7 +15993,7 @@ var require_parse2 = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/list.js
 var require_list = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/list.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/list.js"(exports2, module2) {
     "use strict";
     var hlo = require_high_level_opt();
     var Parser = require_parse2();
@@ -16938,7 +16107,7 @@ var require_list = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/create.js
 var require_create = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/create.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/create.js"(exports2, module2) {
     "use strict";
     var hlo = require_high_level_opt();
     var Pack = require_pack();
@@ -17032,7 +16201,7 @@ var require_create = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/replace.js
 var require_replace = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/replace.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/replace.js"(exports2, module2) {
     "use strict";
     var hlo = require_high_level_opt();
     var Pack = require_pack();
@@ -17072,36 +16241,35 @@ var require_replace = __commonJS({
         }
         const st = fs8.fstatSync(fd);
         const headBuf = Buffer.alloc(512);
-        POSITION:
-          for (position = 0; position < st.size; position += 512) {
-            for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {
-              bytes = fs8.readSync(
-                fd,
-                headBuf,
-                bufPos,
-                headBuf.length - bufPos,
-                position + bufPos
-              );
-              if (position === 0 && headBuf[0] === 31 && headBuf[1] === 139) {
-                throw new Error("cannot append to compressed archives");
-              }
-              if (!bytes) {
-                break POSITION;
-              }
-            }
-            const h = new Header(headBuf);
-            if (!h.cksumValid) {
-              break;
-            }
-            const entryBlockSize = 512 * Math.ceil(h.size / 512);
-            if (position + entryBlockSize + 512 > st.size) {
-              break;
+        POSITION: for (position = 0; position < st.size; position += 512) {
+          for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {
+            bytes = fs8.readSync(
+              fd,
+              headBuf,
+              bufPos,
+              headBuf.length - bufPos,
+              position + bufPos
+            );
+            if (position === 0 && headBuf[0] === 31 && headBuf[1] === 139) {
+              throw new Error("cannot append to compressed archives");
             }
-            position += entryBlockSize;
-            if (opt.mtimeCache) {
-              opt.mtimeCache.set(h.path, h.mtime);
+            if (!bytes) {
+              break POSITION;
             }
           }
+          const h = new Header(headBuf);
+          if (!h.cksumValid) {
+            break;
+          }
+          const entryBlockSize = 512 * Math.ceil(h.size / 512);
+          if (position + entryBlockSize + 512 > st.size) {
+            break;
+          }
+          position += entryBlockSize;
+          if (opt.mtimeCache) {
+            opt.mtimeCache.set(h.path, h.mtime);
+          }
+        }
         threw = false;
         streamSync(opt, p, position, fd, files);
       } finally {
@@ -17248,7 +16416,7 @@ var require_replace = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/update.js
 var require_update = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/update.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/update.js"(exports2, module2) {
     "use strict";
     var hlo = require_high_level_opt();
     var r = require_replace();
@@ -17279,7 +16447,7 @@ var require_update = __commonJS({
 
 // .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/opts-arg.js
 var require_opts_arg = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/opts-arg.js"(exports, module2) {
+  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/opts-arg.js"(exports2, module2) {
     var { promisify } = require("util");
     var fs8 = require("fs");
     var optsArg = (opts) => {
@@ -17307,7 +16475,7 @@ var require_opts_arg = __commonJS({
 
 // .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/path-arg.js
 var require_path_arg = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/path-arg.js"(exports, module2) {
+  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/path-arg.js"(exports2, module2) {
     var platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform;
     var { resolve, parse } = require("path");
     var pathArg = (path10) => {
@@ -17339,7 +16507,7 @@ var require_path_arg = __commonJS({
 
 // .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/find-made.js
 var require_find_made = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/find-made.js"(exports, module2) {
+  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/find-made.js"(exports2, module2) {
     var { dirname } = require("path");
     var findMade = (opts, parent, path10 = void 0) => {
       if (path10 === parent)
@@ -17365,7 +16533,7 @@ var require_find_made = __commonJS({
 
 // .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-manual.js
 var require_mkdirp_manual = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-manual.js"(exports, module2) {
+  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-manual.js"(exports2, module2) {
     var { dirname } = require("path");
     var mkdirpManual = (path10, opts, made) => {
       opts.recursive = false;
@@ -17426,7 +16594,7 @@ var require_mkdirp_manual = __commonJS({
 
 // .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-native.js
 var require_mkdirp_native = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-native.js"(exports, module2) {
+  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-native.js"(exports2, module2) {
     var { dirname } = require("path");
     var { findMade, findMadeSync } = require_find_made();
     var { mkdirpManual, mkdirpManualSync } = require_mkdirp_manual();
@@ -17464,7 +16632,7 @@ var require_mkdirp_native = __commonJS({
 
 // .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/use-native.js
 var require_use_native = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/use-native.js"(exports, module2) {
+  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/use-native.js"(exports2, module2) {
     var fs8 = require("fs");
     var version2 = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version;
     var versArr = version2.replace(/^v/, "").split(".");
@@ -17477,7 +16645,7 @@ var require_use_native = __commonJS({
 
 // .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/index.js
 var require_mkdirp = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/index.js"(exports, module2) {
+  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/index.js"(exports2, module2) {
     var optsArg = require_opts_arg();
     var pathArg = require_path_arg();
     var { mkdirpNative, mkdirpNativeSync } = require_mkdirp_native();
@@ -17504,7 +16672,7 @@ var require_mkdirp = __commonJS({
 
 // .yarn/cache/chownr-npm-2.0.0-638f1c9c61-594754e130.zip/node_modules/chownr/chownr.js
 var require_chownr = __commonJS({
-  ".yarn/cache/chownr-npm-2.0.0-638f1c9c61-594754e130.zip/node_modules/chownr/chownr.js"(exports, module2) {
+  ".yarn/cache/chownr-npm-2.0.0-638f1c9c61-594754e130.zip/node_modules/chownr/chownr.js"(exports2, module2) {
     "use strict";
     var fs8 = require("fs");
     var path10 = require("path");
@@ -17635,7 +16803,7 @@ var require_chownr = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mkdir.js
 var require_mkdir = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mkdir.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mkdir.js"(exports2, module2) {
     "use strict";
     var mkdirp = require_mkdirp();
     var fs8 = require("fs");
@@ -17827,7 +16995,7 @@ var require_mkdir = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-unicode.js
 var require_normalize_unicode = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-unicode.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-unicode.js"(exports2, module2) {
     var normalizeCache = /* @__PURE__ */ Object.create(null);
     var { hasOwnProperty } = Object.prototype;
     module2.exports = (s) => {
@@ -17841,7 +17009,7 @@ var require_normalize_unicode = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/path-reservations.js
 var require_path_reservations = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/path-reservations.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/path-reservations.js"(exports2, module2) {
     var assert3 = require("assert");
     var normalize = require_normalize_unicode();
     var stripSlashes = require_strip_trailing_slashes();
@@ -17955,7 +17123,7 @@ var require_path_reservations = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/get-write-flag.js
 var require_get_write_flag = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/get-write-flag.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/get-write-flag.js"(exports2, module2) {
     var platform = process.env.__FAKE_PLATFORM__ || process.platform;
     var isWindows = platform === "win32";
     var fs8 = global.__FAKE_TESTING_FS__ || require("fs");
@@ -17969,7 +17137,7 @@ var require_get_write_flag = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/unpack.js
 var require_unpack = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/unpack.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/unpack.js"(exports2, module2) {
     "use strict";
     var assert3 = require("assert");
     var Parser = require_parse2();
@@ -18662,7 +17830,7 @@ var require_unpack = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/extract.js
 var require_extract = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/extract.js"(exports, module2) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/extract.js"(exports2, module2) {
     "use strict";
     var hlo = require_high_level_opt();
     var Unpack = require_unpack();
@@ -18747,27 +17915,27 @@ var require_extract = __commonJS({
 
 // .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/index.js
 var require_tar = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/index.js"(exports) {
+  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/index.js"(exports2) {
     "use strict";
-    exports.c = exports.create = require_create();
-    exports.r = exports.replace = require_replace();
-    exports.t = exports.list = require_list();
-    exports.u = exports.update = require_update();
-    exports.x = exports.extract = require_extract();
-    exports.Pack = require_pack();
-    exports.Unpack = require_unpack();
-    exports.Parse = require_parse2();
-    exports.ReadEntry = require_read_entry();
-    exports.WriteEntry = require_write_entry();
-    exports.Header = require_header();
-    exports.Pax = require_pax();
-    exports.types = require_types();
+    exports2.c = exports2.create = require_create();
+    exports2.r = exports2.replace = require_replace();
+    exports2.t = exports2.list = require_list();
+    exports2.u = exports2.update = require_update();
+    exports2.x = exports2.extract = require_extract();
+    exports2.Pack = require_pack();
+    exports2.Unpack = require_unpack();
+    exports2.Parse = require_parse2();
+    exports2.ReadEntry = require_read_entry();
+    exports2.WriteEntry = require_write_entry();
+    exports2.Header = require_header();
+    exports2.Pax = require_pax();
+    exports2.types = require_types();
   }
 });
 
 // .yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js
 var require_v8_compile_cache = __commonJS({
-  ".yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js"(exports, module2) {
+  ".yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js"(exports2, module2) {
     "use strict";
     var Module2 = require("module");
     var crypto = require("crypto");
@@ -18872,8 +18040,7 @@ var require_v8_compile_cache = __commonJS({
           push(key, invalidationKey, buffer);
         }
         for (const key of Object.keys(this._storedMap)) {
-          if (hasOwnProperty.call(newMap, key))
-            continue;
+          if (hasOwnProperty.call(newMap, key)) continue;
           const mapping = this._storedMap[key];
           const buffer = this._storedBlob.slice(mapping[1], mapping[2]);
           push(key, mapping[0], buffer);
@@ -18929,8 +18096,7 @@ var require_v8_compile_cache = __commonJS({
               var i = 2;
               for (; i < contLen; ++i) {
                 var code = content.charCodeAt(i);
-                if (code === 10 || code === 13)
-                  break;
+                if (code === 10 || code === 13) break;
               }
               if (i === contLen) {
                 content = "";
@@ -19044,10 +18210,10 @@ var require_v8_compile_cache = __commonJS({
 
 // .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js
 var require_posix = __commonJS({
-  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js"(exports) {
+  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js"(exports2) {
     "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.sync = exports.isexe = void 0;
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.sync = exports2.isexe = void 0;
     var fs_1 = require("fs");
     var promises_1 = require("fs/promises");
     var isexe = async (path10, options = {}) => {
@@ -19061,7 +18227,7 @@ var require_posix = __commonJS({
         throw er;
       }
     };
-    exports.isexe = isexe;
+    exports2.isexe = isexe;
     var sync = (path10, options = {}) => {
       const { ignoreErrors = false } = options;
       try {
@@ -19073,7 +18239,7 @@ var require_posix = __commonJS({
         throw er;
       }
     };
-    exports.sync = sync;
+    exports2.sync = sync;
     var checkStat = (stat, options) => stat.isFile() && checkMode(stat, options);
     var checkMode = (stat, options) => {
       const myUid = options.uid ?? process.getuid?.();
@@ -19097,10 +18263,10 @@ var require_posix = __commonJS({
 
 // .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js
 var require_win32 = __commonJS({
-  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js"(exports) {
+  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js"(exports2) {
     "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.sync = exports.isexe = void 0;
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.sync = exports2.isexe = void 0;
     var fs_1 = require("fs");
     var promises_1 = require("fs/promises");
     var isexe = async (path10, options = {}) => {
@@ -19114,7 +18280,7 @@ var require_win32 = __commonJS({
         throw er;
       }
     };
-    exports.isexe = isexe;
+    exports2.isexe = isexe;
     var sync = (path10, options = {}) => {
       const { ignoreErrors = false } = options;
       try {
@@ -19126,7 +18292,7 @@ var require_win32 = __commonJS({
         throw er;
       }
     };
-    exports.sync = sync;
+    exports2.sync = sync;
     var checkPathExt = (path10, options) => {
       const { pathExt = process.env.PATHEXT || "" } = options;
       const peSplit = pathExt.split(";");
@@ -19148,19 +18314,18 @@ var require_win32 = __commonJS({
 
 // .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js
 var require_options = __commonJS({
-  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js"(exports) {
+  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js"(exports2) {
     "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
+    Object.defineProperty(exports2, "__esModule", { value: true });
   }
 });
 
 // .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js
 var require_cjs = __commonJS({
-  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js"(exports) {
+  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js"(exports2) {
     "use strict";
-    var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
-      if (k2 === void 0)
-        k2 = k;
+    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+      if (k2 === void 0) k2 = k;
       var desc = Object.getOwnPropertyDescriptor(m, k);
       if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
         desc = { enumerable: true, get: function() {
@@ -19169,49 +18334,43 @@ var require_cjs = __commonJS({
       }
       Object.defineProperty(o, k2, desc);
     } : function(o, m, k, k2) {
-      if (k2 === void 0)
-        k2 = k;
+      if (k2 === void 0) k2 = k;
       o[k2] = m[k];
     });
-    var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
+    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
       Object.defineProperty(o, "default", { enumerable: true, value: v });
     } : function(o, v) {
       o["default"] = v;
     });
-    var __importStar = exports && exports.__importStar || function(mod) {
-      if (mod && mod.__esModule)
-        return mod;
+    var __importStar = exports2 && exports2.__importStar || function(mod) {
+      if (mod && mod.__esModule) return mod;
       var result = {};
       if (mod != null) {
-        for (var k in mod)
-          if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
-            __createBinding(result, mod, k);
+        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
       }
       __setModuleDefault(result, mod);
       return result;
     };
-    var __exportStar = exports && exports.__exportStar || function(m, exports2) {
-      for (var p in m)
-        if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p))
-          __createBinding(exports2, m, p);
+    var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
+      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
     };
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.sync = exports.isexe = exports.posix = exports.win32 = void 0;
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.sync = exports2.isexe = exports2.posix = exports2.win32 = void 0;
     var posix = __importStar(require_posix());
-    exports.posix = posix;
+    exports2.posix = posix;
     var win32 = __importStar(require_win32());
-    exports.win32 = win32;
-    __exportStar(require_options(), exports);
+    exports2.win32 = win32;
+    __exportStar(require_options(), exports2);
     var platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform;
     var impl = platform === "win32" ? win32 : posix;
-    exports.isexe = impl.isexe;
-    exports.sync = impl.sync;
+    exports2.isexe = impl.isexe;
+    exports2.sync = impl.sync;
   }
 });
 
 // .yarn/cache/which-npm-4.0.0-dd31cd4928-449fa5c44e.zip/node_modules/which/lib/index.js
 var require_lib = __commonJS({
-  ".yarn/cache/which-npm-4.0.0-dd31cd4928-449fa5c44e.zip/node_modules/which/lib/index.js"(exports, module2) {
+  ".yarn/cache/which-npm-4.0.0-dd31cd4928-449fa5c44e.zip/node_modules/which/lib/index.js"(exports2, module2) {
     var { isexe, sync: isexeSync } = require_cjs();
     var { join: join2, delimiter, sep, posix } = require("path");
     var isWindows = process.platform === "win32";
@@ -19299,9 +18458,9 @@ var require_lib = __commonJS({
 
 // .yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js
 var require_is_windows = __commonJS({
-  ".yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js"(exports, module2) {
+  ".yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js"(exports2, module2) {
     (function(factory) {
-      if (exports && typeof exports === "object" && typeof module2 !== "undefined") {
+      if (exports2 && typeof exports2 === "object" && typeof module2 !== "undefined") {
         module2.exports = factory();
       } else if (typeof define === "function" && define.amd) {
         define([], factory);
@@ -19325,7 +18484,7 @@ var require_is_windows = __commonJS({
 
 // .yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js
 var require_cmd_extension = __commonJS({
-  ".yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js"(exports, module2) {
+  ".yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js"(exports2, module2) {
     "use strict";
     var path10 = require("path");
     var cmdExtension;
@@ -19338,7 +18497,7 @@ var require_cmd_extension = __commonJS({
 
 // .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js
 var require_polyfills = __commonJS({
-  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js"(exports, module2) {
+  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js"(exports2, module2) {
     var constants = require("constants");
     var origCwd = process.cwd;
     var cwd = null;
@@ -19358,8 +18517,7 @@ var require_polyfills = __commonJS({
         cwd = null;
         chdir.call(process, d);
       };
-      if (Object.setPrototypeOf)
-        Object.setPrototypeOf(process.chdir, chdir);
+      if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir);
     }
     var chdir;
     module2.exports = patch;
@@ -19390,16 +18548,14 @@ var require_polyfills = __commonJS({
       fs8.lstatSync = statFixSync(fs8.lstatSync);
       if (fs8.chmod && !fs8.lchmod) {
         fs8.lchmod = function(path10, mode, cb) {
-          if (cb)
-            process.nextTick(cb);
+          if (cb) process.nextTick(cb);
         };
         fs8.lchmodSync = function() {
         };
       }
       if (fs8.chown && !fs8.lchown) {
         fs8.lchown = function(path10, uid, gid, cb) {
-          if (cb)
-            process.nextTick(cb);
+          if (cb) process.nextTick(cb);
         };
         fs8.lchownSync = function() {
         };
@@ -19423,12 +18579,10 @@ var require_polyfills = __commonJS({
                   backoff += 10;
                 return;
               }
-              if (cb)
-                cb(er);
+              if (cb) cb(er);
             });
           }
-          if (Object.setPrototypeOf)
-            Object.setPrototypeOf(rename, fs$rename);
+          if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename);
           return rename;
         }(fs8.rename);
       }
@@ -19447,11 +18601,10 @@ var require_polyfills = __commonJS({
           }
           return fs$read.call(fs8, fd, buffer, offset, length, position, callback);
         }
-        if (Object.setPrototypeOf)
-          Object.setPrototypeOf(read, fs$read);
+        if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read);
         return read;
       }(fs8.read);
-      fs8.readSync = typeof fs8.readSync !== "function" ? fs8.readSync : function(fs$readSync) {
+      fs8.readSync = typeof fs8.readSync !== "function" ? fs8.readSync : /* @__PURE__ */ function(fs$readSync) {
         return function(fd, buffer, offset, length, position) {
           var eagCounter = 0;
           while (true) {
@@ -19475,14 +18628,12 @@ var require_polyfills = __commonJS({
             mode,
             function(err, fd) {
               if (err) {
-                if (callback)
-                  callback(err);
+                if (callback) callback(err);
                 return;
               }
               fs9.fchmod(fd, mode, function(err2) {
                 fs9.close(fd, function(err22) {
-                  if (callback)
-                    callback(err2 || err22);
+                  if (callback) callback(err2 || err22);
                 });
               });
             }
@@ -19513,14 +18664,12 @@ var require_polyfills = __commonJS({
           fs9.lutimes = function(path10, at, mt, cb) {
             fs9.open(path10, constants.O_SYMLINK, function(er, fd) {
               if (er) {
-                if (cb)
-                  cb(er);
+                if (cb) cb(er);
                 return;
               }
               fs9.futimes(fd, at, mt, function(er2) {
                 fs9.close(fd, function(er22) {
-                  if (cb)
-                    cb(er2 || er22);
+                  if (cb) cb(er2 || er22);
                 });
               });
             });
@@ -19546,64 +18695,52 @@ var require_polyfills = __commonJS({
           };
         } else if (fs9.futimes) {
           fs9.lutimes = function(_a, _b, _c, cb) {
-            if (cb)
-              process.nextTick(cb);
+            if (cb) process.nextTick(cb);
           };
           fs9.lutimesSync = function() {
           };
         }
       }
       function chmodFix(orig) {
-        if (!orig)
-          return orig;
+        if (!orig) return orig;
         return function(target, mode, cb) {
           return orig.call(fs8, target, mode, function(er) {
-            if (chownErOk(er))
-              er = null;
-            if (cb)
-              cb.apply(this, arguments);
+            if (chownErOk(er)) er = null;
+            if (cb) cb.apply(this, arguments);
           });
         };
       }
       function chmodFixSync(orig) {
-        if (!orig)
-          return orig;
+        if (!orig) return orig;
         return function(target, mode) {
           try {
             return orig.call(fs8, target, mode);
           } catch (er) {
-            if (!chownErOk(er))
-              throw er;
+            if (!chownErOk(er)) throw er;
           }
         };
       }
       function chownFix(orig) {
-        if (!orig)
-          return orig;
+        if (!orig) return orig;
         return function(target, uid, gid, cb) {
           return orig.call(fs8, target, uid, gid, function(er) {
-            if (chownErOk(er))
-              er = null;
-            if (cb)
-              cb.apply(this, arguments);
+            if (chownErOk(er)) er = null;
+            if (cb) cb.apply(this, arguments);
           });
         };
       }
       function chownFixSync(orig) {
-        if (!orig)
-          return orig;
+        if (!orig) return orig;
         return function(target, uid, gid) {
           try {
             return orig.call(fs8, target, uid, gid);
           } catch (er) {
-            if (!chownErOk(er))
-              throw er;
+            if (!chownErOk(er)) throw er;
           }
         };
       }
       function statFix(orig) {
-        if (!orig)
-          return orig;
+        if (!orig) return orig;
         return function(target, options, cb) {
           if (typeof options === "function") {
             cb = options;
@@ -19611,27 +18748,21 @@ var require_polyfills = __commonJS({
           }
           function callback(er, stats) {
             if (stats) {
-              if (stats.uid < 0)
-                stats.uid += 4294967296;
-              if (stats.gid < 0)
-                stats.gid += 4294967296;
+              if (stats.uid < 0) stats.uid += 4294967296;
+              if (stats.gid < 0) stats.gid += 4294967296;
             }
-            if (cb)
-              cb.apply(this, arguments);
+            if (cb) cb.apply(this, arguments);
           }
           return options ? orig.call(fs8, target, options, callback) : orig.call(fs8, target, callback);
         };
       }
       function statFixSync(orig) {
-        if (!orig)
-          return orig;
+        if (!orig) return orig;
         return function(target, options) {
           var stats = options ? orig.call(fs8, target, options) : orig.call(fs8, target);
           if (stats) {
-            if (stats.uid < 0)
-              stats.uid += 4294967296;
-            if (stats.gid < 0)
-              stats.gid += 4294967296;
+            if (stats.uid < 0) stats.uid += 4294967296;
+            if (stats.gid < 0) stats.gid += 4294967296;
           }
           return stats;
         };
@@ -19654,7 +18785,7 @@ var require_polyfills = __commonJS({
 
 // .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js
 var require_legacy_streams = __commonJS({
-  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js"(exports, module2) {
+  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
     var Stream = require("stream").Stream;
     module2.exports = legacy;
     function legacy(fs8) {
@@ -19663,8 +18794,7 @@ var require_legacy_streams = __commonJS({
         WriteStream
       };
       function ReadStream(path10, options) {
-        if (!(this instanceof ReadStream))
-          return new ReadStream(path10, options);
+        if (!(this instanceof ReadStream)) return new ReadStream(path10, options);
         Stream.call(this);
         var self2 = this;
         this.path = path10;
@@ -19680,8 +18810,7 @@ var require_legacy_streams = __commonJS({
           var key = keys[index];
           this[key] = options[key];
         }
-        if (this.encoding)
-          this.setEncoding(this.encoding);
+        if (this.encoding) this.setEncoding(this.encoding);
         if (this.start !== void 0) {
           if ("number" !== typeof this.start) {
             throw TypeError("start must be a Number");
@@ -19714,8 +18843,7 @@ var require_legacy_streams = __commonJS({
         });
       }
       function WriteStream(path10, options) {
-        if (!(this instanceof WriteStream))
-          return new WriteStream(path10, options);
+        if (!(this instanceof WriteStream)) return new WriteStream(path10, options);
         Stream.call(this);
         this.path = path10;
         this.fd = null;
@@ -19753,7 +18881,7 @@ var require_legacy_streams = __commonJS({
 
 // .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js
 var require_clone = __commonJS({
-  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js"(exports, module2) {
+  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js"(exports2, module2) {
     "use strict";
     module2.exports = clone;
     var getPrototypeOf = Object.getPrototypeOf || function(obj) {
@@ -19776,7 +18904,7 @@ var require_clone = __commonJS({
 
 // .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js
 var require_graceful_fs = __commonJS({
-  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js"(exports, module2) {
+  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
     var fs8 = require("fs");
     var polyfills = require_polyfills();
     var legacy = require_legacy_streams();
@@ -20146,7 +19274,7 @@ var require_graceful_fs = __commonJS({
 
 // .yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js
 var require_cmd_shim = __commonJS({
-  ".yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js"(exports, module2) {
+  ".yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js"(exports2, module2) {
     "use strict";
     cmdShim2.ifExists = cmdShimIfExists;
     var util_1 = require("util");
@@ -20488,6 +19616,15 @@ ${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$
   }
 });
 
+// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/major.js
+var require_major = __commonJS({
+  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/major.js"(exports2, module2) {
+    var SemVer3 = require_semver();
+    var major = (a, loose) => new SemVer3(a, loose).major;
+    module2.exports = major;
+  }
+});
+
 // sources/_lib.ts
 var lib_exports2 = {};
 __export(lib_exports2, {
@@ -22189,19 +21326,21 @@ function String2(descriptor, ...args) {
 }
 
 // package.json
-var version = "0.28.2";
+var version = "0.29.2";
 
 // sources/Engine.ts
 var import_fs4 = __toESM(require("fs"));
 var import_path4 = __toESM(require("path"));
 var import_process3 = __toESM(require("process"));
-var import_semver4 = __toESM(require_semver2());
+var import_rcompare = __toESM(require_rcompare());
+var import_valid2 = __toESM(require_valid());
+var import_valid3 = __toESM(require_valid2());
 
 // config.json
 var config_default = {
   definitions: {
     npm: {
-      default: "10.8.1+sha1.1f1cb1305cd9246b9efe07d8629874df23157a2f",
+      default: "10.8.2+sha1.3c123c7f14409dc0395478e7269fdbc32ae179d8",
       fetchLatestFrom: {
         type: "npm",
         package: "npm"
@@ -22238,7 +21377,7 @@ var config_default = {
       }
     },
     pnpm: {
-      default: "9.1.4+sha1.2432063d815cfa88fd9fef1d85a445e3f609851d",
+      default: "9.5.0+sha1.8c155dc114e1689d18937974f6571e0ceee66f1d",
       fetchLatestFrom: {
         type: "npm",
         package: "pnpm"
@@ -22302,7 +21441,7 @@ var config_default = {
         package: "yarn"
       },
       transparent: {
-        default: "4.2.2+sha224.1e50daf19e5e249a025569752c60b88005fddf57d10fcde5fc68b88f",
+        default: "4.3.1+sha224.934d21773e22af4b69a7032a2d3b4cb38c1f7c019624777cc9916b23",
         commands: [
           [
             "yarn",
@@ -22381,7 +21520,10 @@ var import_events2 = require("events");
 var import_fs2 = __toESM(require("fs"));
 var import_module = __toESM(require("module"));
 var import_path2 = __toESM(require("path"));
-var import_semver = __toESM(require_semver2());
+var import_range = __toESM(require_range());
+var import_semver = __toESM(require_semver());
+var import_lt = __toESM(require_lt());
+var import_parse = __toESM(require_parse());
 var import_promises = require("timers/promises");
 
 // sources/debugUtils.ts
@@ -22456,8 +21598,7 @@ function verifySignature({ signatures, integrity, packageName, version: version2
   const { npm: keys } = process.env.COREPACK_INTEGRITY_KEYS ? JSON.parse(process.env.COREPACK_INTEGRITY_KEYS) : config_default.keys;
   const key = keys.find(({ keyid }) => signatures.some((s) => s.keyid === keyid));
   const signature = signatures.find(({ keyid }) => keyid === key?.keyid);
-  if (key == null || signature == null)
-    throw new Error(`Cannot find matching keyid: ${JSON.stringify({ signatures, keys })}`);
+  if (key == null || signature == null) throw new Error(`Cannot find matching keyid: ${JSON.stringify({ signatures, keys })}`);
   const verifier = (0, import_crypto.createVerify)(`SHA256`);
   verifier.end(`${packageName}@${version2}:${integrity}`);
   const valid = verifier.verify(
@@ -22571,8 +21712,7 @@ var ProxyAgent;
 async function getProxyAgent(input) {
   const { getProxyForUrl } = await Promise.resolve().then(() => __toESM(require_proxy_from_env()));
   const proxy = getProxyForUrl(input);
-  if (!proxy)
-    return void 0;
+  if (!proxy) return void 0;
   if (ProxyAgent == null) {
     const [api, Dispatcher, _ProxyAgent] = await Promise.all([
       // @ts-expect-error internal module is untyped
@@ -22647,7 +21787,7 @@ async function findInstalledVersion(installTarget, descriptor) {
       throw error;
     }
   }
-  const range = new import_semver.default.Range(descriptor.range);
+  const range = new import_range.default(descriptor.range);
   let bestMatch = null;
   let maxSV = void 0;
   for await (const { name } of cacheDirectory) {
@@ -22655,7 +21795,7 @@ async function findInstalledVersion(installTarget, descriptor) {
       continue;
     if (range.test(name) && maxSV?.compare(name) !== 1) {
       bestMatch = name;
-      maxSV = new import_semver.default.SemVer(bestMatch);
+      maxSV = new import_semver.default(bestMatch);
     }
   }
   return bestMatch;
@@ -22729,7 +21869,7 @@ async function download(installTarget, url, algo, binPath = null) {
 }
 async function installVersion(installTarget, locator, { spec }) {
   const locatorIsASupportedPackageManager = isSupportedPackageManagerLocator(locator);
-  const locatorReference = locatorIsASupportedPackageManager ? import_semver.default.parse(locator.reference) : parseURLReference(locator);
+  const locatorReference = locatorIsASupportedPackageManager ? (0, import_parse.default)(locator.reference) : parseURLReference(locator);
   const { version: version2, build } = locatorReference;
   const installFolder = import_path2.default.join(installTarget, locator.name, version2);
   try {
@@ -22760,12 +21900,11 @@ async function installVersion(installTarget, locator, { spec }) {
         if (registry.bin) {
           binPath = registry.bin;
         }
-      } else {
-        url = url.replace(
-          DEFAULT_NPM_REGISTRY_URL,
-          () => process.env.COREPACK_NPM_REGISTRY
-        );
       }
+      url = url.replace(
+        DEFAULT_NPM_REGISTRY_URL,
+        () => process.env.COREPACK_NPM_REGISTRY
+      );
     }
   } else {
     url = decodeURIComponent(version2);
@@ -22820,11 +21959,7 @@ async function installVersion(installTarget, locator, { spec }) {
   }));
   await import_fs2.default.promises.mkdir(import_path2.default.dirname(installFolder), { recursive: true });
   try {
-    if (process.platform === `win32`) {
-      await renameUnderWindows(tmpFolder, installFolder);
-    } else {
-      await import_fs2.default.promises.rename(tmpFolder, installFolder);
-    }
+    await renameSafe(tmpFolder, installFolder);
   } catch (err) {
     if (err.code === `ENOTEMPTY` || // On Windows the error code is EPERM so we check if it is a directory
     err.code === `EPERM` && (await import_fs2.default.promises.stat(installFolder)).isDirectory()) {
@@ -22838,9 +21973,9 @@ async function installVersion(installTarget, locator, { spec }) {
     const lastKnownGood = await getLastKnownGood();
     const defaultVersion = getLastKnownGoodFromFileContent(lastKnownGood, locator.name);
     if (defaultVersion) {
-      const currentDefault = import_semver.default.parse(defaultVersion);
+      const currentDefault = (0, import_parse.default)(defaultVersion);
       const downloadedVersion = locatorReference;
-      if (currentDefault.major === downloadedVersion.major && import_semver.default.lt(currentDefault, downloadedVersion)) {
+      if (currentDefault.major === downloadedVersion.major && (0, import_lt.default)(currentDefault, downloadedVersion)) {
         await activatePackageManager(lastKnownGood, locator);
       }
     }
@@ -22896,7 +22031,7 @@ async function runVersion(locator, installSpec, binName, args) {
   }
   if (!binPath)
     throw new Error(`Assertion failed: Unable to locate path for bin '${binName}'`);
-  if (locator.name !== `npm` || import_semver.default.lt(locator.reference, `9.7.0`))
+  if (locator.name !== `npm` || (0, import_lt.default)(locator.reference, `9.7.0`))
     await Promise.resolve().then(() => __toESM(require_v8_compile_cache()));
   process.env.COREPACK_ROOT = import_path2.default.dirname(require.resolve("corepack/package.json"));
   process.argv = [
@@ -22913,11 +22048,12 @@ function shouldSkipIntegrityCheck() {
 }
 
 // sources/semverUtils.ts
-var import_semver2 = __toESM(require_semver2());
+var import_range2 = __toESM(require_range());
+var import_semver2 = __toESM(require_semver());
 function satisfiesWithPrereleases(version2, range, loose = false) {
   let semverRange;
   try {
-    semverRange = new import_semver2.default.Range(range, loose);
+    semverRange = new import_range2.default(range, loose);
   } catch (err) {
     return false;
   }
@@ -22925,7 +22061,7 @@ function satisfiesWithPrereleases(version2, range, loose = false) {
     return false;
   let semverVersion;
   try {
-    semverVersion = new import_semver2.default.SemVer(version2, semverRange.loose);
+    semverVersion = new import_semver2.default(version2, semverRange.loose);
     if (semverVersion.prerelease) {
       semverVersion.prerelease = [];
     }
@@ -22945,7 +22081,7 @@ function satisfiesWithPrereleases(version2, range, loose = false) {
 // sources/specUtils.ts
 var import_fs3 = __toESM(require("fs"));
 var import_path3 = __toESM(require("path"));
-var import_semver3 = __toESM(require_semver2());
+var import_valid = __toESM(require_valid());
 
 // sources/nodeUtils.ts
 var import_os2 = __toESM(require("os"));
@@ -23024,7 +22160,7 @@ function parseSpec(raw, source, { enforceExactVersion = true } = {}) {
   const range = raw.slice(atIndex + 1);
   const isURL = URL.canParse(range);
   if (!isURL) {
-    if (enforceExactVersion && !import_semver3.default.valid(range))
+    if (enforceExactVersion && !(0, import_valid.default)(range))
       throw new UsageError(`Invalid package manager specification in ${source} (${raw}); expected a semver version${enforceExactVersion ? `` : `, range, or tag`}`);
     if (!isSupportedPackageManager(name)) {
       throw new UsageError(`Unsupported package manager specification (${raw})`);
@@ -23064,8 +22200,7 @@ async function loadSpec(initialCwd) {
     try {
       content = await import_fs3.default.promises.readFile(manifestPath, `utf8`);
     } catch (err) {
-      if (err?.code === `ENOENT`)
-        continue;
+      if (err?.code === `ENOENT`) continue;
       throw err;
     }
     let data;
@@ -23098,16 +22233,13 @@ async function getLastKnownGood() {
   try {
     raw = await import_fs4.default.promises.readFile(getLastKnownGoodFilePath(), `utf8`);
   } catch (err) {
-    if (err?.code === `ENOENT`)
-      return {};
+    if (err?.code === `ENOENT`) return {};
     throw err;
   }
   try {
     const parsed = JSON.parse(raw);
-    if (!parsed)
-      return {};
-    if (typeof parsed !== `object`)
-      return {};
+    if (!parsed) return {};
+    if (typeof parsed !== `object`) return {};
     Object.entries(parsed).forEach(([key, value]) => {
       if (typeof value !== `string`) {
         delete parsed[key];
@@ -23333,7 +22465,7 @@ var Engine = class {
     if (typeof definition === `undefined`)
       throw new UsageError(`This package manager (${descriptor.name}) isn't supported by this corepack build`);
     let finalDescriptor = descriptor;
-    if (!import_semver4.default.valid(descriptor.range) && !import_semver4.default.validRange(descriptor.range)) {
+    if (!(0, import_valid2.default)(descriptor.range) && !(0, import_valid3.default)(descriptor.range)) {
       if (!allowTags)
         throw new UsageError(`Packages managers can't be referenced via tags in this context`);
       const ranges = Object.keys(definition.ranges);
@@ -23351,7 +22483,7 @@ var Engine = class {
     const cachedVersion = await findInstalledVersion(getInstallFolder(), finalDescriptor);
     if (cachedVersion !== null && useCache)
       return { name: finalDescriptor.name, reference: cachedVersion };
-    if (import_semver4.default.valid(finalDescriptor.range))
+    if ((0, import_valid2.default)(finalDescriptor.range))
       return { name: finalDescriptor.name, reference: finalDescriptor.range };
     const versions = await Promise.all(Object.keys(definition.ranges).map(async (range) => {
       const packageManagerSpec = definition.ranges[range];
@@ -23359,7 +22491,7 @@ var Engine = class {
       const versions2 = await fetchAvailableVersions2(registry);
       return versions2.filter((version2) => satisfiesWithPrereleases(version2, finalDescriptor.range));
     }));
-    const highestVersion = [...new Set(versions.flat())].sort(import_semver4.default.rcompare);
+    const highestVersion = [...new Set(versions.flat())].sort(import_rcompare.default);
     if (highestVersion.length === 0)
       return null;
     return { name: finalDescriptor.name, reference: highestVersion[0] };
@@ -23419,17 +22551,15 @@ var DisableCommand = class extends Command {
     if (typeof installDirectory === `undefined`)
       installDirectory = import_path5.default.dirname(await (0, import_which.default)(`corepack`));
     const names = this.names.length === 0 ? SupportedPackageManagerSetWithoutNpm : this.names;
+    const allBinNames = [];
     for (const name of new Set(names)) {
       if (!isSupportedPackageManager(name))
         throw new UsageError(`Invalid package manager name '${name}'`);
-      for (const binName of this.context.engine.getBinariesFor(name)) {
-        if (process.platform === `win32`) {
-          await this.removeWin32Link(installDirectory, binName);
-        } else {
-          await this.removePosixLink(installDirectory, binName);
-        }
-      }
+      const binNames = this.context.engine.getBinariesFor(name);
+      allBinNames.push(...binNames);
     }
+    const removeLink = process.platform === `win32` ? (binName) => this.removeWin32Link(installDirectory, binName) : (binName) => this.removePosixLink(installDirectory, binName);
+    await Promise.all(allBinNames.map(removeLink));
   }
   async removePosixLink(installDirectory, binName) {
     const file = import_path5.default.join(installDirectory, binName);
@@ -23496,17 +22626,15 @@ var EnableCommand = class extends Command {
     if (!import_fs7.default.existsSync(distFolder))
       throw new Error(`Assertion failed: The stub folder doesn't exist`);
     const names = this.names.length === 0 ? SupportedPackageManagerSetWithoutNpm : this.names;
+    const allBinNames = [];
     for (const name of new Set(names)) {
       if (!isSupportedPackageManager(name))
         throw new UsageError(`Invalid package manager name '${name}'`);
-      for (const binName of this.context.engine.getBinariesFor(name)) {
-        if (process.platform === `win32`) {
-          await this.generateWin32Link(installDirectory, distFolder, binName);
-        } else {
-          await this.generatePosixLink(installDirectory, distFolder, binName);
-        }
-      }
+      const binNames = this.context.engine.getBinariesFor(name);
+      allBinNames.push(...binNames);
     }
+    const generateLink = process.platform === `win32` ? (binName) => this.generateWin32Link(installDirectory, distFolder, binName) : (binName) => this.generatePosixLink(installDirectory, distFolder, binName);
+    await Promise.all(allBinNames.map(generateLink));
   }
   async generatePosixLink(installDirectory, distFolder, binName) {
     const file = import_path6.default.join(installDirectory, binName);
@@ -23596,13 +22724,13 @@ var InstallGlobalCommand = class extends BaseCommand {
   async execute() {
     if (this.args.length === 0)
       throw new UsageError(`No package managers specified`);
-    for (const arg of this.args) {
+    await Promise.all(this.args.map((arg) => {
       if (arg.endsWith(`.tgz`)) {
-        await this.installFromTarball(import_path7.default.resolve(this.context.cwd, arg));
+        return this.installFromTarball(import_path7.default.resolve(this.context.cwd, arg));
       } else {
-        await this.installFromDescriptor(parseSpec(arg, `CLI arguments`, { enforceExactVersion: false }));
+        return this.installFromDescriptor(parseSpec(arg, `CLI arguments`, { enforceExactVersion: false }));
       }
-    }
+    }));
   }
   log(locator) {
     if (this.cacheOnly) {
@@ -23752,7 +22880,9 @@ var PackCommand = class extends BaseCommand {
 };
 
 // sources/commands/Up.ts
-var import_semver5 = __toESM(require_semver2());
+var import_major = __toESM(require_major());
+var import_valid4 = __toESM(require_valid());
+var import_valid5 = __toESM(require_valid2());
 var UpCommand = class extends BaseCommand {
   static paths = [
     [`up`]
@@ -23778,12 +22908,12 @@ var UpCommand = class extends BaseCommand {
     const [descriptor] = await this.resolvePatternsToDescriptors({
       patterns: []
     });
-    if (!import_semver5.default.valid(descriptor.range) && !import_semver5.default.validRange(descriptor.range))
+    if (!(0, import_valid4.default)(descriptor.range) && !(0, import_valid5.default)(descriptor.range))
       throw new UsageError(`The 'corepack up' command can only be used when your project's packageManager field is set to a semver version or semver range`);
     const resolved = await this.context.engine.resolveDescriptor(descriptor, { useCache: false });
     if (!resolved)
       throw new UsageError(`Failed to successfully resolve '${descriptor.range}' to a valid ${descriptor.name} release`);
-    const majorVersion = import_semver5.default.major(resolved.reference);
+    const majorVersion = (0, import_major.default)(resolved.reference);
     const majorDescriptor = { name: descriptor.name, range: `^${majorVersion}.0.0` };
     const highestVersion = await this.context.engine.resolveDescriptor(majorDescriptor, { useCache: false });
     if (!highestVersion)
@@ -23964,8 +23094,7 @@ function getPackageManagerRequestFromCli(parameter, engine) {
     return null;
   const [, binaryName, binaryVersion] = match;
   const packageManager = engine.getPackageManagerFor(binaryName);
-  if (packageManager == null && binaryVersion == null)
-    return null;
+  if (packageManager == null && binaryVersion == null) return null;
   return {
     packageManager,
     binaryName,
diff --git a/deps/corepack/package.json b/deps/corepack/package.json
index c1e1618ee1a8b2..82dffa34405c23 100644
--- a/deps/corepack/package.json
+++ b/deps/corepack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "corepack",
-  "version": "0.28.2",
+  "version": "0.29.2",
   "homepage": "https://github.com/nodejs/corepack#readme",
   "bugs": {
     "url": "https://github.com/nodejs/corepack/issues"
@@ -16,7 +16,7 @@
     "./package.json": "./package.json"
   },
   "license": "MIT",
-  "packageManager": "yarn@4.1.1+sha224.00f08619463229f8ba40c4ee90e8c2e4ced1f11c3115c26f3b98432e",
+  "packageManager": "yarn@4.3.1+sha224.934d21773e22af4b69a7032a2d3b4cb38c1f7c019624777cc9916b23",
   "devDependencies": {
     "@babel/core": "^7.14.3",
     "@babel/plugin-transform-modules-commonjs": "^7.14.0",
@@ -29,26 +29,23 @@
     "@types/semver": "^7.1.0",
     "@types/tar": "^6.0.0",
     "@types/which": "^3.0.0",
-    "@typescript-eslint/eslint-plugin": "^6.8.0",
-    "@typescript-eslint/parser": "^6.8.0",
-    "@yarnpkg/eslint-config": "^1.0.0",
+    "@yarnpkg/eslint-config": "^2.0.0",
     "@yarnpkg/fslib": "^3.0.0-rc.48",
     "@zkochan/cmd-shim": "^6.0.0",
     "babel-plugin-dynamic-import-node": "^2.3.3",
-    "better-sqlite3": "^9.4.1",
+    "better-sqlite3": "^10.0.0",
     "clipanion": "^3.0.1",
     "debug": "^4.1.1",
-    "esbuild": "0.19.5",
-    "eslint": "^8.0.0",
-    "eslint-plugin-arca": "^0.16.0",
+    "esbuild": "^0.21.0",
+    "eslint": "^8.57.0",
     "jest": "^29.0.0",
     "proxy-from-env": "^1.1.0",
     "semver": "^7.5.2",
     "supports-color": "^9.0.0",
     "tar": "^6.2.1",
-    "ts-node": "^10.0.0",
+    "tsx": "^4.16.2",
     "typescript": "^5.3.3",
-    "undici": "^6.6.1",
+    "undici": "^6.19.2",
     "v8-compile-cache": "^2.3.0",
     "which": "^4.0.0"
   },
@@ -56,12 +53,14 @@
     "undici-types": "6.x"
   },
   "scripts": {
-    "build": "rm -rf dist shims && run build:bundle && ts-node ./mkshims.ts",
+    "build": "run clean && run build:bundle && tsx ./mkshims.ts",
     "build:bundle": "esbuild ./sources/_lib.ts --bundle --platform=node --target=node18.17.0 --external:corepack --outfile='./dist/lib/corepack.cjs' --resolve-extensions='.ts,.mjs,.js'",
-    "corepack": "ts-node ./sources/_cli.ts",
+    "clean": "run rimraf dist shims",
+    "corepack": "tsx ./sources/_cli.ts",
     "lint": "eslint .",
     "prepack": "yarn build",
-    "postpack": "rm -rf dist shims",
+    "postpack": "run clean",
+    "rimraf": "node -e 'for(let i=2;i
Date: Tue, 30 Jul 2024 10:54:52 -0400
Subject: [PATCH 40/76] deps: update corepack to 0.29.3

PR-URL: https://github.com/nodejs/node/pull/54072
Reviewed-By: Moshe Atlow 
Reviewed-By: Antoine du Hamel 
Reviewed-By: Marco Ippolito 
---
 deps/corepack/CHANGELOG.md          |     8 +
 deps/corepack/dist/lib/corepack.cjs | 14766 +++++++++++++-------------
 deps/corepack/package.json          |    19 +-
 3 files changed, 7377 insertions(+), 7416 deletions(-)

diff --git a/deps/corepack/CHANGELOG.md b/deps/corepack/CHANGELOG.md
index 1621a5b04ddb1d..a7b01aa8fb10bf 100644
--- a/deps/corepack/CHANGELOG.md
+++ b/deps/corepack/CHANGELOG.md
@@ -1,5 +1,13 @@
 # Changelog
 
+## [0.29.3](https://github.com/nodejs/corepack/compare/v0.29.2...v0.29.3) (2024-07-21)
+
+
+### Bug Fixes
+
+* fallback to `shasum` when `integrity` is not defined ([#542](https://github.com/nodejs/corepack/issues/542)) ([eb63873](https://github.com/nodejs/corepack/commit/eb63873c6c617a2f8ac7106e26ccfe8aa3ae1fb9))
+* make `DEBUG=corepack` more useful ([#538](https://github.com/nodejs/corepack/issues/538)) ([6019d7b](https://github.com/nodejs/corepack/commit/6019d7b56e85bd8b7b58a1a487922c707e70e30e))
+
 ## [0.29.2](https://github.com/nodejs/corepack/compare/v0.29.1...v0.29.2) (2024-07-13)
 
 
diff --git a/deps/corepack/dist/lib/corepack.cjs b/deps/corepack/dist/lib/corepack.cjs
index 2714690cac4fe7..12df55126256e5 100644
--- a/deps/corepack/dist/lib/corepack.cjs
+++ b/deps/corepack/dist/lib/corepack.cjs
@@ -12,8 +12,8 @@ var __commonJS = (cb, mod) => function __require() {
   return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
 };
 var __export = (target, all) => {
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
+  for (var name2 in all)
+    __defProp(target, name2, { get: all[name2], enumerable: true });
 };
 var __copyProps = (to, from, except, desc) => {
   if (from && typeof from === "object" || typeof from === "function") {
@@ -1037,18 +1037,71 @@ var init_lib = __esm({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/debug.js
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/platform/node.js
+var require_node = __commonJS({
+  ".yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/platform/node.js"(exports2) {
+    "use strict";
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    var tty2 = require("tty");
+    function _interopDefaultLegacy(e) {
+      return e && typeof e === "object" && "default" in e ? e : { "default": e };
+    }
+    var tty__default = /* @__PURE__ */ _interopDefaultLegacy(tty2);
+    function getDefaultColorDepth2() {
+      if (tty__default["default"] && `getColorDepth` in tty__default["default"].WriteStream.prototype)
+        return tty__default["default"].WriteStream.prototype.getColorDepth();
+      if (process.env.FORCE_COLOR === `0`)
+        return 1;
+      if (process.env.FORCE_COLOR === `1`)
+        return 8;
+      if (typeof process.stdout !== `undefined` && process.stdout.isTTY)
+        return 8;
+      return 1;
+    }
+    var gContextStorage;
+    function getCaptureActivator2(context) {
+      let contextStorage = gContextStorage;
+      if (typeof contextStorage === `undefined`) {
+        if (context.stdout === process.stdout && context.stderr === process.stderr)
+          return null;
+        const { AsyncLocalStorage: LazyAsyncLocalStorage } = require("async_hooks");
+        contextStorage = gContextStorage = new LazyAsyncLocalStorage();
+        const origStdoutWrite = process.stdout._write;
+        process.stdout._write = function(chunk, encoding, cb) {
+          const context2 = contextStorage.getStore();
+          if (typeof context2 === `undefined`)
+            return origStdoutWrite.call(this, chunk, encoding, cb);
+          return context2.stdout.write(chunk, encoding, cb);
+        };
+        const origStderrWrite = process.stderr._write;
+        process.stderr._write = function(chunk, encoding, cb) {
+          const context2 = contextStorage.getStore();
+          if (typeof context2 === `undefined`)
+            return origStderrWrite.call(this, chunk, encoding, cb);
+          return context2.stderr.write(chunk, encoding, cb);
+        };
+      }
+      return (fn2) => {
+        return contextStorage.run(context, fn2);
+      };
+    }
+    exports2.getCaptureActivator = getCaptureActivator2;
+    exports2.getDefaultColorDepth = getDefaultColorDepth2;
+  }
+});
+
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/debug.js
 var require_debug = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/debug.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/debug.js"(exports2, module2) {
     var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
     };
     module2.exports = debug2;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/constants.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/constants.js
 var require_constants = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/constants.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/constants.js"(exports2, module2) {
     var SEMVER_SPEC_VERSION = "2.0.0";
     var MAX_LENGTH = 256;
     var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
@@ -1077,9 +1130,9 @@ var require_constants = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/re.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/re.js
 var require_re = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/re.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/re.js"(exports2, module2) {
     var {
       MAX_SAFE_COMPONENT_LENGTH,
       MAX_SAFE_BUILD_LENGTH,
@@ -1104,11 +1157,11 @@ var require_re = __commonJS({
       }
       return value;
     };
-    var createToken = (name, value, isGlobal) => {
+    var createToken = (name2, value, isGlobal) => {
       const safe = makeSafeRegex(value);
       const index = R++;
-      debug2(name, index, value);
-      t[name] = index;
+      debug2(name2, index, value);
+      t[name2] = index;
       src[index] = value;
       re[index] = new RegExp(value, isGlobal ? "g" : void 0);
       safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
@@ -1162,9 +1215,9 @@ var require_re = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/parse-options.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/parse-options.js
 var require_parse_options = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/parse-options.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/parse-options.js"(exports2, module2) {
     var looseOption = Object.freeze({ loose: true });
     var emptyOpts = Object.freeze({});
     var parseOptions = (options) => {
@@ -1180,9 +1233,9 @@ var require_parse_options = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/identifiers.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/identifiers.js
 var require_identifiers = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/identifiers.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/identifiers.js"(exports2, module2) {
     var numeric = /^[0-9]+$/;
     var compareIdentifiers = (a, b) => {
       const anum = numeric.test(a);
@@ -1201,40 +1254,40 @@ var require_identifiers = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/semver.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/classes/semver.js
 var require_semver = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/semver.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/classes/semver.js"(exports2, module2) {
     var debug2 = require_debug();
     var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants();
     var { safeRe: re, t } = require_re();
     var parseOptions = require_parse_options();
     var { compareIdentifiers } = require_identifiers();
     var SemVer3 = class _SemVer {
-      constructor(version2, options) {
+      constructor(version3, options) {
         options = parseOptions(options);
-        if (version2 instanceof _SemVer) {
-          if (version2.loose === !!options.loose && version2.includePrerelease === !!options.includePrerelease) {
-            return version2;
+        if (version3 instanceof _SemVer) {
+          if (version3.loose === !!options.loose && version3.includePrerelease === !!options.includePrerelease) {
+            return version3;
           } else {
-            version2 = version2.version;
+            version3 = version3.version;
           }
-        } else if (typeof version2 !== "string") {
-          throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version2}".`);
+        } else if (typeof version3 !== "string") {
+          throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version3}".`);
         }
-        if (version2.length > MAX_LENGTH) {
+        if (version3.length > MAX_LENGTH) {
           throw new TypeError(
             `version is longer than ${MAX_LENGTH} characters`
           );
         }
-        debug2("SemVer", version2, options);
+        debug2("SemVer", version3, options);
         this.options = options;
         this.loose = !!options.loose;
         this.includePrerelease = !!options.includePrerelease;
-        const m = version2.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
+        const m = version3.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
         if (!m) {
-          throw new TypeError(`Invalid Version: ${version2}`);
+          throw new TypeError(`Invalid Version: ${version3}`);
         }
-        this.raw = version2;
+        this.raw = version3;
         this.major = +m[1];
         this.minor = +m[2];
         this.patch = +m[3];
@@ -1443,34 +1496,34 @@ var require_semver = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/compare.js
 var require_compare = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/compare.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/compare.js"(exports2, module2) {
     var SemVer3 = require_semver();
     var compare = (a, b, loose) => new SemVer3(a, loose).compare(new SemVer3(b, loose));
     module2.exports = compare;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rcompare.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/rcompare.js
 var require_rcompare = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/rcompare.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/rcompare.js"(exports2, module2) {
     var compare = require_compare();
     var rcompare = (a, b, loose) => compare(b, a, loose);
     module2.exports = rcompare;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/parse.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/parse.js
 var require_parse = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/parse.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/parse.js"(exports2, module2) {
     var SemVer3 = require_semver();
-    var parse = (version2, options, throwErrors = false) => {
-      if (version2 instanceof SemVer3) {
-        return version2;
+    var parse5 = (version3, options, throwErrors = false) => {
+      if (version3 instanceof SemVer3) {
+        return version3;
       }
       try {
-        return new SemVer3(version2, options);
+        return new SemVer3(version3, options);
       } catch (er) {
         if (!throwErrors) {
           return null;
@@ -1478,25 +1531,25 @@ var require_parse = __commonJS({
         throw er;
       }
     };
-    module2.exports = parse;
+    module2.exports = parse5;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/valid.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/valid.js
 var require_valid = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/valid.js"(exports2, module2) {
-    var parse = require_parse();
-    var valid = (version2, options) => {
-      const v = parse(version2, options);
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/valid.js"(exports2, module2) {
+    var parse5 = require_parse();
+    var valid = (version3, options) => {
+      const v = parse5(version3, options);
       return v ? v.version : null;
     };
     module2.exports = valid;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/lrucache.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/lrucache.js
 var require_lrucache = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/internal/lrucache.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/internal/lrucache.js"(exports2, module2) {
     var LRUCache = class {
       constructor() {
         this.max = 1e3;
@@ -1531,63 +1584,63 @@ var require_lrucache = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/eq.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/eq.js
 var require_eq = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/eq.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/eq.js"(exports2, module2) {
     var compare = require_compare();
     var eq = (a, b, loose) => compare(a, b, loose) === 0;
     module2.exports = eq;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/neq.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/neq.js
 var require_neq = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/neq.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/neq.js"(exports2, module2) {
     var compare = require_compare();
     var neq = (a, b, loose) => compare(a, b, loose) !== 0;
     module2.exports = neq;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gt.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/gt.js
 var require_gt = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gt.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/gt.js"(exports2, module2) {
     var compare = require_compare();
     var gt = (a, b, loose) => compare(a, b, loose) > 0;
     module2.exports = gt;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gte.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/gte.js
 var require_gte = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/gte.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/gte.js"(exports2, module2) {
     var compare = require_compare();
     var gte = (a, b, loose) => compare(a, b, loose) >= 0;
     module2.exports = gte;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lt.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/lt.js
 var require_lt = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lt.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/lt.js"(exports2, module2) {
     var compare = require_compare();
     var lt = (a, b, loose) => compare(a, b, loose) < 0;
     module2.exports = lt;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lte.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/lte.js
 var require_lte = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/lte.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/lte.js"(exports2, module2) {
     var compare = require_compare();
     var lte = (a, b, loose) => compare(a, b, loose) <= 0;
     module2.exports = lte;
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/cmp.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/cmp.js
 var require_cmp = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/cmp.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/cmp.js"(exports2, module2) {
     var eq = require_eq();
     var neq = require_neq();
     var gt = require_gt();
@@ -1634,9 +1687,9 @@ var require_cmp = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/comparator.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/classes/comparator.js
 var require_comparator = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/comparator.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/classes/comparator.js"(exports2, module2) {
     var ANY = Symbol("SemVer ANY");
     var Comparator = class _Comparator {
       static get ANY() {
@@ -1682,19 +1735,19 @@ var require_comparator = __commonJS({
       toString() {
         return this.value;
       }
-      test(version2) {
-        debug2("Comparator.test", version2, this.options.loose);
-        if (this.semver === ANY || version2 === ANY) {
+      test(version3) {
+        debug2("Comparator.test", version3, this.options.loose);
+        if (this.semver === ANY || version3 === ANY) {
           return true;
         }
-        if (typeof version2 === "string") {
+        if (typeof version3 === "string") {
           try {
-            version2 = new SemVer3(version2, this.options);
+            version3 = new SemVer3(version3, this.options);
           } catch (er) {
             return false;
           }
         }
-        return cmp(version2, this.operator, this.semver, this.options);
+        return cmp(version3, this.operator, this.semver, this.options);
       }
       intersects(comp, options) {
         if (!(comp instanceof _Comparator)) {
@@ -1746,9 +1799,10 @@ var require_comparator = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/range.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/classes/range.js
 var require_range = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/classes/range.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/classes/range.js"(exports2, module2) {
+    var SPACE_CHARACTERS = /\s+/g;
     var Range3 = class _Range {
       constructor(range, options) {
         options = parseOptions(options);
@@ -1762,13 +1816,13 @@ var require_range = __commonJS({
         if (range instanceof Comparator) {
           this.raw = range.value;
           this.set = [[range]];
-          this.format();
+          this.formatted = void 0;
           return this;
         }
         this.options = options;
         this.loose = !!options.loose;
         this.includePrerelease = !!options.includePrerelease;
-        this.raw = range.trim().split(/\s+/).join(" ");
+        this.raw = range.trim().replace(SPACE_CHARACTERS, " ");
         this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length);
         if (!this.set.length) {
           throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
@@ -1787,10 +1841,27 @@ var require_range = __commonJS({
             }
           }
         }
-        this.format();
+        this.formatted = void 0;
+      }
+      get range() {
+        if (this.formatted === void 0) {
+          this.formatted = "";
+          for (let i = 0; i < this.set.length; i++) {
+            if (i > 0) {
+              this.formatted += "||";
+            }
+            const comps = this.set[i];
+            for (let k = 0; k < comps.length; k++) {
+              if (k > 0) {
+                this.formatted += " ";
+              }
+              this.formatted += comps[k].toString().trim();
+            }
+          }
+        }
+        return this.formatted;
       }
       format() {
-        this.range = this.set.map((comps) => comps.join(" ").trim()).join("||").trim();
         return this.range;
       }
       toString() {
@@ -1851,19 +1922,19 @@ var require_range = __commonJS({
         });
       }
       // if ANY of the sets match ALL of its comparators, then pass
-      test(version2) {
-        if (!version2) {
+      test(version3) {
+        if (!version3) {
           return false;
         }
-        if (typeof version2 === "string") {
+        if (typeof version3 === "string") {
           try {
-            version2 = new SemVer3(version2, this.options);
+            version3 = new SemVer3(version3, this.options);
           } catch (er) {
             return false;
           }
         }
         for (let i = 0; i < this.set.length; i++) {
-          if (testSet(this.set[i], version2, this.options)) {
+          if (testSet(this.set[i], version3, this.options)) {
             return true;
           }
         }
@@ -2077,13 +2148,13 @@ var require_range = __commonJS({
       }
       return `${from} ${to}`.trim();
     };
-    var testSet = (set, version2, options) => {
+    var testSet = (set, version3, options) => {
       for (let i = 0; i < set.length; i++) {
-        if (!set[i].test(version2)) {
+        if (!set[i].test(version3)) {
           return false;
         }
       }
-      if (version2.prerelease.length && !options.includePrerelease) {
+      if (version3.prerelease.length && !options.includePrerelease) {
         for (let i = 0; i < set.length; i++) {
           debug2(set[i].semver);
           if (set[i].semver === Comparator.ANY) {
@@ -2091,7 +2162,7 @@ var require_range = __commonJS({
           }
           if (set[i].semver.prerelease.length > 0) {
             const allowed = set[i].semver;
-            if (allowed.major === version2.major && allowed.minor === version2.minor && allowed.patch === version2.patch) {
+            if (allowed.major === version3.major && allowed.minor === version3.minor && allowed.patch === version3.patch) {
               return true;
             }
           }
@@ -2103,9 +2174,9 @@ var require_range = __commonJS({
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/valid.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/ranges/valid.js
 var require_valid2 = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/ranges/valid.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/ranges/valid.js"(exports2, module2) {
     var Range3 = require_range();
     var validRange = (range, options) => {
       try {
@@ -2131,7 +2202,7 @@ var require_ms = __commonJS({
       options = options || {};
       var type = typeof val;
       if (type === "string" && val.length > 0) {
-        return parse(val);
+        return parse5(val);
       } else if (type === "number" && isFinite(val)) {
         return options.long ? fmtLong(val) : fmtShort(val);
       }
@@ -2139,7 +2210,7 @@ var require_ms = __commonJS({
         "val is not a non-empty string or a valid number. val=" + JSON.stringify(val)
       );
     };
-    function parse(str) {
+    function parse5(str) {
       str = String(str);
       if (str.length > 100) {
         return;
@@ -2227,9 +2298,9 @@ var require_ms = __commonJS({
       }
       return ms + " ms";
     }
-    function plural2(ms, msAbs, n, name) {
+    function plural2(ms, msAbs, n, name2) {
       var isPlural = msAbs >= n * 1.5;
-      return Math.round(ms / n) + " " + name + (isPlural ? "s" : "");
+      return Math.round(ms / n) + " " + name2 + (isPlural ? "s" : "");
     }
   }
 });
@@ -2360,19 +2431,19 @@ var require_common = __commonJS({
         createDebug.enable("");
         return namespaces;
       }
-      function enabled(name) {
-        if (name[name.length - 1] === "*") {
+      function enabled(name2) {
+        if (name2[name2.length - 1] === "*") {
           return true;
         }
         let i;
         let len;
         for (i = 0, len = createDebug.skips.length; i < len; i++) {
-          if (createDebug.skips[i].test(name)) {
+          if (createDebug.skips[i].test(name2)) {
             return false;
           }
         }
         for (i = 0, len = createDebug.names.length; i < len; i++) {
-          if (createDebug.names[i].test(name)) {
+          if (createDebug.names[i].test(name2)) {
             return true;
           }
         }
@@ -2653,10 +2724,10 @@ function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
     return 3;
   }
   if ("TERM_PROGRAM" in env) {
-    const version2 = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
+    const version3 = Number.parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10);
     switch (env.TERM_PROGRAM) {
       case "iTerm.app": {
-        return version2 >= 3 ? 3 : 2;
+        return version3 >= 3 ? 3 : 2;
       }
       case "Apple_Terminal": {
         return 2;
@@ -2702,9 +2773,9 @@ var init_supports_color = __esm({
 });
 
 // .yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/node.js
-var require_node = __commonJS({
+var require_node2 = __commonJS({
   ".yarn/__virtual__/debug-virtual-710203f68e/0/cache/debug-npm-4.3.5-b5001f59b7-082c375a2b.zip/node_modules/debug/src/node.js"(exports2, module2) {
-    var tty3 = require("tty");
+    var tty2 = require("tty");
     var util = require("util");
     exports2.init = init;
     exports2.log = log2;
@@ -2822,18 +2893,18 @@ var require_node = __commonJS({
       return obj;
     }, {});
     function useColors() {
-      return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty3.isatty(process.stderr.fd);
+      return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty2.isatty(process.stderr.fd);
     }
     function formatArgs(args) {
-      const { namespace: name, useColors: useColors2 } = this;
+      const { namespace: name2, useColors: useColors2 } = this;
       if (useColors2) {
         const c = this.color;
         const colorCode = "\x1B[3" + (c < 8 ? c : "8;5;" + c);
-        const prefix = `  ${colorCode};1m${name} \x1B[0m`;
+        const prefix = `  ${colorCode};1m${name2} \x1B[0m`;
         args[0] = prefix + args[0].split("\n").join("\n" + prefix);
         args.push(colorCode + "m+" + module2.exports.humanize(this.diff) + "\x1B[0m");
       } else {
-        args[0] = getDate() + name + " " + args[0];
+        args[0] = getDate() + name2 + " " + args[0];
       }
     }
     function getDate() {
@@ -2881,7 +2952,7 @@ var require_src = __commonJS({
     if (typeof process === "undefined" || process.type === "renderer" || process.browser === true || process.__nwjs) {
       module2.exports = require_browser();
     } else {
-      module2.exports = require_node();
+      module2.exports = require_node2();
     }
   }
 });
@@ -3108,10 +3179,10 @@ var require_errors = __commonJS({
       }
     };
     var HTTPParserError = class extends Error {
-      constructor(message, code, data) {
+      constructor(message, code2, data) {
         super(message);
         this.name = "HTTPParserError";
-        this.code = code ? `HPE_${code}` : void 0;
+        this.code = code2 ? `HPE_${code2}` : void 0;
         this.data = data ? data.toString() : void 0;
       }
     };
@@ -3124,12 +3195,12 @@ var require_errors = __commonJS({
       }
     };
     var RequestRetryError = class extends UndiciError {
-      constructor(message, code, { headers, data }) {
+      constructor(message, code2, { headers, data }) {
         super(message);
         this.name = "RequestRetryError";
         this.message = message || "Request retry error";
         this.code = "UND_ERR_REQ_RETRY";
-        this.statusCode = code;
+        this.statusCode = code2;
         this.data = data;
         this.headers = headers;
       }
@@ -3386,8 +3457,8 @@ var require_tree = __commonJS({
         if (index === void 0 || index >= key.length) {
           throw new TypeError("Unreachable");
         }
-        const code = this.code = key.charCodeAt(index);
-        if (code > 127) {
+        const code2 = this.code = key.charCodeAt(index);
+        if (code2 > 127) {
           throw new TypeError("key must be ascii string");
         }
         if (key.length !== ++index) {
@@ -3408,11 +3479,11 @@ var require_tree = __commonJS({
         let index = 0;
         let node = this;
         while (true) {
-          const code = key.charCodeAt(index);
-          if (code > 127) {
+          const code2 = key.charCodeAt(index);
+          if (code2 > 127) {
             throw new TypeError("key must be ascii string");
           }
-          if (node.code === code) {
+          if (node.code === code2) {
             if (length === ++index) {
               node.value = value;
               break;
@@ -3422,7 +3493,7 @@ var require_tree = __commonJS({
               node.middle = new _TstNode(key, value, index);
               break;
             }
-          } else if (node.code < code) {
+          } else if (node.code < code2) {
             if (node.left !== null) {
               node = node.left;
             } else {
@@ -3446,19 +3517,19 @@ var require_tree = __commonJS({
         let index = 0;
         let node = this;
         while (node !== null && index < keylength) {
-          let code = key[index];
-          if (code <= 90 && code >= 65) {
-            code |= 32;
+          let code2 = key[index];
+          if (code2 <= 90 && code2 >= 65) {
+            code2 |= 32;
           }
           while (node !== null) {
-            if (code === node.code) {
+            if (code2 === node.code) {
               if (keylength === ++index) {
                 return node;
               }
               node = node.middle;
               break;
             }
-            node = node.code < code ? node.left : node.right;
+            node = node.code < code2 ? node.left : node.right;
           }
         }
         return null;
@@ -3502,7 +3573,7 @@ var require_tree = __commonJS({
 var require_util = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/util.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols();
     var { IncomingMessage } = require("node:http");
     var stream = require("node:stream");
@@ -3510,7 +3581,7 @@ var require_util = __commonJS({
     var { Blob: Blob2 } = require("node:buffer");
     var nodeUtil = require("node:util");
     var { stringify } = require("node:querystring");
-    var { EventEmitter: EE } = require("node:events");
+    var { EventEmitter: EE3 } = require("node:events");
     var { InvalidArgumentError } = require_errors();
     var { headerNameLowerCasedRecord } = require_constants2();
     var { tree } = require_tree();
@@ -3521,21 +3592,21 @@ var require_util = __commonJS({
         this[kBodyUsed] = false;
       }
       async *[Symbol.asyncIterator]() {
-        assert3(!this[kBodyUsed], "disturbed");
+        assert5(!this[kBodyUsed], "disturbed");
         this[kBodyUsed] = true;
         yield* this[kBody];
       }
     };
     function wrapRequestBody(body) {
-      if (isStream(body)) {
+      if (isStream2(body)) {
         if (bodyLength(body) === 0) {
           body.on("data", function() {
-            assert3(false);
+            assert5(false);
           });
         }
         if (typeof body.readableDidRead !== "boolean") {
           body[kBodyUsed] = false;
-          EE.prototype.on.call(body, "data", function() {
+          EE3.prototype.on.call(body, "data", function() {
             this[kBodyUsed] = true;
           });
         }
@@ -3550,7 +3621,7 @@ var require_util = __commonJS({
     }
     function nop() {
     }
-    function isStream(obj) {
+    function isStream2(obj) {
       return obj && typeof obj === "object" && typeof obj.pipe === "function" && typeof obj.on === "function";
     }
     function isBlobLike(object) {
@@ -3614,14 +3685,14 @@ var require_util = __commonJS({
         }
         const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80;
         let origin = url.origin != null ? url.origin : `${url.protocol || ""}//${url.hostname || ""}:${port}`;
-        let path10 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
+        let path16 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
         if (origin[origin.length - 1] === "/") {
           origin = origin.slice(0, origin.length - 1);
         }
-        if (path10 && path10[0] !== "/") {
-          path10 = `/${path10}`;
+        if (path16 && path16[0] !== "/") {
+          path16 = `/${path16}`;
         }
-        return new URL(`${origin}${path10}`);
+        return new URL(`${origin}${path16}`);
       }
       if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
         throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
@@ -3638,7 +3709,7 @@ var require_util = __commonJS({
     function getHostname(host) {
       if (host[0] === "[") {
         const idx2 = host.indexOf("]");
-        assert3(idx2 !== -1);
+        assert5(idx2 !== -1);
         return host.substring(1, idx2);
       }
       const idx = host.indexOf(":");
@@ -3649,7 +3720,7 @@ var require_util = __commonJS({
       if (!host) {
         return null;
       }
-      assert3.strictEqual(typeof host, "string");
+      assert5.strictEqual(typeof host, "string");
       const servername = getHostname(host);
       if (net.isIP(servername)) {
         return "";
@@ -3668,7 +3739,7 @@ var require_util = __commonJS({
     function bodyLength(body) {
       if (body == null) {
         return 0;
-      } else if (isStream(body)) {
+      } else if (isStream2(body)) {
         const state = body._readableState;
         return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length) ? state.length : null;
       } else if (isBlobLike(body)) {
@@ -3682,7 +3753,7 @@ var require_util = __commonJS({
       return body && !!(body.destroyed || body[kDestroyed] || stream.isDestroyed?.(body));
     }
     function destroy(stream2, err) {
-      if (stream2 == null || !isStream(stream2) || isDestroyed(stream2)) {
+      if (stream2 == null || !isStream2(stream2) || isDestroyed(stream2)) {
         return;
       }
       if (typeof stream2.destroy === "function") {
@@ -3800,7 +3871,7 @@ var require_util = __commonJS({
     function isErrored(body) {
       return !!(body && stream.isErrored(body));
     }
-    function isReadable(body) {
+    function isReadable2(body) {
       return !!(body && stream.isReadable(body));
     }
     function getSocketInfo(socket) {
@@ -3911,22 +3982,22 @@ var require_util = __commonJS({
         size: m[3] ? parseInt(m[3]) : null
       } : null;
     }
-    function addListener(obj, name, listener) {
+    function addListener(obj, name2, listener) {
       const listeners = obj[kListeners] ??= [];
-      listeners.push([name, listener]);
-      obj.on(name, listener);
+      listeners.push([name2, listener]);
+      obj.on(name2, listener);
       return obj;
     }
     function removeAllListeners(obj) {
-      for (const [name, listener] of obj[kListeners] ?? []) {
-        obj.removeListener(name, listener);
+      for (const [name2, listener] of obj[kListeners] ?? []) {
+        obj.removeListener(name2, listener);
       }
       obj[kListeners] = null;
     }
     function errorRequest(client, request, err) {
       try {
         request.onError(err);
-        assert3(request.aborted);
+        assert5(request.aborted);
       } catch (err2) {
         client.emit("error", err2);
       }
@@ -3959,14 +4030,14 @@ var require_util = __commonJS({
       nop,
       isDisturbed,
       isErrored,
-      isReadable,
+      isReadable: isReadable2,
       toUSVString,
       isUSVString,
       isBlobLike,
       parseOrigin,
       parseURL,
       getServerName,
-      isStream,
+      isStream: isStream2,
       isIterable,
       isAsyncIterable,
       isDestroyed,
@@ -4008,7 +4079,7 @@ var require_util = __commonJS({
 var require_readable = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/readable.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { Readable: Readable2 } = require("node:stream");
     var { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require_errors();
     var util = require_util();
@@ -4019,7 +4090,7 @@ var require_readable = __commonJS({
     var kAbort = Symbol("kAbort");
     var kContentType = Symbol("kContentType");
     var kContentLength = Symbol("kContentLength");
-    var noop = () => {
+    var noop2 = () => {
     };
     var BodyReadable = class extends Readable2 {
       constructor({
@@ -4117,7 +4188,7 @@ var require_readable = __commonJS({
           this[kBody] = ReadableStreamFrom(this);
           if (this[kConsume]) {
             this[kBody].getReader();
-            assert3(this[kBody].locked);
+            assert5(this[kBody].locked);
           }
         }
         return this[kBody];
@@ -4132,7 +4203,7 @@ var require_readable = __commonJS({
         if (this._readableState.closeEmitted) {
           return null;
         }
-        return await new Promise((resolve, reject) => {
+        return await new Promise((resolve2, reject) => {
           if (this[kContentLength] > limit) {
             this.destroy(new AbortError());
           }
@@ -4145,9 +4216,9 @@ var require_readable = __commonJS({
             if (signal?.aborted) {
               reject(signal.reason ?? new AbortError());
             } else {
-              resolve(null);
+              resolve2(null);
             }
-          }).on("error", noop).on("data", function(chunk) {
+          }).on("error", noop2).on("data", function(chunk) {
             limit -= chunk.length;
             if (limit <= 0) {
               this.destroy();
@@ -4163,8 +4234,8 @@ var require_readable = __commonJS({
       return util.isDisturbed(self2) || isLocked(self2);
     }
     async function consume(stream, type) {
-      assert3(!stream[kConsume]);
-      return new Promise((resolve, reject) => {
+      assert5(!stream[kConsume]);
+      return new Promise((resolve2, reject) => {
         if (isUnusable(stream)) {
           const rState = stream._readableState;
           if (rState.destroyed && rState.closeEmitted === false) {
@@ -4181,7 +4252,7 @@ var require_readable = __commonJS({
             stream[kConsume] = {
               type,
               stream,
-              resolve,
+              resolve: resolve2,
               reject,
               length: 0,
               body: []
@@ -4235,22 +4306,22 @@ var require_readable = __commonJS({
       return buffer.utf8Slice(start, bufferLength);
     }
     function consumeEnd(consume2) {
-      const { type, body, resolve, stream, length } = consume2;
+      const { type, body, resolve: resolve2, stream, length } = consume2;
       try {
         if (type === "text") {
-          resolve(chunksDecode(body, length));
+          resolve2(chunksDecode(body, length));
         } else if (type === "json") {
-          resolve(JSON.parse(chunksDecode(body, length)));
+          resolve2(JSON.parse(chunksDecode(body, length)));
         } else if (type === "arrayBuffer") {
           const dst = new Uint8Array(length);
-          let pos = 0;
+          let pos2 = 0;
           for (const buf of body) {
-            dst.set(buf, pos);
-            pos += buf.byteLength;
+            dst.set(buf, pos2);
+            pos2 += buf.byteLength;
           }
-          resolve(dst.buffer);
+          resolve2(dst.buffer);
         } else if (type === "blob") {
-          resolve(new Blob(body, { type: stream[kContentType] }));
+          resolve2(new Blob(body, { type: stream[kContentType] }));
         }
         consumeFinish(consume2);
       } catch (err) {
@@ -4284,14 +4355,14 @@ var require_readable = __commonJS({
 // .yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/util.js
 var require_util2 = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/util.js"(exports2, module2) {
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var {
       ResponseStatusCodeError
     } = require_errors();
     var { chunksDecode } = require_readable();
     var CHUNK_LIMIT = 128 * 1024;
     async function getResolveErrorBodyCallback({ callback, body, contentType, statusCode, statusMessage, headers }) {
-      assert3(body);
+      assert5(body);
       let chunks = [];
       let length = 0;
       try {
@@ -4346,7 +4417,7 @@ var require_util2 = __commonJS({
 var require_api_request = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-request.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { Readable: Readable2 } = require_readable();
     var { InvalidArgumentError, RequestAbortedError } = require_errors();
     var util = require_util();
@@ -4426,7 +4497,7 @@ var require_api_request = __commonJS({
           abort(this.reason);
           return;
         }
-        assert3(this.callback);
+        assert5(this.callback);
         this.abort = abort;
         this.context = context;
       }
@@ -4507,9 +4578,9 @@ var require_api_request = __commonJS({
     };
     function request(opts, callback) {
       if (callback === void 0) {
-        return new Promise((resolve, reject) => {
+        return new Promise((resolve2, reject) => {
           request.call(this, opts, (err, data) => {
-            return err ? reject(err) : resolve(data);
+            return err ? reject(err) : resolve2(data);
           });
         });
       }
@@ -4583,7 +4654,7 @@ var require_abort_signal = __commonJS({
 var require_api_stream = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-stream.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { finished, PassThrough } = require("node:stream");
     var { InvalidArgumentError, InvalidReturnValueError } = require_errors();
     var util = require_util();
@@ -4642,7 +4713,7 @@ var require_api_stream = __commonJS({
           abort(this.reason);
           return;
         }
-        assert3(this.callback);
+        assert5(this.callback);
         this.abort = abort;
         this.context = context;
       }
@@ -4732,9 +4803,9 @@ var require_api_stream = __commonJS({
     };
     function stream(opts, factory, callback) {
       if (callback === void 0) {
-        return new Promise((resolve, reject) => {
+        return new Promise((resolve2, reject) => {
           stream.call(this, opts, factory, (err, data) => {
-            return err ? reject(err) : resolve(data);
+            return err ? reject(err) : resolve2(data);
           });
         });
       }
@@ -4769,7 +4840,7 @@ var require_api_pipeline = __commonJS({
     var util = require_util();
     var { AsyncResource } = require("node:async_hooks");
     var { addSignal, removeSignal } = require_abort_signal();
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var kResume = Symbol("resume");
     var PipelineRequest = class extends Readable2 {
       constructor() {
@@ -4873,8 +4944,8 @@ var require_api_pipeline = __commonJS({
           abort(this.reason);
           return;
         }
-        assert3(!res, "pipeline cannot be retried");
-        assert3(!ret.destroyed);
+        assert5(!res, "pipeline cannot be retried");
+        assert5(!ret.destroyed);
         this.abort = abort;
         this.context = context;
       }
@@ -4960,7 +5031,7 @@ var require_api_upgrade = __commonJS({
     var { AsyncResource } = require("node:async_hooks");
     var util = require_util();
     var { addSignal, removeSignal } = require_abort_signal();
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var UpgradeHandler = class extends AsyncResource {
       constructor(opts, callback) {
         if (!opts || typeof opts !== "object") {
@@ -4986,7 +5057,7 @@ var require_api_upgrade = __commonJS({
           abort(this.reason);
           return;
         }
-        assert3(this.callback);
+        assert5(this.callback);
         this.abort = abort;
         this.context = null;
       }
@@ -4995,7 +5066,7 @@ var require_api_upgrade = __commonJS({
       }
       onUpgrade(statusCode, rawHeaders, socket) {
         const { callback, opaque, context } = this;
-        assert3.strictEqual(statusCode, 101);
+        assert5.strictEqual(statusCode, 101);
         removeSignal(this);
         this.callback = null;
         const headers = this.responseHeaders === "raw" ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders);
@@ -5019,9 +5090,9 @@ var require_api_upgrade = __commonJS({
     };
     function upgrade(opts, callback) {
       if (callback === void 0) {
-        return new Promise((resolve, reject) => {
+        return new Promise((resolve2, reject) => {
           upgrade.call(this, opts, (err, data) => {
-            return err ? reject(err) : resolve(data);
+            return err ? reject(err) : resolve2(data);
           });
         });
       }
@@ -5048,7 +5119,7 @@ var require_api_upgrade = __commonJS({
 var require_api_connect = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/api/api-connect.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { AsyncResource } = require("node:async_hooks");
     var { InvalidArgumentError, SocketError } = require_errors();
     var util = require_util();
@@ -5077,7 +5148,7 @@ var require_api_connect = __commonJS({
           abort(this.reason);
           return;
         }
-        assert3(this.callback);
+        assert5(this.callback);
         this.abort = abort;
         this.context = context;
       }
@@ -5113,9 +5184,9 @@ var require_api_connect = __commonJS({
     };
     function connect(opts, callback) {
       if (callback === void 0) {
-        return new Promise((resolve, reject) => {
+        return new Promise((resolve2, reject) => {
           connect.call(this, opts, (err, data) => {
-            return err ? reject(err) : resolve(data);
+            return err ? reject(err) : resolve2(data);
           });
         });
       }
@@ -5150,8 +5221,8 @@ var require_api = __commonJS({
 var require_dispatcher = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/dispatcher.js"(exports2, module2) {
     "use strict";
-    var EventEmitter = require("node:events");
-    var Dispatcher = class extends EventEmitter {
+    var EventEmitter2 = require("node:events");
+    var Dispatcher = class extends EventEmitter2 {
       dispatch() {
         throw new Error("not implemented");
       }
@@ -5245,9 +5316,9 @@ var require_dispatcher_base = __commonJS({
       }
       close(callback) {
         if (callback === void 0) {
-          return new Promise((resolve, reject) => {
+          return new Promise((resolve2, reject) => {
             this.close((err, data) => {
-              return err ? reject(err) : resolve(data);
+              return err ? reject(err) : resolve2(data);
             });
           });
         }
@@ -5285,12 +5356,12 @@ var require_dispatcher_base = __commonJS({
           err = null;
         }
         if (callback === void 0) {
-          return new Promise((resolve, reject) => {
+          return new Promise((resolve2, reject) => {
             this.destroy(err, (err2, data) => {
               return err2 ? (
                 /* istanbul ignore next: should never error */
                 reject(err2)
-              ) : resolve(data);
+              ) : resolve2(data);
             });
           });
         }
@@ -5546,8 +5617,8 @@ var require_pool_base = __commonJS({
         if (this[kQueue].isEmpty()) {
           return Promise.all(this[kClients].map((c) => c.close()));
         } else {
-          return new Promise((resolve) => {
-            this[kClosedResolve] = resolve;
+          return new Promise((resolve2) => {
+            this[kClosedResolve] = resolve2;
           });
         }
       }
@@ -5639,74 +5710,74 @@ var require_diagnostics = __commonJS({
       const debuglog = fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog;
       diagnosticsChannel.channel("undici:client:beforeConnect").subscribe((evt) => {
         const {
-          connectParams: { version: version2, protocol, port, host }
+          connectParams: { version: version3, protocol, port, host }
         } = evt;
         debuglog(
           "connecting to %s using %s%s",
           `${host}${port ? `:${port}` : ""}`,
           protocol,
-          version2
+          version3
         );
       });
       diagnosticsChannel.channel("undici:client:connected").subscribe((evt) => {
         const {
-          connectParams: { version: version2, protocol, port, host }
+          connectParams: { version: version3, protocol, port, host }
         } = evt;
         debuglog(
           "connected to %s using %s%s",
           `${host}${port ? `:${port}` : ""}`,
           protocol,
-          version2
+          version3
         );
       });
       diagnosticsChannel.channel("undici:client:connectError").subscribe((evt) => {
         const {
-          connectParams: { version: version2, protocol, port, host },
+          connectParams: { version: version3, protocol, port, host },
           error
         } = evt;
         debuglog(
           "connection to %s using %s%s errored - %s",
           `${host}${port ? `:${port}` : ""}`,
           protocol,
-          version2,
+          version3,
           error.message
         );
       });
       diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => {
         const {
-          request: { method, path: path10, origin }
+          request: { method, path: path16, origin }
         } = evt;
-        debuglog("sending request to %s %s/%s", method, origin, path10);
+        debuglog("sending request to %s %s/%s", method, origin, path16);
       });
       diagnosticsChannel.channel("undici:request:headers").subscribe((evt) => {
         const {
-          request: { method, path: path10, origin },
+          request: { method, path: path16, origin },
           response: { statusCode }
         } = evt;
         debuglog(
           "received response to %s %s/%s - HTTP %d",
           method,
           origin,
-          path10,
+          path16,
           statusCode
         );
       });
       diagnosticsChannel.channel("undici:request:trailers").subscribe((evt) => {
         const {
-          request: { method, path: path10, origin }
+          request: { method, path: path16, origin }
         } = evt;
-        debuglog("trailers received from %s %s/%s", method, origin, path10);
+        debuglog("trailers received from %s %s/%s", method, origin, path16);
       });
       diagnosticsChannel.channel("undici:request:error").subscribe((evt) => {
         const {
-          request: { method, path: path10, origin },
+          request: { method, path: path16, origin },
           error
         } = evt;
         debuglog(
           "request to %s %s/%s errored - %s",
           method,
           origin,
-          path10,
+          path16,
           error.message
         );
       });
@@ -5717,31 +5788,31 @@ var require_diagnostics = __commonJS({
         const debuglog = undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog;
         diagnosticsChannel.channel("undici:client:beforeConnect").subscribe((evt) => {
           const {
-            connectParams: { version: version2, protocol, port, host }
+            connectParams: { version: version3, protocol, port, host }
           } = evt;
           debuglog(
             "connecting to %s%s using %s%s",
             host,
             port ? `:${port}` : "",
             protocol,
-            version2
+            version3
           );
         });
         diagnosticsChannel.channel("undici:client:connected").subscribe((evt) => {
           const {
-            connectParams: { version: version2, protocol, port, host }
+            connectParams: { version: version3, protocol, port, host }
           } = evt;
           debuglog(
             "connected to %s%s using %s%s",
             host,
             port ? `:${port}` : "",
             protocol,
-            version2
+            version3
           );
         });
         diagnosticsChannel.channel("undici:client:connectError").subscribe((evt) => {
           const {
-            connectParams: { version: version2, protocol, port, host },
+            connectParams: { version: version3, protocol, port, host },
             error
           } = evt;
           debuglog(
@@ -5749,15 +5820,15 @@ var require_diagnostics = __commonJS({
             host,
             port ? `:${port}` : "",
             protocol,
-            version2,
+            version3,
             error.message
           );
         });
         diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => {
           const {
-            request: { method, path: path10, origin }
+            request: { method, path: path16, origin }
           } = evt;
-          debuglog("sending request to %s %s/%s", method, origin, path10);
+          debuglog("sending request to %s %s/%s", method, origin, path16);
         });
       }
       diagnosticsChannel.channel("undici:websocket:open").subscribe((evt) => {
@@ -5767,11 +5838,11 @@ var require_diagnostics = __commonJS({
         websocketDebuglog("connection opened %s%s", address, port ? `:${port}` : "");
       });
       diagnosticsChannel.channel("undici:websocket:close").subscribe((evt) => {
-        const { websocket, code, reason } = evt;
+        const { websocket, code: code2, reason } = evt;
         websocketDebuglog(
           "closed connection to %s - %s %s",
           websocket.url,
-          code,
+          code2,
           reason
         );
       });
@@ -5799,11 +5870,11 @@ var require_request = __commonJS({
       InvalidArgumentError,
       NotSupportedError
     } = require_errors();
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var {
       isValidHTTPToken,
       isValidHeaderValue,
-      isStream,
+      isStream: isStream2,
       destroy,
       isBuffer,
       isFormDataLike,
@@ -5820,7 +5891,7 @@ var require_request = __commonJS({
     var kHandler = Symbol("handler");
     var Request = class {
       constructor(origin, {
-        path: path10,
+        path: path16,
         method,
         body,
         headers,
@@ -5835,11 +5906,11 @@ var require_request = __commonJS({
         expectContinue,
         servername
       }, handler) {
-        if (typeof path10 !== "string") {
+        if (typeof path16 !== "string") {
           throw new InvalidArgumentError("path must be a string");
-        } else if (path10[0] !== "/" && !(path10.startsWith("http://") || path10.startsWith("https://")) && method !== "CONNECT") {
+        } else if (path16[0] !== "/" && !(path16.startsWith("http://") || path16.startsWith("https://")) && method !== "CONNECT") {
           throw new InvalidArgumentError("path must be an absolute URL or start with a slash");
-        } else if (invalidPathRegex.test(path10)) {
+        } else if (invalidPathRegex.test(path16)) {
           throw new InvalidArgumentError("invalid request path");
         }
         if (typeof method !== "string") {
@@ -5869,7 +5940,7 @@ var require_request = __commonJS({
         this.abort = null;
         if (body == null) {
           this.body = null;
-        } else if (isStream(body)) {
+        } else if (isStream2(body)) {
           this.body = body;
           const rState = this.body._readableState;
           if (!rState || !rState.autoDestroy) {
@@ -5902,7 +5973,7 @@ var require_request = __commonJS({
         this.completed = false;
         this.aborted = false;
         this.upgrade = upgrade || null;
-        this.path = query ? buildURL(path10, query) : path10;
+        this.path = query ? buildURL(path16, query) : path16;
         this.origin = origin;
         this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;
         this.blocking = blocking == null ? false : blocking;
@@ -5965,8 +6036,8 @@ var require_request = __commonJS({
         }
       }
       onConnect(abort) {
-        assert3(!this.aborted);
-        assert3(!this.completed);
+        assert5(!this.aborted);
+        assert5(!this.completed);
         if (this.error) {
           abort(this.error);
         } else {
@@ -5978,8 +6049,8 @@ var require_request = __commonJS({
         return this[kHandler].onResponseStarted?.();
       }
       onHeaders(statusCode, headers, resume, statusText) {
-        assert3(!this.aborted);
-        assert3(!this.completed);
+        assert5(!this.aborted);
+        assert5(!this.completed);
         if (channels.headers.hasSubscribers) {
           channels.headers.publish({ request: this, response: { statusCode, headers, statusText } });
         }
@@ -5990,8 +6061,8 @@ var require_request = __commonJS({
         }
       }
       onData(chunk) {
-        assert3(!this.aborted);
-        assert3(!this.completed);
+        assert5(!this.aborted);
+        assert5(!this.completed);
         try {
           return this[kHandler].onData(chunk);
         } catch (err) {
@@ -6000,13 +6071,13 @@ var require_request = __commonJS({
         }
       }
       onUpgrade(statusCode, headers, socket) {
-        assert3(!this.aborted);
-        assert3(!this.completed);
+        assert5(!this.aborted);
+        assert5(!this.completed);
         return this[kHandler].onUpgrade(statusCode, headers, socket);
       }
       onComplete(trailers) {
         this.onFinally();
-        assert3(!this.aborted);
+        assert5(!this.aborted);
         this.completed = true;
         if (channels.trailers.hasSubscribers) {
           channels.trailers.publish({ request: this, trailers });
@@ -6120,7 +6191,7 @@ var require_connect = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/core/connect.js"(exports2, module2) {
     "use strict";
     var net = require("node:net");
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var util = require_util();
     var { InvalidArgumentError, ConnectTimeoutError } = require_errors();
     var tls;
@@ -6190,7 +6261,7 @@ var require_connect = __commonJS({
           servername = servername || options.servername || util.getServerName(host) || null;
           const sessionKey = servername || hostname;
           const session = customSession || sessionCache.get(sessionKey) || null;
-          assert3(sessionKey);
+          assert5(sessionKey);
           socket = tls.connect({
             highWaterMark: 16384,
             // TLS in node can't have bigger HWM anyway...
@@ -6209,7 +6280,7 @@ var require_connect = __commonJS({
             sessionCache.set(sessionKey, session2);
           });
         } else {
-          assert3(!httpSocket, "httpSocket can only be sent on TLS update");
+          assert5(!httpSocket, "httpSocket can only be sent on TLS update");
           socket = net.connect({
             highWaterMark: 64 * 1024,
             // Same as nodejs fs streams.
@@ -6385,34 +6456,34 @@ var require_constants3 = __commonJS({
     Object.defineProperty(exports2, "__esModule", { value: true });
     exports2.SPECIAL_HEADERS = exports2.HEADER_STATE = exports2.MINOR = exports2.MAJOR = exports2.CONNECTION_TOKEN_CHARS = exports2.HEADER_CHARS = exports2.TOKEN = exports2.STRICT_TOKEN = exports2.HEX = exports2.URL_CHAR = exports2.STRICT_URL_CHAR = exports2.USERINFO_CHARS = exports2.MARK = exports2.ALPHANUM = exports2.NUM = exports2.HEX_MAP = exports2.NUM_MAP = exports2.ALPHA = exports2.FINISH = exports2.H_METHOD_MAP = exports2.METHOD_MAP = exports2.METHODS_RTSP = exports2.METHODS_ICE = exports2.METHODS_HTTP = exports2.METHODS = exports2.LENIENT_FLAGS = exports2.FLAGS = exports2.TYPE = exports2.ERROR = void 0;
     var utils_1 = require_utils();
-    var ERROR;
-    (function(ERROR2) {
-      ERROR2[ERROR2["OK"] = 0] = "OK";
-      ERROR2[ERROR2["INTERNAL"] = 1] = "INTERNAL";
-      ERROR2[ERROR2["STRICT"] = 2] = "STRICT";
-      ERROR2[ERROR2["LF_EXPECTED"] = 3] = "LF_EXPECTED";
-      ERROR2[ERROR2["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH";
-      ERROR2[ERROR2["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION";
-      ERROR2[ERROR2["INVALID_METHOD"] = 6] = "INVALID_METHOD";
-      ERROR2[ERROR2["INVALID_URL"] = 7] = "INVALID_URL";
-      ERROR2[ERROR2["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT";
-      ERROR2[ERROR2["INVALID_VERSION"] = 9] = "INVALID_VERSION";
-      ERROR2[ERROR2["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN";
-      ERROR2[ERROR2["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH";
-      ERROR2[ERROR2["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE";
-      ERROR2[ERROR2["INVALID_STATUS"] = 13] = "INVALID_STATUS";
-      ERROR2[ERROR2["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE";
-      ERROR2[ERROR2["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING";
-      ERROR2[ERROR2["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN";
-      ERROR2[ERROR2["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE";
-      ERROR2[ERROR2["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE";
-      ERROR2[ERROR2["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER";
-      ERROR2[ERROR2["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE";
-      ERROR2[ERROR2["PAUSED"] = 21] = "PAUSED";
-      ERROR2[ERROR2["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE";
-      ERROR2[ERROR2["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE";
-      ERROR2[ERROR2["USER"] = 24] = "USER";
-    })(ERROR = exports2.ERROR || (exports2.ERROR = {}));
+    var ERROR2;
+    (function(ERROR3) {
+      ERROR3[ERROR3["OK"] = 0] = "OK";
+      ERROR3[ERROR3["INTERNAL"] = 1] = "INTERNAL";
+      ERROR3[ERROR3["STRICT"] = 2] = "STRICT";
+      ERROR3[ERROR3["LF_EXPECTED"] = 3] = "LF_EXPECTED";
+      ERROR3[ERROR3["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH";
+      ERROR3[ERROR3["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION";
+      ERROR3[ERROR3["INVALID_METHOD"] = 6] = "INVALID_METHOD";
+      ERROR3[ERROR3["INVALID_URL"] = 7] = "INVALID_URL";
+      ERROR3[ERROR3["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT";
+      ERROR3[ERROR3["INVALID_VERSION"] = 9] = "INVALID_VERSION";
+      ERROR3[ERROR3["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN";
+      ERROR3[ERROR3["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH";
+      ERROR3[ERROR3["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE";
+      ERROR3[ERROR3["INVALID_STATUS"] = 13] = "INVALID_STATUS";
+      ERROR3[ERROR3["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE";
+      ERROR3[ERROR3["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING";
+      ERROR3[ERROR3["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN";
+      ERROR3[ERROR3["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE";
+      ERROR3[ERROR3["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE";
+      ERROR3[ERROR3["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER";
+      ERROR3[ERROR3["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE";
+      ERROR3[ERROR3["PAUSED"] = 21] = "PAUSED";
+      ERROR3[ERROR3["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE";
+      ERROR3[ERROR3["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE";
+      ERROR3[ERROR3["USER"] = 24] = "USER";
+    })(ERROR2 = exports2.ERROR || (exports2.ERROR = {}));
     var TYPE;
     (function(TYPE2) {
       TYPE2[TYPE2["BOTH"] = 0] = "BOTH";
@@ -6703,8 +6774,8 @@ var require_constants3 = __commonJS({
 var require_llhttp_wasm = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/llhttp-wasm.js"(exports2, module2) {
     "use strict";
-    var { Buffer: Buffer2 } = require("node:buffer");
-    module2.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
+    var { Buffer: Buffer3 } = require("node:buffer");
+    module2.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
   }
 });
 
@@ -6712,8 +6783,8 @@ var require_llhttp_wasm = __commonJS({
 var require_llhttp_simd_wasm = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js"(exports2, module2) {
     "use strict";
-    var { Buffer: Buffer2 } = require("node:buffer");
-    module2.exports = Buffer2.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
+    var { Buffer: Buffer3 } = require("node:buffer");
+    module2.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
   }
 });
 
@@ -6933,14 +7004,14 @@ var require_global = __commonJS({
 var require_data_url = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/web/fetch/data-url.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var encoder = new TextEncoder();
     var HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/;
     var HTTP_WHITESPACE_REGEX = /[\u000A\u000D\u0009\u0020]/;
     var ASCII_WHITESPACE_REPLACE_REGEX = /[\u0009\u000A\u000C\u000D\u0020]/g;
     var HTTP_QUOTED_STRING_TOKENS = /^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;
     function dataURLProcessor(dataURL) {
-      assert3(dataURL.protocol === "data:");
+      assert5(dataURL.protocol === "data:");
       let input = URLSerializer(dataURL, true);
       input = input.slice(5);
       const position = { position: 0 };
@@ -7141,7 +7212,7 @@ var require_data_url = __commonJS({
     function collectAnHTTPQuotedString(input, position, extractValue) {
       const positionStart = position.position;
       let value = "";
-      assert3(input[position.position] === '"');
+      assert5(input[position.position] === '"');
       position.position++;
       while (true) {
         value += collectASequenceOfCodePoints(
@@ -7162,7 +7233,7 @@ var require_data_url = __commonJS({
           value += input[position.position];
           position.position++;
         } else {
-          assert3(quoteOrBackslash === '"');
+          assert5(quoteOrBackslash === '"');
           break;
         }
       }
@@ -7172,12 +7243,12 @@ var require_data_url = __commonJS({
       return input.slice(positionStart, position.position);
     }
     function serializeAMimeType(mimeType) {
-      assert3(mimeType !== "failure");
+      assert5(mimeType !== "failure");
       const { parameters, essence } = mimeType;
       let serialization = essence;
-      for (let [name, value] of parameters.entries()) {
+      for (let [name2, value] of parameters.entries()) {
         serialization += ";";
-        serialization += name;
+        serialization += name2;
         serialization += "=";
         if (!HTTP_TOKEN_CODEPOINTS.test(value)) {
           value = value.replace(/(\\|")/g, "\\$1");
@@ -7622,11 +7693,11 @@ var require_webidl = __commonJS({
       }
       return V;
     };
-    webidl.converters.TypedArray = function(V, T, prefix, name, opts) {
+    webidl.converters.TypedArray = function(V, T, prefix, name2, opts) {
       if (webidl.util.Type(V) !== "Object" || !types.isTypedArray(V) || V.constructor.name !== T.name) {
         throw webidl.errors.conversionFailed({
           prefix,
-          argument: `${name} ("${webidl.util.Stringify(V)}")`,
+          argument: `${name2} ("${webidl.util.Stringify(V)}")`,
           types: [T.name]
         });
       }
@@ -7644,11 +7715,11 @@ var require_webidl = __commonJS({
       }
       return V;
     };
-    webidl.converters.DataView = function(V, prefix, name, opts) {
+    webidl.converters.DataView = function(V, prefix, name2, opts) {
       if (webidl.util.Type(V) !== "Object" || !types.isDataView(V)) {
         throw webidl.errors.exception({
           header: prefix,
-          message: `${name} is not a DataView.`
+          message: `${name2} is not a DataView.`
         });
       }
       if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
@@ -7665,19 +7736,19 @@ var require_webidl = __commonJS({
       }
       return V;
     };
-    webidl.converters.BufferSource = function(V, prefix, name, opts) {
+    webidl.converters.BufferSource = function(V, prefix, name2, opts) {
       if (types.isAnyArrayBuffer(V)) {
-        return webidl.converters.ArrayBuffer(V, prefix, name, { ...opts, allowShared: false });
+        return webidl.converters.ArrayBuffer(V, prefix, name2, { ...opts, allowShared: false });
       }
       if (types.isTypedArray(V)) {
-        return webidl.converters.TypedArray(V, V.constructor, prefix, name, { ...opts, allowShared: false });
+        return webidl.converters.TypedArray(V, V.constructor, prefix, name2, { ...opts, allowShared: false });
       }
       if (types.isDataView(V)) {
-        return webidl.converters.DataView(V, prefix, name, { ...opts, allowShared: false });
+        return webidl.converters.DataView(V, prefix, name2, { ...opts, allowShared: false });
       }
       throw webidl.errors.conversionFailed({
         prefix,
-        argument: `${name} ("${webidl.util.Stringify(V)}")`,
+        argument: `${name2} ("${webidl.util.Stringify(V)}")`,
         types: ["BufferSource"]
       });
     };
@@ -7708,7 +7779,7 @@ var require_util3 = __commonJS({
     var { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require_data_url();
     var { performance } = require("node:perf_hooks");
     var { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require_util();
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { isUint8Array } = require("node:util/types");
     var { webidl } = require_webidl();
     var supportedHashes = [];
@@ -7742,9 +7813,9 @@ var require_util3 = __commonJS({
     }
     function isValidEncodedURL(url) {
       for (let i = 0; i < url.length; ++i) {
-        const code = url.charCodeAt(i);
-        if (code > 126 || // Non-US-ASCII + DEL
-        code < 32) {
+        const code2 = url.charCodeAt(i);
+        if (code2 > 126 || // Non-US-ASCII + DEL
+        code2 < 32) {
           return false;
         }
       }
@@ -7894,7 +7965,7 @@ var require_util3 = __commonJS({
     }
     function determineRequestsReferrer(request) {
       const policy = request.referrerPolicy;
-      assert3(policy);
+      assert5(policy);
       let referrerSource = null;
       if (request.referrer === "client") {
         const globalOrigin = getGlobalOrigin();
@@ -7938,7 +8009,7 @@ var require_util3 = __commonJS({
       }
     }
     function stripURLForReferrer(url, originOnly) {
-      assert3(url instanceof URL);
+      assert5(url instanceof URL);
       url = new URL(url);
       if (url.protocol === "file:" || url.protocol === "about:" || url.protocol === "blank:") {
         return "no-referrer";
@@ -8046,13 +8117,13 @@ var require_util3 = __commonJS({
       if (metadataList.length === 1) {
         return metadataList;
       }
-      let pos = 0;
+      let pos2 = 0;
       for (let i = 0; i < metadataList.length; ++i) {
         if (metadataList[i].algo === algorithm) {
-          metadataList[pos++] = metadataList[i];
+          metadataList[pos2++] = metadataList[i];
         }
       }
-      metadataList.length = pos;
+      metadataList.length = pos2;
       return metadataList;
     }
     function compareBase64Mixed(actualValue, expectedValue) {
@@ -8083,8 +8154,8 @@ var require_util3 = __commonJS({
     function createDeferredPromise() {
       let res;
       let rej;
-      const promise = new Promise((resolve, reject) => {
-        res = resolve;
+      const promise = new Promise((resolve2, reject) => {
+        res = resolve2;
         rej = reject;
       });
       return { promise, resolve: res, reject: rej };
@@ -8103,11 +8174,11 @@ var require_util3 = __commonJS({
       if (result === void 0) {
         throw new TypeError("Value is not JSON serializable");
       }
-      assert3(typeof result === "string");
+      assert5(typeof result === "string");
       return result;
     }
     var esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));
-    function createIterator(name, kInternalIterator, keyIndex = 0, valueIndex = 1) {
+    function createIterator(name2, kInternalIterator, keyIndex = 0, valueIndex = 1) {
       class FastIterableIterator {
         /** @type {any} */
         #target;
@@ -8128,7 +8199,7 @@ var require_util3 = __commonJS({
         next() {
           if (typeof this !== "object" || this === null || !(#target in this)) {
             throw new TypeError(
-              `'next' called on an object that does not implement interface ${name} Iterator.`
+              `'next' called on an object that does not implement interface ${name2} Iterator.`
             );
           }
           const index = this.#index;
@@ -8167,7 +8238,7 @@ var require_util3 = __commonJS({
           writable: false,
           enumerable: false,
           configurable: true,
-          value: `${name} Iterator`
+          value: `${name2} Iterator`
         },
         next: { writable: true, enumerable: true, configurable: true }
       });
@@ -8175,8 +8246,8 @@ var require_util3 = __commonJS({
         return new FastIterableIterator(target, kind);
       };
     }
-    function iteratorMixin(name, object, kInternalIterator, keyIndex = 0, valueIndex = 1) {
-      const makeIterator = createIterator(name, kInternalIterator, keyIndex, valueIndex);
+    function iteratorMixin(name2, object, kInternalIterator, keyIndex = 0, valueIndex = 1) {
+      const makeIterator = createIterator(name2, kInternalIterator, keyIndex, valueIndex);
       const properties = {
         keys: {
           writable: true,
@@ -8211,10 +8282,10 @@ var require_util3 = __commonJS({
           configurable: true,
           value: function forEach(callbackfn, thisArg = globalThis) {
             webidl.brandCheck(this, object);
-            webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`);
+            webidl.argumentLengthCheck(arguments, 1, `${name2}.forEach`);
             if (typeof callbackfn !== "function") {
               throw new TypeError(
-                `Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.`
+                `Failed to execute 'forEach' on '${name2}': parameter 1 is not of type 'Function'.`
               );
             }
             for (const { 0: key, 1: value } of makeIterator(this, "key+value")) {
@@ -8264,7 +8335,7 @@ var require_util3 = __commonJS({
     }
     var invalidIsomorphicEncodeValueRegex = /[^\x00-\xFF]/;
     function isomorphicEncode(input) {
-      assert3(!invalidIsomorphicEncodeValueRegex.test(input));
+      assert5(!invalidIsomorphicEncodeValueRegex.test(input));
       return input;
     }
     async function readAllBytes(reader) {
@@ -8283,7 +8354,7 @@ var require_util3 = __commonJS({
       }
     }
     function urlIsLocal(url) {
-      assert3("protocol" in url);
+      assert5("protocol" in url);
       const protocol = url.protocol;
       return protocol === "about:" || protocol === "blob:" || protocol === "data:";
     }
@@ -8291,7 +8362,7 @@ var require_util3 = __commonJS({
       return typeof url === "string" && url[5] === ":" && url[0] === "h" && url[1] === "t" && url[2] === "t" && url[3] === "p" && url[4] === "s" || url.protocol === "https:";
     }
     function urlIsHttpHttpsScheme(url) {
-      assert3("protocol" in url);
+      assert5("protocol" in url);
       const protocol = url.protocol;
       return protocol === "http:" || protocol === "https:";
     }
@@ -8321,8 +8392,8 @@ var require_util3 = __commonJS({
       }
       const rangeStart = collectASequenceOfCodePoints(
         (char) => {
-          const code = char.charCodeAt(0);
-          return code >= 48 && code <= 57;
+          const code2 = char.charCodeAt(0);
+          return code2 >= 48 && code2 <= 57;
         },
         data,
         position
@@ -8348,8 +8419,8 @@ var require_util3 = __commonJS({
       }
       const rangeEnd = collectASequenceOfCodePoints(
         (char) => {
-          const code = char.charCodeAt(0);
-          return code >= 48 && code <= 57;
+          const code2 = char.charCodeAt(0);
+          return code2 >= 48 && code2 <= 57;
         },
         data,
         position
@@ -8450,7 +8521,7 @@ var require_util3 = __commonJS({
               continue;
             }
           } else {
-            assert3(input.charCodeAt(position.position) === 44);
+            assert5(input.charCodeAt(position.position) === 44);
             position.position++;
           }
         }
@@ -8460,8 +8531,8 @@ var require_util3 = __commonJS({
       }
       return values;
     }
-    function getDecodeSplit(name, list) {
-      const value = list.get(name, true);
+    function getDecodeSplit(name2, list2) {
+      const value = list2.get(name2, true);
       if (value === null) {
         return null;
       }
@@ -8647,7 +8718,7 @@ var require_formdata = __commonJS({
         }
         this[kState] = [];
       }
-      append(name, value, filename = void 0) {
+      append(name2, value, filename = void 0) {
         webidl.brandCheck(this, _FormData);
         const prefix = "FormData.append";
         webidl.argumentLengthCheck(arguments, 2, prefix);
@@ -8656,45 +8727,45 @@ var require_formdata = __commonJS({
             "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"
           );
         }
-        name = webidl.converters.USVString(name, prefix, "name");
+        name2 = webidl.converters.USVString(name2, prefix, "name");
         value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "value", { strict: false }) : webidl.converters.USVString(value, prefix, "value");
         filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "filename") : void 0;
-        const entry = makeEntry(name, value, filename);
+        const entry = makeEntry(name2, value, filename);
         this[kState].push(entry);
       }
-      delete(name) {
+      delete(name2) {
         webidl.brandCheck(this, _FormData);
         const prefix = "FormData.delete";
         webidl.argumentLengthCheck(arguments, 1, prefix);
-        name = webidl.converters.USVString(name, prefix, "name");
-        this[kState] = this[kState].filter((entry) => entry.name !== name);
+        name2 = webidl.converters.USVString(name2, prefix, "name");
+        this[kState] = this[kState].filter((entry) => entry.name !== name2);
       }
-      get(name) {
+      get(name2) {
         webidl.brandCheck(this, _FormData);
         const prefix = "FormData.get";
         webidl.argumentLengthCheck(arguments, 1, prefix);
-        name = webidl.converters.USVString(name, prefix, "name");
-        const idx = this[kState].findIndex((entry) => entry.name === name);
+        name2 = webidl.converters.USVString(name2, prefix, "name");
+        const idx = this[kState].findIndex((entry) => entry.name === name2);
         if (idx === -1) {
           return null;
         }
         return this[kState][idx].value;
       }
-      getAll(name) {
+      getAll(name2) {
         webidl.brandCheck(this, _FormData);
         const prefix = "FormData.getAll";
         webidl.argumentLengthCheck(arguments, 1, prefix);
-        name = webidl.converters.USVString(name, prefix, "name");
-        return this[kState].filter((entry) => entry.name === name).map((entry) => entry.value);
+        name2 = webidl.converters.USVString(name2, prefix, "name");
+        return this[kState].filter((entry) => entry.name === name2).map((entry) => entry.value);
       }
-      has(name) {
+      has(name2) {
         webidl.brandCheck(this, _FormData);
         const prefix = "FormData.has";
         webidl.argumentLengthCheck(arguments, 1, prefix);
-        name = webidl.converters.USVString(name, prefix, "name");
-        return this[kState].findIndex((entry) => entry.name === name) !== -1;
+        name2 = webidl.converters.USVString(name2, prefix, "name");
+        return this[kState].findIndex((entry) => entry.name === name2) !== -1;
       }
-      set(name, value, filename = void 0) {
+      set(name2, value, filename = void 0) {
         webidl.brandCheck(this, _FormData);
         const prefix = "FormData.set";
         webidl.argumentLengthCheck(arguments, 2, prefix);
@@ -8703,16 +8774,16 @@ var require_formdata = __commonJS({
             "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"
           );
         }
-        name = webidl.converters.USVString(name, prefix, "name");
+        name2 = webidl.converters.USVString(name2, prefix, "name");
         value = isBlobLike(value) ? webidl.converters.Blob(value, prefix, "name", { strict: false }) : webidl.converters.USVString(value, prefix, "name");
         filename = arguments.length === 3 ? webidl.converters.USVString(filename, prefix, "name") : void 0;
-        const entry = makeEntry(name, value, filename);
-        const idx = this[kState].findIndex((entry2) => entry2.name === name);
+        const entry = makeEntry(name2, value, filename);
+        const idx = this[kState].findIndex((entry2) => entry2.name === name2);
         if (idx !== -1) {
           this[kState] = [
             ...this[kState].slice(0, idx),
             entry,
-            ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name)
+            ...this[kState].slice(idx + 1).filter((entry2) => entry2.name !== name2)
           ];
         } else {
           this[kState].push(entry);
@@ -8750,7 +8821,7 @@ var require_formdata = __commonJS({
         configurable: true
       }
     });
-    function makeEntry(name, value, filename) {
+    function makeEntry(name2, value, filename) {
       if (typeof value === "string") {
       } else {
         if (!isFileLike(value)) {
@@ -8764,7 +8835,7 @@ var require_formdata = __commonJS({
           value = value instanceof NativeFile ? new File([value], filename, options) : new FileLike(value, filename, options);
         }
       }
-      return { name, value };
+      return { name: name2, value };
     }
     module2.exports = { FormData, makeEntry };
   }
@@ -8779,7 +8850,7 @@ var require_formdata_parser = __commonJS({
     var { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require_data_url();
     var { isFileLike } = require_file();
     var { makeEntry } = require_formdata();
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { File: NodeFile } = require("node:buffer");
     var File = globalThis.File ?? NodeFile;
     var formDataNameBuffer = Buffer.from('form-data; name="');
@@ -8808,7 +8879,7 @@ var require_formdata_parser = __commonJS({
       return true;
     }
     function multipartFormDataParser(input, mimeType) {
-      assert3(mimeType !== "failure" && mimeType.essence === "multipart/form-data");
+      assert5(mimeType !== "failure" && mimeType.essence === "multipart/form-data");
       const boundaryString = mimeType.parameters.get("boundary");
       if (boundaryString === void 0) {
         return "failure";
@@ -8836,7 +8907,7 @@ var require_formdata_parser = __commonJS({
         if (result === "failure") {
           return "failure";
         }
-        let { name, filename, contentType, encoding } = result;
+        let { name: name2, filename, contentType, encoding } = result;
         position.position += 2;
         let body;
         {
@@ -8865,22 +8936,22 @@ var require_formdata_parser = __commonJS({
         } else {
           value = utf8DecodeBytes(Buffer.from(body));
         }
-        assert3(isUSVString(name));
-        assert3(typeof value === "string" && isUSVString(value) || isFileLike(value));
-        entryList.push(makeEntry(name, value, filename));
+        assert5(isUSVString(name2));
+        assert5(typeof value === "string" && isUSVString(value) || isFileLike(value));
+        entryList.push(makeEntry(name2, value, filename));
       }
     }
     function parseMultipartFormDataHeaders(input, position) {
-      let name = null;
+      let name2 = null;
       let filename = null;
       let contentType = null;
       let encoding = null;
       while (true) {
         if (input[position.position] === 13 && input[position.position + 1] === 10) {
-          if (name === null) {
+          if (name2 === null) {
             return "failure";
           }
-          return { name, filename, contentType, encoding };
+          return { name: name2, filename, contentType, encoding };
         }
         let headerName = collectASequenceOfBytes(
           (char) => char !== 10 && char !== 13 && char !== 58,
@@ -8902,13 +8973,13 @@ var require_formdata_parser = __commonJS({
         );
         switch (bufferToLowerCasedHeaderName(headerName)) {
           case "content-disposition": {
-            name = filename = null;
+            name2 = filename = null;
             if (!bufferStartsWith(input, formDataNameBuffer, position)) {
               return "failure";
             }
             position.position += 17;
-            name = parseMultipartFormDataName(input, position);
-            if (name === null) {
+            name2 = parseMultipartFormDataName(input, position);
+            if (name2 === null) {
               return "failure";
             }
             if (bufferStartsWith(input, filenameBuffer, position)) {
@@ -8964,8 +9035,8 @@ var require_formdata_parser = __commonJS({
       }
     }
     function parseMultipartFormDataName(input, position) {
-      assert3(input[position.position - 1] === 34);
-      let name = collectASequenceOfBytes(
+      assert5(input[position.position - 1] === 34);
+      let name2 = collectASequenceOfBytes(
         (char) => char !== 10 && char !== 13 && char !== 34,
         input,
         position
@@ -8975,8 +9046,8 @@ var require_formdata_parser = __commonJS({
       } else {
         position.position++;
       }
-      name = new TextDecoder().decode(name).replace(/%0A/ig, "\n").replace(/%0D/ig, "\r").replace(/%22/g, '"');
-      return name;
+      name2 = new TextDecoder().decode(name2).replace(/%0A/ig, "\n").replace(/%0D/ig, "\r").replace(/%22/g, '"');
+      return name2;
     }
     function collectASequenceOfBytes(condition, input, position) {
       let start = position.position;
@@ -9033,7 +9104,7 @@ var require_body = __commonJS({
     var { kState } = require_symbols2();
     var { webidl } = require_webidl();
     var { Blob: Blob2 } = require("node:buffer");
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { isErrored } = require_util();
     var { isArrayBuffer } = require("node:util/types");
     var { serializeAMimeType } = require_data_url();
@@ -9059,7 +9130,7 @@ var require_body = __commonJS({
           type: "bytes"
         });
       }
-      assert3(isReadableStreamLike(stream));
+      assert5(isReadableStreamLike(stream));
       let action = null;
       let source = null;
       let length = null;
@@ -9084,16 +9155,16 @@ Content-Disposition: form-data`;
         const rn = new Uint8Array([13, 10]);
         length = 0;
         let hasUnknownSizeValue = false;
-        for (const [name, value] of object) {
+        for (const [name2, value] of object) {
           if (typeof value === "string") {
-            const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name))}"\r
+            const chunk2 = textEncoder.encode(prefix + `; name="${escape(normalizeLinefeeds(name2))}"\r
 \r
 ${normalizeLinefeeds(value)}\r
 `);
             blobParts.push(chunk2);
             length += chunk2.byteLength;
           } else {
-            const chunk2 = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r
+            const chunk2 = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name2))}"` + (value.name ? `; filename="${escape(value.name)}"` : "") + `\r
 Content-Type: ${value.type || "application/octet-stream"}\r
 \r
 `);
@@ -9176,8 +9247,8 @@ Content-Type: ${value.type || "application/octet-stream"}\r
     }
     function safelyExtractBody(object, keepalive = false) {
       if (object instanceof ReadableStream) {
-        assert3(!util.isDisturbed(object), "The body has already been consumed.");
-        assert3(!object.locked, "The stream is locked.");
+        assert5(!util.isDisturbed(object), "The body has already been consumed.");
+        assert5(!object.locked, "The stream is locked.");
       }
       return extractBody(object, keepalive);
     }
@@ -9236,8 +9307,8 @@ Content-Type: ${value.type || "application/octet-stream"}\r
                 case "application/x-www-form-urlencoded": {
                   const entries = new URLSearchParams(value.toString());
                   const fd = new FormData();
-                  for (const [name, value2] of entries) {
-                    fd.append(name, value2);
+                  for (const [name2, value2] of entries) {
+                    fd.append(name2, value2);
                   }
                   return fd;
                 }
@@ -9308,7 +9379,7 @@ Content-Type: ${value.type || "application/octet-stream"}\r
 var require_client_h1 = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client-h1.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var util = require_util();
     var { channels } = require_diagnostics();
     var timers = require_timers();
@@ -9357,7 +9428,7 @@ var require_client_h1 = __commonJS({
       kResume,
       kHTTPContext
     } = require_symbols();
-    var constants = require_constants3();
+    var constants2 = require_constants3();
     var EMPTY_BUF = Buffer.alloc(0);
     var FastBuffer = Buffer[Symbol.species];
     var addListener = util.addListener;
@@ -9378,35 +9449,35 @@ var require_client_h1 = __commonJS({
             return 0;
           },
           wasm_on_status: (p, at, len) => {
-            assert3.strictEqual(currentParser.ptr, p);
+            assert5.strictEqual(currentParser.ptr, p);
             const start = at - currentBufferPtr + currentBufferRef.byteOffset;
             return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
           },
           wasm_on_message_begin: (p) => {
-            assert3.strictEqual(currentParser.ptr, p);
+            assert5.strictEqual(currentParser.ptr, p);
             return currentParser.onMessageBegin() || 0;
           },
           wasm_on_header_field: (p, at, len) => {
-            assert3.strictEqual(currentParser.ptr, p);
+            assert5.strictEqual(currentParser.ptr, p);
             const start = at - currentBufferPtr + currentBufferRef.byteOffset;
             return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
           },
           wasm_on_header_value: (p, at, len) => {
-            assert3.strictEqual(currentParser.ptr, p);
+            assert5.strictEqual(currentParser.ptr, p);
             const start = at - currentBufferPtr + currentBufferRef.byteOffset;
             return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
           },
           wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {
-            assert3.strictEqual(currentParser.ptr, p);
+            assert5.strictEqual(currentParser.ptr, p);
             return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0;
           },
           wasm_on_body: (p, at, len) => {
-            assert3.strictEqual(currentParser.ptr, p);
+            assert5.strictEqual(currentParser.ptr, p);
             const start = at - currentBufferPtr + currentBufferRef.byteOffset;
             return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0;
           },
           wasm_on_message_complete: (p) => {
-            assert3.strictEqual(currentParser.ptr, p);
+            assert5.strictEqual(currentParser.ptr, p);
             return currentParser.onMessageComplete() || 0;
           }
           /* eslint-enable camelcase */
@@ -9423,11 +9494,11 @@ var require_client_h1 = __commonJS({
     var TIMEOUT_HEADERS = 1;
     var TIMEOUT_BODY = 2;
     var TIMEOUT_IDLE = 3;
-    var Parser = class {
+    var Parser2 = class {
       constructor(client, socket, { exports: exports3 }) {
-        assert3(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);
+        assert5(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0);
         this.llhttp = exports3;
-        this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE);
+        this.ptr = this.llhttp.llhttp_alloc(constants2.TYPE.RESPONSE);
         this.client = client;
         this.socket = socket;
         this.timeout = null;
@@ -9471,10 +9542,10 @@ var require_client_h1 = __commonJS({
         if (this.socket.destroyed || !this.paused) {
           return;
         }
-        assert3(this.ptr != null);
-        assert3(currentParser == null);
+        assert5(this.ptr != null);
+        assert5(currentParser == null);
         this.llhttp.llhttp_resume(this.ptr);
-        assert3(this.timeoutType === TIMEOUT_BODY);
+        assert5(this.timeoutType === TIMEOUT_BODY);
         if (this.timeout) {
           if (this.timeout.refresh) {
             this.timeout.refresh();
@@ -9494,9 +9565,9 @@ var require_client_h1 = __commonJS({
         }
       }
       execute(data) {
-        assert3(this.ptr != null);
-        assert3(currentParser == null);
-        assert3(!this.paused);
+        assert5(this.ptr != null);
+        assert5(currentParser == null);
+        assert5(!this.paused);
         const { socket, llhttp } = this;
         if (data.length > currentBufferSize) {
           if (currentBufferPtr) {
@@ -9519,27 +9590,27 @@ var require_client_h1 = __commonJS({
             currentBufferRef = null;
           }
           const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;
-          if (ret === constants.ERROR.PAUSED_UPGRADE) {
+          if (ret === constants2.ERROR.PAUSED_UPGRADE) {
             this.onUpgrade(data.slice(offset));
-          } else if (ret === constants.ERROR.PAUSED) {
+          } else if (ret === constants2.ERROR.PAUSED) {
             this.paused = true;
             socket.unshift(data.slice(offset));
-          } else if (ret !== constants.ERROR.OK) {
+          } else if (ret !== constants2.ERROR.OK) {
             const ptr = llhttp.llhttp_get_error_reason(this.ptr);
             let message = "";
             if (ptr) {
               const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
               message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
             }
-            throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset));
+            throw new HTTPParserError(message, constants2.ERROR[ret], data.slice(offset));
           }
         } catch (err) {
           util.destroy(socket, err);
         }
       }
       destroy() {
-        assert3(this.ptr != null);
-        assert3(currentParser == null);
+        assert5(this.ptr != null);
+        assert5(currentParser == null);
         this.llhttp.llhttp_free(this.ptr);
         this.ptr = null;
         timers.clearTimeout(this.timeout);
@@ -9600,17 +9671,17 @@ var require_client_h1 = __commonJS({
       }
       onUpgrade(head) {
         const { upgrade, client, socket, headers, statusCode } = this;
-        assert3(upgrade);
+        assert5(upgrade);
         const request = client[kQueue][client[kRunningIdx]];
-        assert3(request);
-        assert3(!socket.destroyed);
-        assert3(socket === client[kSocket]);
-        assert3(!this.paused);
-        assert3(request.upgrade || request.method === "CONNECT");
+        assert5(request);
+        assert5(!socket.destroyed);
+        assert5(socket === client[kSocket]);
+        assert5(!this.paused);
+        assert5(request.upgrade || request.method === "CONNECT");
         this.statusCode = null;
         this.statusText = "";
         this.shouldKeepAlive = null;
-        assert3(this.headers.length % 2 === 0);
+        assert5(this.headers.length % 2 === 0);
         this.headers = [];
         this.headersSize = 0;
         socket.unshift(head);
@@ -9639,8 +9710,8 @@ var require_client_h1 = __commonJS({
         if (!request) {
           return -1;
         }
-        assert3(!this.upgrade);
-        assert3(this.statusCode < 200);
+        assert5(!this.upgrade);
+        assert5(this.statusCode < 200);
         if (statusCode === 100) {
           util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
           return -1;
@@ -9649,7 +9720,7 @@ var require_client_h1 = __commonJS({
           util.destroy(socket, new SocketError("bad upgrade", util.getSocketInfo(socket)));
           return -1;
         }
-        assert3.strictEqual(this.timeoutType, TIMEOUT_HEADERS);
+        assert5.strictEqual(this.timeoutType, TIMEOUT_HEADERS);
         this.statusCode = statusCode;
         this.shouldKeepAlive = shouldKeepAlive || // Override llhttp value which does not allow keepAlive for HEAD.
         request.method === "HEAD" && !socket[kReset] && this.connection.toLowerCase() === "keep-alive";
@@ -9662,16 +9733,16 @@ var require_client_h1 = __commonJS({
           }
         }
         if (request.method === "CONNECT") {
-          assert3(client[kRunning] === 1);
+          assert5(client[kRunning] === 1);
           this.upgrade = true;
           return 2;
         }
         if (upgrade) {
-          assert3(client[kRunning] === 1);
+          assert5(client[kRunning] === 1);
           this.upgrade = true;
           return 2;
         }
-        assert3(this.headers.length % 2 === 0);
+        assert5(this.headers.length % 2 === 0);
         this.headers = [];
         this.headersSize = 0;
         if (this.shouldKeepAlive && client[kPipelining]) {
@@ -9706,7 +9777,7 @@ var require_client_h1 = __commonJS({
           socket[kBlocking] = false;
           client[kResume]();
         }
-        return pause ? constants.ERROR.PAUSED : 0;
+        return pause ? constants2.ERROR.PAUSED : 0;
       }
       onBody(buf) {
         const { client, socket, statusCode, maxResponseSize } = this;
@@ -9714,21 +9785,21 @@ var require_client_h1 = __commonJS({
           return -1;
         }
         const request = client[kQueue][client[kRunningIdx]];
-        assert3(request);
-        assert3.strictEqual(this.timeoutType, TIMEOUT_BODY);
+        assert5(request);
+        assert5.strictEqual(this.timeoutType, TIMEOUT_BODY);
         if (this.timeout) {
           if (this.timeout.refresh) {
             this.timeout.refresh();
           }
         }
-        assert3(statusCode >= 200);
+        assert5(statusCode >= 200);
         if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {
           util.destroy(socket, new ResponseExceededMaxSizeError());
           return -1;
         }
         this.bytesRead += buf.length;
         if (request.onData(buf) === false) {
-          return constants.ERROR.PAUSED;
+          return constants2.ERROR.PAUSED;
         }
       }
       onMessageComplete() {
@@ -9740,15 +9811,15 @@ var require_client_h1 = __commonJS({
           return;
         }
         const request = client[kQueue][client[kRunningIdx]];
-        assert3(request);
-        assert3(statusCode >= 100);
+        assert5(request);
+        assert5(statusCode >= 100);
         this.statusCode = null;
         this.statusText = "";
         this.bytesRead = 0;
         this.contentLength = "";
         this.keepAlive = "";
         this.connection = "";
-        assert3(this.headers.length % 2 === 0);
+        assert5(this.headers.length % 2 === 0);
         this.headers = [];
         this.headersSize = 0;
         if (statusCode < 200) {
@@ -9761,15 +9832,15 @@ var require_client_h1 = __commonJS({
         request.onComplete(headers);
         client[kQueue][client[kRunningIdx]++] = null;
         if (socket[kWriting]) {
-          assert3.strictEqual(client[kRunning], 0);
+          assert5.strictEqual(client[kRunning], 0);
           util.destroy(socket, new InformationalError("reset"));
-          return constants.ERROR.PAUSED;
+          return constants2.ERROR.PAUSED;
         } else if (!shouldKeepAlive) {
           util.destroy(socket, new InformationalError("reset"));
-          return constants.ERROR.PAUSED;
+          return constants2.ERROR.PAUSED;
         } else if (socket[kReset] && client[kRunning] === 0) {
           util.destroy(socket, new InformationalError("reset"));
-          return constants.ERROR.PAUSED;
+          return constants2.ERROR.PAUSED;
         } else if (client[kPipelining] == null || client[kPipelining] === 1) {
           setImmediate(() => client[kResume]());
         } else {
@@ -9781,7 +9852,7 @@ var require_client_h1 = __commonJS({
       const { socket, timeoutType, client } = parser;
       if (timeoutType === TIMEOUT_HEADERS) {
         if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {
-          assert3(!parser.paused, "cannot be paused while waiting for headers");
+          assert5(!parser.paused, "cannot be paused while waiting for headers");
           util.destroy(socket, new HeadersTimeoutError());
         }
       } else if (timeoutType === TIMEOUT_BODY) {
@@ -9789,7 +9860,7 @@ var require_client_h1 = __commonJS({
           util.destroy(socket, new BodyTimeoutError());
         }
       } else if (timeoutType === TIMEOUT_IDLE) {
-        assert3(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]);
+        assert5(client[kRunning] === 0 && client[kKeepAliveTimeoutValue]);
         util.destroy(socket, new InformationalError("socket idle timeout"));
       }
     }
@@ -9803,10 +9874,10 @@ var require_client_h1 = __commonJS({
       socket[kWriting] = false;
       socket[kReset] = false;
       socket[kBlocking] = false;
-      socket[kParser] = new Parser(client, socket, llhttpInstance);
+      socket[kParser] = new Parser2(client, socket, llhttpInstance);
       addListener(socket, "error", function(err) {
         const parser = this[kParser];
-        assert3(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
+        assert5(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
         if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {
           parser.onMessageComplete();
           return;
@@ -9842,7 +9913,7 @@ var require_client_h1 = __commonJS({
         client2[kSocket] = null;
         client2[kHTTPContext] = null;
         if (client2.destroyed) {
-          assert3(client2[kPending] === 0);
+          assert5(client2[kPending] === 0);
           const requests = client2[kQueue].splice(client2[kRunningIdx]);
           for (let i = 0; i < requests.length; i++) {
             const request = requests[i];
@@ -9854,7 +9925,7 @@ var require_client_h1 = __commonJS({
           util.errorRequest(client2, request, err);
         }
         client2[kPendingIdx] = client2[kRunningIdx];
-        assert3(client2[kRunning] === 0);
+        assert5(client2[kRunning] === 0);
         client2.emit("disconnect", client2[kUrl], [client2], err);
         client2[kResume]();
       });
@@ -9929,7 +10000,7 @@ var require_client_h1 = __commonJS({
       return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
     }
     function writeH1(client, request) {
-      const { method, path: path10, host, upgrade, blocking, reset } = request;
+      const { method, path: path16, host, upgrade, blocking, reset } = request;
       let { body, headers, contentLength } = request;
       const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
       if (util.isFormDataLike(body)) {
@@ -9995,7 +10066,7 @@ var require_client_h1 = __commonJS({
       if (blocking) {
         socket[kBlocking] = true;
       }
-      let header = `${method} ${path10} HTTP/1.1\r
+      let header = `${method} ${path16} HTTP/1.1\r
 `;
       if (typeof host === "string") {
         header += `host: ${host}\r
@@ -10045,12 +10116,12 @@ upgrade: ${upgrade}\r
       } else if (util.isIterable(body)) {
         writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload);
       } else {
-        assert3(false);
+        assert5(false);
       }
       return true;
     }
     function writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload) {
-      assert3(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
+      assert5(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
       let finished = false;
       const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header });
       const onData = function(chunk) {
@@ -10087,7 +10158,7 @@ upgrade: ${upgrade}\r
           return;
         }
         finished = true;
-        assert3(socket.destroyed || socket[kWriting] && client[kRunning] <= 1);
+        assert5(socket.destroyed || socket[kWriting] && client[kRunning] <= 1);
         socket.off("drain", onDrain).off("error", onFinished);
         body.removeListener("data", onData).removeListener("end", onFinished).removeListener("close", onClose);
         if (!err) {
@@ -10126,12 +10197,12 @@ upgrade: ${upgrade}\r
 \r
 `, "latin1");
           } else {
-            assert3(contentLength === null, "no body must not have content length");
+            assert5(contentLength === null, "no body must not have content length");
             socket.write(`${header}\r
 `, "latin1");
           }
         } else if (util.isBuffer(body)) {
-          assert3(contentLength === body.byteLength, "buffer body must have content length");
+          assert5(contentLength === body.byteLength, "buffer body must have content length");
           socket.cork();
           socket.write(`${header}content-length: ${contentLength}\r
 \r
@@ -10150,7 +10221,7 @@ upgrade: ${upgrade}\r
       }
     }
     async function writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload) {
-      assert3(contentLength === body.size, "blob body must have content length");
+      assert5(contentLength === body.size, "blob body must have content length");
       try {
         if (contentLength != null && contentLength !== body.size) {
           throw new RequestContentLengthMismatchError();
@@ -10173,7 +10244,7 @@ upgrade: ${upgrade}\r
       }
     }
     async function writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload) {
-      assert3(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
+      assert5(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
       let callback = null;
       function onDrain() {
         if (callback) {
@@ -10182,12 +10253,12 @@ upgrade: ${upgrade}\r
           cb();
         }
       }
-      const waitForDrain = () => new Promise((resolve, reject) => {
-        assert3(callback === null);
+      const waitForDrain = () => new Promise((resolve2, reject) => {
+        assert5(callback === null);
         if (socket[kError]) {
           reject(socket[kError]);
         } else {
-          callback = resolve;
+          callback = resolve2;
         }
       });
       socket.on("close", onDrain).on("drain", onDrain);
@@ -10310,7 +10381,7 @@ ${len.toString(16)}\r
         const { socket, client, abort } = this;
         socket[kWriting] = false;
         if (err) {
-          assert3(client[kRunning] <= 1, "pipeline should only contain this request");
+          assert5(client[kRunning] <= 1, "pipeline should only contain this request");
           abort(err);
         }
       }
@@ -10323,7 +10394,7 @@ ${len.toString(16)}\r
 var require_client_h2 = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client-h2.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { pipeline } = require("node:stream");
     var util = require_util();
     var {
@@ -10370,13 +10441,13 @@ var require_client_h2 = __commonJS({
     } = http2;
     function parseH2Headers(headers) {
       const result = [];
-      for (const [name, value] of Object.entries(headers)) {
+      for (const [name2, value] of Object.entries(headers)) {
         if (Array.isArray(value)) {
           for (const subvalue of value) {
-            result.push(Buffer.from(name), Buffer.from(subvalue));
+            result.push(Buffer.from(name2), Buffer.from(subvalue));
           }
         } else {
-          result.push(Buffer.from(name), Buffer.from(value));
+          result.push(Buffer.from(name2), Buffer.from(value));
         }
       }
       return result;
@@ -10406,7 +10477,7 @@ var require_client_h2 = __commonJS({
         const err = this[kSocket][kError] || this[kError] || new SocketError("closed", util.getSocketInfo(socket2));
         client2[kHTTP2Session] = null;
         if (client2.destroyed) {
-          assert3(client2[kPending] === 0);
+          assert5(client2[kPending] === 0);
           const requests = client2[kQueue].splice(client2[kRunningIdx]);
           for (let i = 0; i < requests.length; i++) {
             const request = requests[i];
@@ -10418,7 +10489,7 @@ var require_client_h2 = __commonJS({
       client[kHTTP2Session] = session;
       socket[kHTTP2Session] = session;
       util.addListener(socket, "error", function(err) {
-        assert3(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
+        assert5(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
         this[kError] = err;
         this[kClient][kOnError](err);
       });
@@ -10432,7 +10503,7 @@ var require_client_h2 = __commonJS({
           this[kHTTP2Session].destroy(err);
         }
         client[kPendingIdx] = client[kRunningIdx];
-        assert3(client[kRunning] === 0);
+        assert5(client[kRunning] === 0);
         client.emit("disconnect", client[kUrl], [client], err);
         client[kResume]();
       });
@@ -10464,13 +10535,13 @@ var require_client_h2 = __commonJS({
       };
     }
     function onHttp2SessionError(err) {
-      assert3(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
+      assert5(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
       this[kSocket][kError] = err;
       this[kClient][kOnError](err);
     }
-    function onHttp2FrameError(type, code, id) {
+    function onHttp2FrameError(type, code2, id) {
       if (id === 0) {
-        const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`);
+        const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code2}`);
         this[kSocket][kError] = err;
         this[kClient][kOnError](err);
       }
@@ -10480,8 +10551,8 @@ var require_client_h2 = __commonJS({
       this.destroy(err);
       util.destroy(this[kSocket], err);
     }
-    function onHTTP2GoAway(code) {
-      const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code}`);
+    function onHTTP2GoAway(code2) {
+      const err = new RequestAbortedError(`HTTP/2: "GOAWAY" frame received with code ${code2}`);
       this[kSocket][kError] = err;
       this[kClient][kOnError](err);
       this.unref();
@@ -10492,7 +10563,7 @@ var require_client_h2 = __commonJS({
     }
     function writeH2(client, request) {
       const session = client[kHTTP2Session];
-      const { body, method, path: path10, host, upgrade, expectContinue, signal, headers: reqHeaders } = request;
+      const { body, method, path: path16, host, upgrade, expectContinue, signal, headers: reqHeaders } = request;
       if (upgrade) {
         util.errorRequest(client, request, new Error("Upgrade not supported for H2"));
         return false;
@@ -10554,7 +10625,7 @@ var require_client_h2 = __commonJS({
         });
         return true;
       }
-      headers[HTTP2_HEADER_PATH] = path10;
+      headers[HTTP2_HEADER_PATH] = path16;
       headers[HTTP2_HEADER_SCHEME] = "https";
       const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
       if (body && typeof body.read === "function") {
@@ -10575,7 +10646,7 @@ var require_client_h2 = __commonJS({
         process.emitWarning(new RequestContentLengthMismatchError());
       }
       if (contentLength != null) {
-        assert3(body, "no body must not have content length");
+        assert5(body, "no body must not have content length");
         headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`;
       }
       session.ref();
@@ -10629,8 +10700,8 @@ var require_client_h2 = __commonJS({
       stream.once("error", function(err) {
         abort(err);
       });
-      stream.once("frameError", (type, code) => {
-        abort(new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`));
+      stream.once("frameError", (type, code2) => {
+        abort(new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code2}`));
       });
       return true;
       function writeBodyH2() {
@@ -10703,14 +10774,14 @@ var require_client_h2 = __commonJS({
             expectsPayload
           );
         } else {
-          assert3(false);
+          assert5(false);
         }
       }
     }
     function writeBuffer(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
       try {
         if (body != null && util.isBuffer(body)) {
-          assert3(contentLength === body.byteLength, "buffer body must have content length");
+          assert5(contentLength === body.byteLength, "buffer body must have content length");
           h2stream.cork();
           h2stream.write(body);
           h2stream.uncork();
@@ -10727,7 +10798,7 @@ var require_client_h2 = __commonJS({
       }
     }
     function writeStream(abort, socket, expectsPayload, h2stream, body, client, request, contentLength) {
-      assert3(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
+      assert5(contentLength !== 0 || client[kRunning] === 0, "stream body cannot be pipelined");
       const pipe = pipeline(
         body,
         h2stream,
@@ -10751,7 +10822,7 @@ var require_client_h2 = __commonJS({
       }
     }
     async function writeBlob(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
-      assert3(contentLength === body.size, "blob body must have content length");
+      assert5(contentLength === body.size, "blob body must have content length");
       try {
         if (contentLength != null && contentLength !== body.size) {
           throw new RequestContentLengthMismatchError();
@@ -10772,7 +10843,7 @@ var require_client_h2 = __commonJS({
       }
     }
     async function writeIterable(abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {
-      assert3(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
+      assert5(contentLength !== 0 || client[kRunning] === 0, "iterator body cannot be pipelined");
       let callback = null;
       function onDrain() {
         if (callback) {
@@ -10781,12 +10852,12 @@ var require_client_h2 = __commonJS({
           cb();
         }
       }
-      const waitForDrain = () => new Promise((resolve, reject) => {
-        assert3(callback === null);
+      const waitForDrain = () => new Promise((resolve2, reject) => {
+        assert5(callback === null);
         if (socket[kError]) {
           reject(socket[kError]);
         } else {
-          callback = resolve;
+          callback = resolve2;
         }
       });
       h2stream.on("close", onDrain).on("drain", onDrain);
@@ -10823,9 +10894,9 @@ var require_redirect_handler = __commonJS({
     "use strict";
     var util = require_util();
     var { kBodyUsed } = require_symbols();
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var { InvalidArgumentError } = require_errors();
-    var EE = require("node:events");
+    var EE3 = require("node:events");
     var redirectableStatusCodes = [300, 301, 302, 303, 307, 308];
     var kBody = Symbol("body");
     var BodyAsyncIterable = class {
@@ -10834,7 +10905,7 @@ var require_redirect_handler = __commonJS({
         this[kBodyUsed] = false;
       }
       async *[Symbol.asyncIterator]() {
-        assert3(!this[kBodyUsed], "disturbed");
+        assert5(!this[kBodyUsed], "disturbed");
         this[kBodyUsed] = true;
         yield* this[kBody];
       }
@@ -10856,12 +10927,12 @@ var require_redirect_handler = __commonJS({
         if (util.isStream(this.opts.body)) {
           if (util.bodyLength(this.opts.body) === 0) {
             this.opts.body.on("data", function() {
-              assert3(false);
+              assert5(false);
             });
           }
           if (typeof this.opts.body.readableDidRead !== "boolean") {
             this.opts.body[kBodyUsed] = false;
-            EE.prototype.on.call(this.opts.body, "data", function() {
+            EE3.prototype.on.call(this.opts.body, "data", function() {
               this[kBodyUsed] = true;
             });
           }
@@ -10898,9 +10969,9 @@ var require_redirect_handler = __commonJS({
           return this.handler.onHeaders(statusCode, headers, resume, statusText);
         }
         const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)));
-        const path10 = search ? `${pathname}${search}` : pathname;
+        const path16 = search ? `${pathname}${search}` : pathname;
         this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin);
-        this.opts.path = path10;
+        this.opts.path = path16;
         this.opts.origin = origin;
         this.opts.maxRedirections = 0;
         this.opts.query = null;
@@ -10948,8 +11019,8 @@ var require_redirect_handler = __commonJS({
         return true;
       }
       if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {
-        const name = util.headerNameToString(header);
-        return name === "authorization" || name === "cookie" || name === "proxy-authorization";
+        const name2 = util.headerNameToString(header);
+        return name2 === "authorization" || name2 === "cookie" || name2 === "proxy-authorization";
       }
       return false;
     }
@@ -10968,7 +11039,7 @@ var require_redirect_handler = __commonJS({
           }
         }
       } else {
-        assert3(headers == null, "headers must be an object or an array");
+        assert5(headers == null, "headers must be an object or an array");
       }
       return ret;
     }
@@ -11002,7 +11073,7 @@ var require_redirect_interceptor = __commonJS({
 var require_client = __commonJS({
   ".yarn/cache/undici-npm-6.19.2-a9aa1269bb-3b7b9238c0.zip/node_modules/undici/lib/dispatcher/client.js"(exports2, module2) {
     "use strict";
-    var assert3 = require("node:assert");
+    var assert5 = require("node:assert");
     var net = require("node:net");
     var http = require("node:http");
     var util = require_util();
@@ -11261,16 +11332,16 @@ var require_client = __commonJS({
         return this[kNeedDrain] < 2;
       }
       async [kClose]() {
-        return new Promise((resolve) => {
+        return new Promise((resolve2) => {
           if (this[kSize]) {
-            this[kClosedResolve] = resolve;
+            this[kClosedResolve] = resolve2;
           } else {
-            resolve(null);
+            resolve2(null);
           }
         });
       }
       async [kDestroy](err) {
-        return new Promise((resolve) => {
+        return new Promise((resolve2) => {
           const requests = this[kQueue].splice(this[kPendingIdx]);
           for (let i = 0; i < requests.length; i++) {
             const request = requests[i];
@@ -11281,7 +11352,7 @@ var require_client = __commonJS({
               this[kClosedResolve]();
               this[kClosedResolve] = null;
             }
-            resolve(null);
+            resolve2(null);
           };
           if (this[kHTTPContext]) {
             this[kHTTPContext].destroy(err, callback);
@@ -11296,24 +11367,24 @@ var require_client = __commonJS({
     var createRedirectInterceptor = require_redirect_interceptor();
     function onError(client, err) {
       if (client[kRunning] === 0 && err.code !== "UND_ERR_INFO" && err.code !== "UND_ERR_SOCKET") {
-        assert3(client[kPendingIdx] === client[kRunningIdx]);
+        assert5(client[kPendingIdx] === client[kRunningIdx]);
         const requests = client[kQueue].splice(client[kRunningIdx]);
         for (let i = 0; i < requests.length; i++) {
           const request = requests[i];
           util.errorRequest(client, request, err);
         }
-        assert3(client[kSize] === 0);
+        assert5(client[kSize] === 0);
       }
     }
     async function connect(client) {
-      assert3(!client[kConnecting]);
-      assert3(!client[kHTTPContext]);
+      assert5(!client[kConnecting]);
+      assert5(!client[kHTTPContext]);
       let { host, hostname, protocol, port } = client[kUrl];
       if (hostname[0] === "[") {
         const idx = hostname.indexOf("]");
-        assert3(idx !== -1);
+        assert5(idx !== -1);
         const ip = hostname.substring(1, idx);
-        assert3(net.isIP(ip));
+        assert5(net.isIP(ip));
         hostname = ip;
       }
       client[kConnecting] = true;
@@ -11332,7 +11403,7 @@ var require_client = __commonJS({
         });
       }
       try {
-        const socket = await new Promise((resolve, reject) => {
+        const socket = await new Promise((resolve2, reject) => {
           client[kConnector]({
             host,
             hostname,
@@ -11344,7 +11415,7 @@ var require_client = __commonJS({
             if (err) {
               reject(err);
             } else {
-              resolve(socket2);
+              resolve2(socket2);
             }
           });
         });
@@ -11353,7 +11424,7 @@ var require_client = __commonJS({
           }), new ClientDestroyedError());
           return;
         }
-        assert3(socket);
+        assert5(socket);
         try {
           client[kHTTPContext] = socket.alpnProtocol === "h2" ? await connectH2(client, socket) : await connectH1(client, socket);
         } catch (err) {
@@ -11403,7 +11474,7 @@ var require_client = __commonJS({
           });
         }
         if (err.code === "ERR_TLS_CERT_ALTNAME_INVALID") {
-          assert3(client[kRunning] === 0);
+          assert5(client[kRunning] === 0);
           while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
             const request = client[kQueue][client[kPendingIdx]++];
             util.errorRequest(client, request, err);
@@ -11435,7 +11506,7 @@ var require_client = __commonJS({
     function _resume(client, sync) {
       while (true) {
         if (client.destroyed) {
-          assert3(client[kPending] === 0);
+          assert5(client[kPending] === 0);
           return;
         }
         if (client[kClosedResolve] && !client[kSize]) {
@@ -11832,106 +11903,84 @@ var require_proxy_agent = __commonJS({
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/high-level-opt.js
-var require_high_level_opt = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/high-level-opt.js"(exports2, module2) {
-    "use strict";
-    var argmap = /* @__PURE__ */ new Map([
-      ["C", "cwd"],
-      ["f", "file"],
-      ["z", "gzip"],
-      ["P", "preservePaths"],
-      ["U", "unlink"],
-      ["strip-components", "strip"],
-      ["stripComponents", "strip"],
-      ["keep-newer", "newer"],
-      ["keepNewer", "newer"],
-      ["keep-newer-files", "newer"],
-      ["keepNewerFiles", "newer"],
-      ["k", "keep"],
-      ["keep-existing", "keep"],
-      ["keepExisting", "keep"],
-      ["m", "noMtime"],
-      ["no-mtime", "noMtime"],
-      ["p", "preserveOwner"],
-      ["L", "follow"],
-      ["h", "follow"]
-    ]);
-    module2.exports = (opt) => opt ? Object.keys(opt).map((k) => [
-      argmap.has(k) ? argmap.get(k) : k,
-      opt[k]
-    ]).reduce((set, kv) => (set[kv[0]] = kv[1], set), /* @__PURE__ */ Object.create(null)) : {};
-  }
-});
-
-// .yarn/cache/minipass-npm-5.0.0-c64fb63c92-a91d8043f6.zip/node_modules/minipass/index.js
-var require_minipass = __commonJS({
-  ".yarn/cache/minipass-npm-5.0.0-c64fb63c92-a91d8043f6.zip/node_modules/minipass/index.js"(exports2) {
-    "use strict";
-    var proc = typeof process === "object" && process ? process : {
+// .yarn/cache/minipass-npm-7.1.2-3a5327d36d-b0fd20bb9f.zip/node_modules/minipass/dist/esm/index.js
+var import_node_events, import_node_stream, import_node_string_decoder, proc, isStream, isReadable, isWritable, EOF, MAYBE_EMIT_END, EMITTED_END, EMITTING_END, EMITTED_ERROR, CLOSED, READ, FLUSH, FLUSHCHUNK, ENCODING, DECODER, FLOWING, PAUSED, RESUME, BUFFER, PIPES, BUFFERLENGTH, BUFFERPUSH, BUFFERSHIFT, OBJECTMODE, DESTROYED, ERROR, EMITDATA, EMITEND, EMITEND2, ASYNC, ABORT, ABORTED, SIGNAL, DATALISTENERS, DISCARDED, defer, nodefer, isEndish, isArrayBufferLike, isArrayBufferView, Pipe, PipeProxyErrors, isObjectModeOptions, isEncodingOptions, Minipass;
+var init_esm = __esm({
+  ".yarn/cache/minipass-npm-7.1.2-3a5327d36d-b0fd20bb9f.zip/node_modules/minipass/dist/esm/index.js"() {
+    import_node_events = require("node:events");
+    import_node_stream = __toESM(require("node:stream"), 1);
+    import_node_string_decoder = require("node:string_decoder");
+    proc = typeof process === "object" && process ? process : {
       stdout: null,
       stderr: null
     };
-    var EE = require("events");
-    var Stream = require("stream");
-    var stringdecoder = require("string_decoder");
-    var SD = stringdecoder.StringDecoder;
-    var EOF = Symbol("EOF");
-    var MAYBE_EMIT_END = Symbol("maybeEmitEnd");
-    var EMITTED_END = Symbol("emittedEnd");
-    var EMITTING_END = Symbol("emittingEnd");
-    var EMITTED_ERROR = Symbol("emittedError");
-    var CLOSED = Symbol("closed");
-    var READ = Symbol("read");
-    var FLUSH = Symbol("flush");
-    var FLUSHCHUNK = Symbol("flushChunk");
-    var ENCODING = Symbol("encoding");
-    var DECODER = Symbol("decoder");
-    var FLOWING = Symbol("flowing");
-    var PAUSED = Symbol("paused");
-    var RESUME = Symbol("resume");
-    var BUFFER = Symbol("buffer");
-    var PIPES = Symbol("pipes");
-    var BUFFERLENGTH = Symbol("bufferLength");
-    var BUFFERPUSH = Symbol("bufferPush");
-    var BUFFERSHIFT = Symbol("bufferShift");
-    var OBJECTMODE = Symbol("objectMode");
-    var DESTROYED = Symbol("destroyed");
-    var ERROR = Symbol("error");
-    var EMITDATA = Symbol("emitData");
-    var EMITEND = Symbol("emitEnd");
-    var EMITEND2 = Symbol("emitEnd2");
-    var ASYNC = Symbol("async");
-    var ABORT = Symbol("abort");
-    var ABORTED = Symbol("aborted");
-    var SIGNAL = Symbol("signal");
-    var defer = (fn2) => Promise.resolve().then(fn2);
-    var doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== "1";
-    var ASYNCITERATOR = doIter && Symbol.asyncIterator || Symbol("asyncIterator not implemented");
-    var ITERATOR = doIter && Symbol.iterator || Symbol("iterator not implemented");
-    var isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish";
-    var isArrayBuffer = (b) => b instanceof ArrayBuffer || typeof b === "object" && b.constructor && b.constructor.name === "ArrayBuffer" && b.byteLength >= 0;
-    var isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
-    var Pipe = class {
+    isStream = (s) => !!s && typeof s === "object" && (s instanceof Minipass || s instanceof import_node_stream.default || isReadable(s) || isWritable(s));
+    isReadable = (s) => !!s && typeof s === "object" && s instanceof import_node_events.EventEmitter && typeof s.pipe === "function" && // node core Writable streams have a pipe() method, but it throws
+    s.pipe !== import_node_stream.default.Writable.prototype.pipe;
+    isWritable = (s) => !!s && typeof s === "object" && s instanceof import_node_events.EventEmitter && typeof s.write === "function" && typeof s.end === "function";
+    EOF = Symbol("EOF");
+    MAYBE_EMIT_END = Symbol("maybeEmitEnd");
+    EMITTED_END = Symbol("emittedEnd");
+    EMITTING_END = Symbol("emittingEnd");
+    EMITTED_ERROR = Symbol("emittedError");
+    CLOSED = Symbol("closed");
+    READ = Symbol("read");
+    FLUSH = Symbol("flush");
+    FLUSHCHUNK = Symbol("flushChunk");
+    ENCODING = Symbol("encoding");
+    DECODER = Symbol("decoder");
+    FLOWING = Symbol("flowing");
+    PAUSED = Symbol("paused");
+    RESUME = Symbol("resume");
+    BUFFER = Symbol("buffer");
+    PIPES = Symbol("pipes");
+    BUFFERLENGTH = Symbol("bufferLength");
+    BUFFERPUSH = Symbol("bufferPush");
+    BUFFERSHIFT = Symbol("bufferShift");
+    OBJECTMODE = Symbol("objectMode");
+    DESTROYED = Symbol("destroyed");
+    ERROR = Symbol("error");
+    EMITDATA = Symbol("emitData");
+    EMITEND = Symbol("emitEnd");
+    EMITEND2 = Symbol("emitEnd2");
+    ASYNC = Symbol("async");
+    ABORT = Symbol("abort");
+    ABORTED = Symbol("aborted");
+    SIGNAL = Symbol("signal");
+    DATALISTENERS = Symbol("dataListeners");
+    DISCARDED = Symbol("discarded");
+    defer = (fn2) => Promise.resolve().then(fn2);
+    nodefer = (fn2) => fn2();
+    isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish";
+    isArrayBufferLike = (b) => b instanceof ArrayBuffer || !!b && typeof b === "object" && b.constructor && b.constructor.name === "ArrayBuffer" && b.byteLength >= 0;
+    isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
+    Pipe = class {
+      src;
+      dest;
+      opts;
+      ondrain;
       constructor(src, dest, opts) {
         this.src = src;
         this.dest = dest;
         this.opts = opts;
         this.ondrain = () => src[RESUME]();
-        dest.on("drain", this.ondrain);
+        this.dest.on("drain", this.ondrain);
       }
       unpipe() {
         this.dest.removeListener("drain", this.ondrain);
       }
-      // istanbul ignore next - only here for the prototype
-      proxyErrors() {
+      // only here for the prototype
+      /* c8 ignore start */
+      proxyErrors(_er) {
       }
+      /* c8 ignore stop */
       end() {
         this.unpipe();
-        if (this.opts.end) this.dest.end();
+        if (this.opts.end)
+          this.dest.end();
       }
     };
-    var PipeProxyErrors = class extends Pipe {
+    PipeProxyErrors = class extends Pipe {
       unpipe() {
         this.src.removeListener("error", this.proxyErrors);
         super.unpipe();
@@ -11942,258 +11991,508 @@ var require_minipass = __commonJS({
         src.on("error", this.proxyErrors);
       }
     };
-    var Minipass = class _Minipass extends Stream {
-      constructor(options) {
+    isObjectModeOptions = (o) => !!o.objectMode;
+    isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== "buffer";
+    Minipass = class extends import_node_events.EventEmitter {
+      [FLOWING] = false;
+      [PAUSED] = false;
+      [PIPES] = [];
+      [BUFFER] = [];
+      [OBJECTMODE];
+      [ENCODING];
+      [ASYNC];
+      [DECODER];
+      [EOF] = false;
+      [EMITTED_END] = false;
+      [EMITTING_END] = false;
+      [CLOSED] = false;
+      [EMITTED_ERROR] = null;
+      [BUFFERLENGTH] = 0;
+      [DESTROYED] = false;
+      [SIGNAL];
+      [ABORTED] = false;
+      [DATALISTENERS] = 0;
+      [DISCARDED] = false;
+      /**
+       * true if the stream can be written
+       */
+      writable = true;
+      /**
+       * true if the stream can be read
+       */
+      readable = true;
+      /**
+       * If `RType` is Buffer, then options do not need to be provided.
+       * Otherwise, an options object must be provided to specify either
+       * {@link Minipass.SharedOptions.objectMode} or
+       * {@link Minipass.SharedOptions.encoding}, as appropriate.
+       */
+      constructor(...args) {
+        const options = args[0] || {};
         super();
-        this[FLOWING] = false;
-        this[PAUSED] = false;
-        this[PIPES] = [];
-        this[BUFFER] = [];
-        this[OBJECTMODE] = options && options.objectMode || false;
-        if (this[OBJECTMODE]) this[ENCODING] = null;
-        else this[ENCODING] = options && options.encoding || null;
-        if (this[ENCODING] === "buffer") this[ENCODING] = null;
-        this[ASYNC] = options && !!options.async || false;
-        this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null;
-        this[EOF] = false;
-        this[EMITTED_END] = false;
-        this[EMITTING_END] = false;
-        this[CLOSED] = false;
-        this[EMITTED_ERROR] = null;
-        this.writable = true;
-        this.readable = true;
-        this[BUFFERLENGTH] = 0;
-        this[DESTROYED] = false;
+        if (options.objectMode && typeof options.encoding === "string") {
+          throw new TypeError("Encoding and objectMode may not be used together");
+        }
+        if (isObjectModeOptions(options)) {
+          this[OBJECTMODE] = true;
+          this[ENCODING] = null;
+        } else if (isEncodingOptions(options)) {
+          this[ENCODING] = options.encoding;
+          this[OBJECTMODE] = false;
+        } else {
+          this[OBJECTMODE] = false;
+          this[ENCODING] = null;
+        }
+        this[ASYNC] = !!options.async;
+        this[DECODER] = this[ENCODING] ? new import_node_string_decoder.StringDecoder(this[ENCODING]) : null;
         if (options && options.debugExposeBuffer === true) {
           Object.defineProperty(this, "buffer", { get: () => this[BUFFER] });
         }
         if (options && options.debugExposePipes === true) {
           Object.defineProperty(this, "pipes", { get: () => this[PIPES] });
         }
-        this[SIGNAL] = options && options.signal;
-        this[ABORTED] = false;
-        if (this[SIGNAL]) {
-          this[SIGNAL].addEventListener("abort", () => this[ABORT]());
-          if (this[SIGNAL].aborted) {
+        const { signal } = options;
+        if (signal) {
+          this[SIGNAL] = signal;
+          if (signal.aborted) {
             this[ABORT]();
+          } else {
+            signal.addEventListener("abort", () => this[ABORT]());
           }
         }
       }
+      /**
+       * The amount of data stored in the buffer waiting to be read.
+       *
+       * For Buffer strings, this will be the total byte length.
+       * For string encoding streams, this will be the string character length,
+       * according to JavaScript's `string.length` logic.
+       * For objectMode streams, this is a count of the items waiting to be
+       * emitted.
+       */
       get bufferLength() {
         return this[BUFFERLENGTH];
       }
+      /**
+       * The `BufferEncoding` currently in use, or `null`
+       */
       get encoding() {
         return this[ENCODING];
       }
-      set encoding(enc) {
-        if (this[OBJECTMODE]) throw new Error("cannot set encoding in objectMode");
-        if (this[ENCODING] && enc !== this[ENCODING] && (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))
-          throw new Error("cannot change encoding");
-        if (this[ENCODING] !== enc) {
-          this[DECODER] = enc ? new SD(enc) : null;
-          if (this[BUFFER].length)
-            this[BUFFER] = this[BUFFER].map((chunk) => this[DECODER].write(chunk));
-        }
-        this[ENCODING] = enc;
+      /**
+       * @deprecated - This is a read only property
+       */
+      set encoding(_enc) {
+        throw new Error("Encoding must be set at instantiation time");
       }
-      setEncoding(enc) {
-        this.encoding = enc;
+      /**
+       * @deprecated - Encoding may only be set at instantiation time
+       */
+      setEncoding(_enc) {
+        throw new Error("Encoding must be set at instantiation time");
       }
+      /**
+       * True if this is an objectMode stream
+       */
       get objectMode() {
         return this[OBJECTMODE];
       }
-      set objectMode(om) {
-        this[OBJECTMODE] = this[OBJECTMODE] || !!om;
+      /**
+       * @deprecated - This is a read-only property
+       */
+      set objectMode(_om) {
+        throw new Error("objectMode must be set at instantiation time");
       }
+      /**
+       * true if this is an async stream
+       */
       get ["async"]() {
         return this[ASYNC];
       }
+      /**
+       * Set to true to make this stream async.
+       *
+       * Once set, it cannot be unset, as this would potentially cause incorrect
+       * behavior.  Ie, a sync stream can be made async, but an async stream
+       * cannot be safely made sync.
+       */
       set ["async"](a) {
         this[ASYNC] = this[ASYNC] || !!a;
       }
       // drop everything and get out of the flow completely
       [ABORT]() {
         this[ABORTED] = true;
-        this.emit("abort", this[SIGNAL].reason);
-        this.destroy(this[SIGNAL].reason);
+        this.emit("abort", this[SIGNAL]?.reason);
+        this.destroy(this[SIGNAL]?.reason);
       }
+      /**
+       * True if the stream has been aborted.
+       */
       get aborted() {
         return this[ABORTED];
       }
+      /**
+       * No-op setter. Stream aborted status is set via the AbortSignal provided
+       * in the constructor options.
+       */
       set aborted(_) {
       }
       write(chunk, encoding, cb) {
-        if (this[ABORTED]) return false;
-        if (this[EOF]) throw new Error("write after end");
+        if (this[ABORTED])
+          return false;
+        if (this[EOF])
+          throw new Error("write after end");
         if (this[DESTROYED]) {
-          this.emit(
-            "error",
-            Object.assign(
-              new Error("Cannot call write after a stream was destroyed"),
-              { code: "ERR_STREAM_DESTROYED" }
-            )
-          );
+          this.emit("error", Object.assign(new Error("Cannot call write after a stream was destroyed"), { code: "ERR_STREAM_DESTROYED" }));
           return true;
         }
-        if (typeof encoding === "function") cb = encoding, encoding = "utf8";
-        if (!encoding) encoding = "utf8";
-        const fn2 = this[ASYNC] ? defer : (f) => f();
+        if (typeof encoding === "function") {
+          cb = encoding;
+          encoding = "utf8";
+        }
+        if (!encoding)
+          encoding = "utf8";
+        const fn2 = this[ASYNC] ? defer : nodefer;
         if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
-          if (isArrayBufferView(chunk))
+          if (isArrayBufferView(chunk)) {
             chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
-          else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk);
-          else if (typeof chunk !== "string")
-            this.objectMode = true;
+          } else if (isArrayBufferLike(chunk)) {
+            chunk = Buffer.from(chunk);
+          } else if (typeof chunk !== "string") {
+            throw new Error("Non-contiguous data written to non-objectMode stream");
+          }
         }
         if (this[OBJECTMODE]) {
-          if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true);
-          if (this.flowing) this.emit("data", chunk);
-          else this[BUFFERPUSH](chunk);
-          if (this[BUFFERLENGTH] !== 0) this.emit("readable");
-          if (cb) fn2(cb);
-          return this.flowing;
+          if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
+            this[FLUSH](true);
+          if (this[FLOWING])
+            this.emit("data", chunk);
+          else
+            this[BUFFERPUSH](chunk);
+          if (this[BUFFERLENGTH] !== 0)
+            this.emit("readable");
+          if (cb)
+            fn2(cb);
+          return this[FLOWING];
         }
         if (!chunk.length) {
-          if (this[BUFFERLENGTH] !== 0) this.emit("readable");
-          if (cb) fn2(cb);
-          return this.flowing;
+          if (this[BUFFERLENGTH] !== 0)
+            this.emit("readable");
+          if (cb)
+            fn2(cb);
+          return this[FLOWING];
         }
         if (typeof chunk === "string" && // unless it is a string already ready for us to use
-        !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {
+        !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)) {
           chunk = Buffer.from(chunk, encoding);
         }
-        if (Buffer.isBuffer(chunk) && this[ENCODING])
+        if (Buffer.isBuffer(chunk) && this[ENCODING]) {
           chunk = this[DECODER].write(chunk);
-        if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true);
-        if (this.flowing) this.emit("data", chunk);
-        else this[BUFFERPUSH](chunk);
-        if (this[BUFFERLENGTH] !== 0) this.emit("readable");
-        if (cb) fn2(cb);
-        return this.flowing;
+        }
+        if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
+          this[FLUSH](true);
+        if (this[FLOWING])
+          this.emit("data", chunk);
+        else
+          this[BUFFERPUSH](chunk);
+        if (this[BUFFERLENGTH] !== 0)
+          this.emit("readable");
+        if (cb)
+          fn2(cb);
+        return this[FLOWING];
       }
+      /**
+       * Low-level explicit read method.
+       *
+       * In objectMode, the argument is ignored, and one item is returned if
+       * available.
+       *
+       * `n` is the number of bytes (or in the case of encoding streams,
+       * characters) to consume. If `n` is not provided, then the entire buffer
+       * is returned, or `null` is returned if no data is available.
+       *
+       * If `n` is greater that the amount of data in the internal buffer,
+       * then `null` is returned.
+       */
       read(n) {
-        if (this[DESTROYED]) return null;
-        if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {
+        if (this[DESTROYED])
+          return null;
+        this[DISCARDED] = false;
+        if (this[BUFFERLENGTH] === 0 || n === 0 || n && n > this[BUFFERLENGTH]) {
           this[MAYBE_EMIT_END]();
           return null;
         }
-        if (this[OBJECTMODE]) n = null;
+        if (this[OBJECTMODE])
+          n = null;
         if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {
-          if (this.encoding) this[BUFFER] = [this[BUFFER].join("")];
-          else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])];
+          this[BUFFER] = [
+            this[ENCODING] ? this[BUFFER].join("") : Buffer.concat(this[BUFFER], this[BUFFERLENGTH])
+          ];
         }
         const ret = this[READ](n || null, this[BUFFER][0]);
         this[MAYBE_EMIT_END]();
         return ret;
       }
       [READ](n, chunk) {
-        if (n === chunk.length || n === null) this[BUFFERSHIFT]();
+        if (this[OBJECTMODE])
+          this[BUFFERSHIFT]();
         else {
-          this[BUFFER][0] = chunk.slice(n);
-          chunk = chunk.slice(0, n);
-          this[BUFFERLENGTH] -= n;
+          const c = chunk;
+          if (n === c.length || n === null)
+            this[BUFFERSHIFT]();
+          else if (typeof c === "string") {
+            this[BUFFER][0] = c.slice(n);
+            chunk = c.slice(0, n);
+            this[BUFFERLENGTH] -= n;
+          } else {
+            this[BUFFER][0] = c.subarray(n);
+            chunk = c.subarray(0, n);
+            this[BUFFERLENGTH] -= n;
+          }
         }
         this.emit("data", chunk);
-        if (!this[BUFFER].length && !this[EOF]) this.emit("drain");
+        if (!this[BUFFER].length && !this[EOF])
+          this.emit("drain");
         return chunk;
       }
       end(chunk, encoding, cb) {
-        if (typeof chunk === "function") cb = chunk, chunk = null;
-        if (typeof encoding === "function") cb = encoding, encoding = "utf8";
-        if (chunk) this.write(chunk, encoding);
-        if (cb) this.once("end", cb);
+        if (typeof chunk === "function") {
+          cb = chunk;
+          chunk = void 0;
+        }
+        if (typeof encoding === "function") {
+          cb = encoding;
+          encoding = "utf8";
+        }
+        if (chunk !== void 0)
+          this.write(chunk, encoding);
+        if (cb)
+          this.once("end", cb);
         this[EOF] = true;
         this.writable = false;
-        if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]();
+        if (this[FLOWING] || !this[PAUSED])
+          this[MAYBE_EMIT_END]();
         return this;
       }
       // don't let the internal resume be overwritten
       [RESUME]() {
-        if (this[DESTROYED]) return;
+        if (this[DESTROYED])
+          return;
+        if (!this[DATALISTENERS] && !this[PIPES].length) {
+          this[DISCARDED] = true;
+        }
         this[PAUSED] = false;
         this[FLOWING] = true;
         this.emit("resume");
-        if (this[BUFFER].length) this[FLUSH]();
-        else if (this[EOF]) this[MAYBE_EMIT_END]();
-        else this.emit("drain");
+        if (this[BUFFER].length)
+          this[FLUSH]();
+        else if (this[EOF])
+          this[MAYBE_EMIT_END]();
+        else
+          this.emit("drain");
       }
+      /**
+       * Resume the stream if it is currently in a paused state
+       *
+       * If called when there are no pipe destinations or `data` event listeners,
+       * this will place the stream in a "discarded" state, where all data will
+       * be thrown away. The discarded state is removed if a pipe destination or
+       * data handler is added, if pause() is called, or if any synchronous or
+       * asynchronous iteration is started.
+       */
       resume() {
         return this[RESUME]();
       }
+      /**
+       * Pause the stream
+       */
       pause() {
         this[FLOWING] = false;
         this[PAUSED] = true;
+        this[DISCARDED] = false;
       }
+      /**
+       * true if the stream has been forcibly destroyed
+       */
       get destroyed() {
         return this[DESTROYED];
       }
+      /**
+       * true if the stream is currently in a flowing state, meaning that
+       * any writes will be immediately emitted.
+       */
       get flowing() {
         return this[FLOWING];
       }
+      /**
+       * true if the stream is currently in a paused state
+       */
       get paused() {
         return this[PAUSED];
       }
       [BUFFERPUSH](chunk) {
-        if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1;
-        else this[BUFFERLENGTH] += chunk.length;
+        if (this[OBJECTMODE])
+          this[BUFFERLENGTH] += 1;
+        else
+          this[BUFFERLENGTH] += chunk.length;
         this[BUFFER].push(chunk);
       }
       [BUFFERSHIFT]() {
-        if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1;
-        else this[BUFFERLENGTH] -= this[BUFFER][0].length;
+        if (this[OBJECTMODE])
+          this[BUFFERLENGTH] -= 1;
+        else
+          this[BUFFERLENGTH] -= this[BUFFER][0].length;
         return this[BUFFER].shift();
       }
-      [FLUSH](noDrain) {
+      [FLUSH](noDrain = false) {
         do {
         } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length);
-        if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit("drain");
+        if (!noDrain && !this[BUFFER].length && !this[EOF])
+          this.emit("drain");
       }
       [FLUSHCHUNK](chunk) {
         this.emit("data", chunk);
-        return this.flowing;
+        return this[FLOWING];
       }
+      /**
+       * Pipe all data emitted by this stream into the destination provided.
+       *
+       * Triggers the flow of data.
+       */
       pipe(dest, opts) {
-        if (this[DESTROYED]) return;
+        if (this[DESTROYED])
+          return dest;
+        this[DISCARDED] = false;
         const ended = this[EMITTED_END];
         opts = opts || {};
-        if (dest === proc.stdout || dest === proc.stderr) opts.end = false;
-        else opts.end = opts.end !== false;
+        if (dest === proc.stdout || dest === proc.stderr)
+          opts.end = false;
+        else
+          opts.end = opts.end !== false;
         opts.proxyErrors = !!opts.proxyErrors;
         if (ended) {
-          if (opts.end) dest.end();
+          if (opts.end)
+            dest.end();
         } else {
-          this[PIPES].push(
-            !opts.proxyErrors ? new Pipe(this, dest, opts) : new PipeProxyErrors(this, dest, opts)
-          );
-          if (this[ASYNC]) defer(() => this[RESUME]());
-          else this[RESUME]();
+          this[PIPES].push(!opts.proxyErrors ? new Pipe(this, dest, opts) : new PipeProxyErrors(this, dest, opts));
+          if (this[ASYNC])
+            defer(() => this[RESUME]());
+          else
+            this[RESUME]();
         }
         return dest;
       }
+      /**
+       * Fully unhook a piped destination stream.
+       *
+       * If the destination stream was the only consumer of this stream (ie,
+       * there are no other piped destinations or `'data'` event listeners)
+       * then the flow of data will stop until there is another consumer or
+       * {@link Minipass#resume} is explicitly called.
+       */
       unpipe(dest) {
         const p = this[PIPES].find((p2) => p2.dest === dest);
         if (p) {
-          this[PIPES].splice(this[PIPES].indexOf(p), 1);
+          if (this[PIPES].length === 1) {
+            if (this[FLOWING] && this[DATALISTENERS] === 0) {
+              this[FLOWING] = false;
+            }
+            this[PIPES] = [];
+          } else
+            this[PIPES].splice(this[PIPES].indexOf(p), 1);
           p.unpipe();
         }
       }
-      addListener(ev, fn2) {
-        return this.on(ev, fn2);
+      /**
+       * Alias for {@link Minipass#on}
+       */
+      addListener(ev, handler) {
+        return this.on(ev, handler);
       }
-      on(ev, fn2) {
-        const ret = super.on(ev, fn2);
-        if (ev === "data" && !this[PIPES].length && !this.flowing) this[RESUME]();
-        else if (ev === "readable" && this[BUFFERLENGTH] !== 0)
+      /**
+       * Mostly identical to `EventEmitter.on`, with the following
+       * behavior differences to prevent data loss and unnecessary hangs:
+       *
+       * - Adding a 'data' event handler will trigger the flow of data
+       *
+       * - Adding a 'readable' event handler when there is data waiting to be read
+       *   will cause 'readable' to be emitted immediately.
+       *
+       * - Adding an 'endish' event handler ('end', 'finish', etc.) which has
+       *   already passed will cause the event to be emitted immediately and all
+       *   handlers removed.
+       *
+       * - Adding an 'error' event handler after an error has been emitted will
+       *   cause the event to be re-emitted immediately with the error previously
+       *   raised.
+       */
+      on(ev, handler) {
+        const ret = super.on(ev, handler);
+        if (ev === "data") {
+          this[DISCARDED] = false;
+          this[DATALISTENERS]++;
+          if (!this[PIPES].length && !this[FLOWING]) {
+            this[RESUME]();
+          }
+        } else if (ev === "readable" && this[BUFFERLENGTH] !== 0) {
           super.emit("readable");
-        else if (isEndish(ev) && this[EMITTED_END]) {
+        } else if (isEndish(ev) && this[EMITTED_END]) {
           super.emit(ev);
           this.removeAllListeners(ev);
         } else if (ev === "error" && this[EMITTED_ERROR]) {
-          if (this[ASYNC]) defer(() => fn2.call(this, this[EMITTED_ERROR]));
-          else fn2.call(this, this[EMITTED_ERROR]);
+          const h = handler;
+          if (this[ASYNC])
+            defer(() => h.call(this, this[EMITTED_ERROR]));
+          else
+            h.call(this, this[EMITTED_ERROR]);
+        }
+        return ret;
+      }
+      /**
+       * Alias for {@link Minipass#off}
+       */
+      removeListener(ev, handler) {
+        return this.off(ev, handler);
+      }
+      /**
+       * Mostly identical to `EventEmitter.off`
+       *
+       * If a 'data' event handler is removed, and it was the last consumer
+       * (ie, there are no pipe destinations or other 'data' event listeners),
+       * then the flow of data will stop until there is another consumer or
+       * {@link Minipass#resume} is explicitly called.
+       */
+      off(ev, handler) {
+        const ret = super.off(ev, handler);
+        if (ev === "data") {
+          this[DATALISTENERS] = this.listeners("data").length;
+          if (this[DATALISTENERS] === 0 && !this[DISCARDED] && !this[PIPES].length) {
+            this[FLOWING] = false;
+          }
+        }
+        return ret;
+      }
+      /**
+       * Mostly identical to `EventEmitter.removeAllListeners`
+       *
+       * If all 'data' event handlers are removed, and they were the last consumer
+       * (ie, there are no pipe destinations), then the flow of data will stop
+       * until there is another consumer or {@link Minipass#resume} is explicitly
+       * called.
+       */
+      removeAllListeners(ev) {
+        const ret = super.removeAllListeners(ev);
+        if (ev === "data" || ev === void 0) {
+          this[DATALISTENERS] = 0;
+          if (!this[DISCARDED] && !this[PIPES].length) {
+            this[FLOWING] = false;
+          }
         }
         return ret;
       }
+      /**
+       * true if the 'end' event has been emitted
+       */
       get emittedEnd() {
         return this[EMITTED_END];
       }
@@ -12203,20 +12502,47 @@ var require_minipass = __commonJS({
           this.emit("end");
           this.emit("prefinish");
           this.emit("finish");
-          if (this[CLOSED]) this.emit("close");
+          if (this[CLOSED])
+            this.emit("close");
           this[EMITTING_END] = false;
         }
       }
-      emit(ev, data, ...extra) {
-        if (ev !== "error" && ev !== "close" && ev !== DESTROYED && this[DESTROYED])
-          return;
-        else if (ev === "data") {
-          return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? defer(() => this[EMITDATA](data)) : this[EMITDATA](data);
+      /**
+       * Mostly identical to `EventEmitter.emit`, with the following
+       * behavior differences to prevent data loss and unnecessary hangs:
+       *
+       * If the stream has been destroyed, and the event is something other
+       * than 'close' or 'error', then `false` is returned and no handlers
+       * are called.
+       *
+       * If the event is 'end', and has already been emitted, then the event
+       * is ignored. If the stream is in a paused or non-flowing state, then
+       * the event will be deferred until data flow resumes. If the stream is
+       * async, then handlers will be called on the next tick rather than
+       * immediately.
+       *
+       * If the event is 'close', and 'end' has not yet been emitted, then
+       * the event will be deferred until after 'end' is emitted.
+       *
+       * If the event is 'error', and an AbortSignal was provided for the stream,
+       * and there are no listeners, then the event is ignored, matching the
+       * behavior of node core streams in the presense of an AbortSignal.
+       *
+       * If the event is 'finish' or 'prefinish', then all listeners will be
+       * removed after emitting the event, to prevent double-firing.
+       */
+      emit(ev, ...args) {
+        const data = args[0];
+        if (ev !== "error" && ev !== "close" && ev !== DESTROYED && this[DESTROYED]) {
+          return false;
+        } else if (ev === "data") {
+          return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? (defer(() => this[EMITDATA](data)), true) : this[EMITDATA](data);
         } else if (ev === "end") {
           return this[EMITEND]();
         } else if (ev === "close") {
           this[CLOSED] = true;
-          if (!this[EMITTED_END] && !this[DESTROYED]) return;
+          if (!this[EMITTED_END] && !this[DESTROYED])
+            return false;
           const ret2 = super.emit("close");
           this.removeAllListeners("close");
           return ret2;
@@ -12235,24 +12561,25 @@ var require_minipass = __commonJS({
           this.removeAllListeners(ev);
           return ret2;
         }
-        const ret = super.emit(ev, data, ...extra);
+        const ret = super.emit(ev, ...args);
         this[MAYBE_EMIT_END]();
         return ret;
       }
       [EMITDATA](data) {
         for (const p of this[PIPES]) {
-          if (p.dest.write(data) === false) this.pause();
+          if (p.dest.write(data) === false)
+            this.pause();
         }
-        const ret = super.emit("data", data);
+        const ret = this[DISCARDED] ? false : super.emit("data", data);
         this[MAYBE_EMIT_END]();
         return ret;
       }
       [EMITEND]() {
-        if (this[EMITTED_END]) return;
+        if (this[EMITTED_END])
+          return false;
         this[EMITTED_END] = true;
         this.readable = false;
-        if (this[ASYNC]) defer(() => this[EMITEND2]());
-        else this[EMITEND2]();
+        return this[ASYNC] ? (defer(() => this[EMITEND2]()), true) : this[EMITEND2]();
       }
       [EMITEND2]() {
         if (this[DECODER]) {
@@ -12261,7 +12588,8 @@ var require_minipass = __commonJS({
             for (const p of this[PIPES]) {
               p.dest.write(data);
             }
-            super.emit("data", data);
+            if (!this[DISCARDED])
+              super.emit("data", data);
           }
         }
         for (const p of this[PIPES]) {
@@ -12271,71 +12599,96 @@ var require_minipass = __commonJS({
         this.removeAllListeners("end");
         return ret;
       }
-      // const all = await stream.collect()
-      collect() {
-        const buf = [];
-        if (!this[OBJECTMODE]) buf.dataLength = 0;
+      /**
+       * Return a Promise that resolves to an array of all emitted data once
+       * the stream ends.
+       */
+      async collect() {
+        const buf = Object.assign([], {
+          dataLength: 0
+        });
+        if (!this[OBJECTMODE])
+          buf.dataLength = 0;
         const p = this.promise();
         this.on("data", (c) => {
           buf.push(c);
-          if (!this[OBJECTMODE]) buf.dataLength += c.length;
+          if (!this[OBJECTMODE])
+            buf.dataLength += c.length;
         });
-        return p.then(() => buf);
+        await p;
+        return buf;
       }
-      // const data = await stream.concat()
-      concat() {
-        return this[OBJECTMODE] ? Promise.reject(new Error("cannot concat in objectMode")) : this.collect().then(
-          (buf) => this[OBJECTMODE] ? Promise.reject(new Error("cannot concat in objectMode")) : this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength)
-        );
+      /**
+       * Return a Promise that resolves to the concatenation of all emitted data
+       * once the stream ends.
+       *
+       * Not allowed on objectMode streams.
+       */
+      async concat() {
+        if (this[OBJECTMODE]) {
+          throw new Error("cannot concat in objectMode");
+        }
+        const buf = await this.collect();
+        return this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength);
       }
-      // stream.promise().then(() => done, er => emitted error)
-      promise() {
-        return new Promise((resolve, reject) => {
+      /**
+       * Return a void Promise that resolves once the stream ends.
+       */
+      async promise() {
+        return new Promise((resolve2, reject) => {
           this.on(DESTROYED, () => reject(new Error("stream destroyed")));
           this.on("error", (er) => reject(er));
-          this.on("end", () => resolve());
+          this.on("end", () => resolve2());
         });
       }
-      // for await (let chunk of stream)
-      [ASYNCITERATOR]() {
-        let stopped = false;
-        const stop = () => {
+      /**
+       * Asynchronous `for await of` iteration.
+       *
+       * This will continue emitting all chunks until the stream terminates.
+       */
+      [Symbol.asyncIterator]() {
+        this[DISCARDED] = false;
+        let stopped = false;
+        const stop = async () => {
           this.pause();
           stopped = true;
-          return Promise.resolve({ done: true });
+          return { value: void 0, done: true };
         };
         const next = () => {
-          if (stopped) return stop();
+          if (stopped)
+            return stop();
           const res = this.read();
-          if (res !== null) return Promise.resolve({ done: false, value: res });
-          if (this[EOF]) return stop();
-          let resolve = null;
-          let reject = null;
+          if (res !== null)
+            return Promise.resolve({ done: false, value: res });
+          if (this[EOF])
+            return stop();
+          let resolve2;
+          let reject;
           const onerr = (er) => {
-            this.removeListener("data", ondata);
-            this.removeListener("end", onend);
-            this.removeListener(DESTROYED, ondestroy);
+            this.off("data", ondata);
+            this.off("end", onend);
+            this.off(DESTROYED, ondestroy);
             stop();
             reject(er);
           };
           const ondata = (value) => {
-            this.removeListener("error", onerr);
-            this.removeListener("end", onend);
-            this.removeListener(DESTROYED, ondestroy);
+            this.off("error", onerr);
+            this.off("end", onend);
+            this.off(DESTROYED, ondestroy);
             this.pause();
-            resolve({ value, done: !!this[EOF] });
+            resolve2({ value, done: !!this[EOF] });
           };
           const onend = () => {
-            this.removeListener("error", onerr);
-            this.removeListener("data", ondata);
-            this.removeListener(DESTROYED, ondestroy);
+            this.off("error", onerr);
+            this.off("data", ondata);
+            this.off(DESTROYED, ondestroy);
             stop();
-            resolve({ done: true });
+            resolve2({ done: true, value: void 0 });
           };
           const ondestroy = () => onerr(new Error("stream destroyed"));
           return new Promise((res2, rej) => {
             reject = rej;
-            resolve = res2;
+            resolve2 = res2;
             this.once(DESTROYED, ondestroy);
             this.once("error", onerr);
             this.once("end", onend);
@@ -12346,26 +12699,33 @@ var require_minipass = __commonJS({
           next,
           throw: stop,
           return: stop,
-          [ASYNCITERATOR]() {
+          [Symbol.asyncIterator]() {
             return this;
           }
         };
       }
-      // for (let chunk of stream)
-      [ITERATOR]() {
+      /**
+       * Synchronous `for of` iteration.
+       *
+       * The iteration will terminate when the internal buffer runs out, even
+       * if the stream has not yet terminated.
+       */
+      [Symbol.iterator]() {
+        this[DISCARDED] = false;
         let stopped = false;
         const stop = () => {
           this.pause();
-          this.removeListener(ERROR, stop);
-          this.removeListener(DESTROYED, stop);
-          this.removeListener("end", stop);
+          this.off(ERROR, stop);
+          this.off(DESTROYED, stop);
+          this.off("end", stop);
           stopped = true;
-          return { done: true };
+          return { done: true, value: void 0 };
         };
         const next = () => {
-          if (stopped) return stop();
+          if (stopped)
+            return stop();
           const value = this.read();
-          return value === null ? stop() : { value };
+          return value === null ? stop() : { done: false, value };
         };
         this.once("end", stop);
         this.once(ERROR, stop);
@@ -12374,1093 +12734,1304 @@ var require_minipass = __commonJS({
           next,
           throw: stop,
           return: stop,
-          [ITERATOR]() {
+          [Symbol.iterator]() {
             return this;
           }
         };
       }
+      /**
+       * Destroy a stream, preventing it from being used for any further purpose.
+       *
+       * If the stream has a `close()` method, then it will be called on
+       * destruction.
+       *
+       * After destruction, any attempt to write data, read data, or emit most
+       * events will be ignored.
+       *
+       * If an error argument is provided, then it will be emitted in an
+       * 'error' event.
+       */
       destroy(er) {
         if (this[DESTROYED]) {
-          if (er) this.emit("error", er);
-          else this.emit(DESTROYED);
+          if (er)
+            this.emit("error", er);
+          else
+            this.emit(DESTROYED);
           return this;
         }
         this[DESTROYED] = true;
+        this[DISCARDED] = true;
         this[BUFFER].length = 0;
         this[BUFFERLENGTH] = 0;
-        if (typeof this.close === "function" && !this[CLOSED]) this.close();
-        if (er) this.emit("error", er);
-        else this.emit(DESTROYED);
+        const wc = this;
+        if (typeof wc.close === "function" && !this[CLOSED])
+          wc.close();
+        if (er)
+          this.emit("error", er);
+        else
+          this.emit(DESTROYED);
         return this;
       }
-      static isStream(s) {
-        return !!s && (s instanceof _Minipass || s instanceof Stream || s instanceof EE && // readable
-        (typeof s.pipe === "function" || // writable
-        typeof s.write === "function" && typeof s.end === "function"));
+      /**
+       * Alias for {@link isStream}
+       *
+       * Former export location, maintained for backwards compatibility.
+       *
+       * @deprecated
+       */
+      static get isStream() {
+        return isStream;
       }
     };
-    exports2.Minipass = Minipass;
-  }
-});
-
-// .yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/constants.js
-var require_constants5 = __commonJS({
-  ".yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/constants.js"(exports2, module2) {
-    var realZlibConstants = require("zlib").constants || /* istanbul ignore next */
-    { ZLIB_VERNUM: 4736 };
-    module2.exports = Object.freeze(Object.assign(/* @__PURE__ */ Object.create(null), {
-      Z_NO_FLUSH: 0,
-      Z_PARTIAL_FLUSH: 1,
-      Z_SYNC_FLUSH: 2,
-      Z_FULL_FLUSH: 3,
-      Z_FINISH: 4,
-      Z_BLOCK: 5,
-      Z_OK: 0,
-      Z_STREAM_END: 1,
-      Z_NEED_DICT: 2,
-      Z_ERRNO: -1,
-      Z_STREAM_ERROR: -2,
-      Z_DATA_ERROR: -3,
-      Z_MEM_ERROR: -4,
-      Z_BUF_ERROR: -5,
-      Z_VERSION_ERROR: -6,
-      Z_NO_COMPRESSION: 0,
-      Z_BEST_SPEED: 1,
-      Z_BEST_COMPRESSION: 9,
-      Z_DEFAULT_COMPRESSION: -1,
-      Z_FILTERED: 1,
-      Z_HUFFMAN_ONLY: 2,
-      Z_RLE: 3,
-      Z_FIXED: 4,
-      Z_DEFAULT_STRATEGY: 0,
-      DEFLATE: 1,
-      INFLATE: 2,
-      GZIP: 3,
-      GUNZIP: 4,
-      DEFLATERAW: 5,
-      INFLATERAW: 6,
-      UNZIP: 7,
-      BROTLI_DECODE: 8,
-      BROTLI_ENCODE: 9,
-      Z_MIN_WINDOWBITS: 8,
-      Z_MAX_WINDOWBITS: 15,
-      Z_DEFAULT_WINDOWBITS: 15,
-      Z_MIN_CHUNK: 64,
-      Z_MAX_CHUNK: Infinity,
-      Z_DEFAULT_CHUNK: 16384,
-      Z_MIN_MEMLEVEL: 1,
-      Z_MAX_MEMLEVEL: 9,
-      Z_DEFAULT_MEMLEVEL: 8,
-      Z_MIN_LEVEL: -1,
-      Z_MAX_LEVEL: 9,
-      Z_DEFAULT_LEVEL: -1,
-      BROTLI_OPERATION_PROCESS: 0,
-      BROTLI_OPERATION_FLUSH: 1,
-      BROTLI_OPERATION_FINISH: 2,
-      BROTLI_OPERATION_EMIT_METADATA: 3,
-      BROTLI_MODE_GENERIC: 0,
-      BROTLI_MODE_TEXT: 1,
-      BROTLI_MODE_FONT: 2,
-      BROTLI_DEFAULT_MODE: 0,
-      BROTLI_MIN_QUALITY: 0,
-      BROTLI_MAX_QUALITY: 11,
-      BROTLI_DEFAULT_QUALITY: 11,
-      BROTLI_MIN_WINDOW_BITS: 10,
-      BROTLI_MAX_WINDOW_BITS: 24,
-      BROTLI_LARGE_MAX_WINDOW_BITS: 30,
-      BROTLI_DEFAULT_WINDOW: 22,
-      BROTLI_MIN_INPUT_BLOCK_BITS: 16,
-      BROTLI_MAX_INPUT_BLOCK_BITS: 24,
-      BROTLI_PARAM_MODE: 0,
-      BROTLI_PARAM_QUALITY: 1,
-      BROTLI_PARAM_LGWIN: 2,
-      BROTLI_PARAM_LGBLOCK: 3,
-      BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,
-      BROTLI_PARAM_SIZE_HINT: 5,
-      BROTLI_PARAM_LARGE_WINDOW: 6,
-      BROTLI_PARAM_NPOSTFIX: 7,
-      BROTLI_PARAM_NDIRECT: 8,
-      BROTLI_DECODER_RESULT_ERROR: 0,
-      BROTLI_DECODER_RESULT_SUCCESS: 1,
-      BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,
-      BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,
-      BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,
-      BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,
-      BROTLI_DECODER_NO_ERROR: 0,
-      BROTLI_DECODER_SUCCESS: 1,
-      BROTLI_DECODER_NEEDS_MORE_INPUT: 2,
-      BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,
-      BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,
-      BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,
-      BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,
-      BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,
-      BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,
-      BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,
-      BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,
-      BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,
-      BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,
-      BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,
-      BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,
-      BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,
-      BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,
-      BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,
-      BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,
-      BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,
-      BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,
-      BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,
-      BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,
-      BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,
-      BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,
-      BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,
-      BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,
-      BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,
-      BROTLI_DECODER_ERROR_UNREACHABLE: -31
-    }, realZlibConstants));
   }
 });
 
-// .yarn/cache/minipass-npm-3.3.6-b8d93a945b-a114746943.zip/node_modules/minipass/index.js
-var require_minipass2 = __commonJS({
-  ".yarn/cache/minipass-npm-3.3.6-b8d93a945b-a114746943.zip/node_modules/minipass/index.js"(exports2, module2) {
-    "use strict";
-    var proc = typeof process === "object" && process ? process : {
-      stdout: null,
-      stderr: null
-    };
-    var EE = require("events");
-    var Stream = require("stream");
-    var SD = require("string_decoder").StringDecoder;
-    var EOF = Symbol("EOF");
-    var MAYBE_EMIT_END = Symbol("maybeEmitEnd");
-    var EMITTED_END = Symbol("emittedEnd");
-    var EMITTING_END = Symbol("emittingEnd");
-    var EMITTED_ERROR = Symbol("emittedError");
-    var CLOSED = Symbol("closed");
-    var READ = Symbol("read");
-    var FLUSH = Symbol("flush");
-    var FLUSHCHUNK = Symbol("flushChunk");
-    var ENCODING = Symbol("encoding");
-    var DECODER = Symbol("decoder");
-    var FLOWING = Symbol("flowing");
-    var PAUSED = Symbol("paused");
-    var RESUME = Symbol("resume");
-    var BUFFERLENGTH = Symbol("bufferLength");
-    var BUFFERPUSH = Symbol("bufferPush");
-    var BUFFERSHIFT = Symbol("bufferShift");
-    var OBJECTMODE = Symbol("objectMode");
-    var DESTROYED = Symbol("destroyed");
-    var EMITDATA = Symbol("emitData");
-    var EMITEND = Symbol("emitEnd");
-    var EMITEND2 = Symbol("emitEnd2");
-    var ASYNC = Symbol("async");
-    var defer = (fn2) => Promise.resolve().then(fn2);
-    var doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== "1";
-    var ASYNCITERATOR = doIter && Symbol.asyncIterator || Symbol("asyncIterator not implemented");
-    var ITERATOR = doIter && Symbol.iterator || Symbol("iterator not implemented");
-    var isEndish = (ev) => ev === "end" || ev === "finish" || ev === "prefinish";
-    var isArrayBuffer = (b) => b instanceof ArrayBuffer || typeof b === "object" && b.constructor && b.constructor.name === "ArrayBuffer" && b.byteLength >= 0;
-    var isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
-    var Pipe = class {
-      constructor(src, dest, opts) {
-        this.src = src;
-        this.dest = dest;
-        this.opts = opts;
-        this.ondrain = () => src[RESUME]();
-        dest.on("drain", this.ondrain);
-      }
-      unpipe() {
-        this.dest.removeListener("drain", this.ondrain);
-      }
-      // istanbul ignore next - only here for the prototype
-      proxyErrors() {
-      }
-      end() {
-        this.unpipe();
-        if (this.opts.end)
-          this.dest.end();
+// .yarn/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-c25b6dc159.zip/node_modules/@isaacs/fs-minipass/dist/esm/index.js
+var import_events2, import_fs2, writev, _autoClose, _close, _ended, _fd, _finished, _flags, _flush, _handleChunk, _makeBuf, _mode, _needDrain, _onerror, _onopen, _onread, _onwrite, _open, _path, _pos, _queue, _read, _readSize, _reading, _remain, _size, _write, _writing, _defaultFlag, _errored, ReadStream, ReadStreamSync, WriteStream, WriteStreamSync;
+var init_esm2 = __esm({
+  ".yarn/cache/@isaacs-fs-minipass-npm-4.0.1-677026e841-c25b6dc159.zip/node_modules/@isaacs/fs-minipass/dist/esm/index.js"() {
+    import_events2 = __toESM(require("events"), 1);
+    import_fs2 = __toESM(require("fs"), 1);
+    init_esm();
+    writev = import_fs2.default.writev;
+    _autoClose = Symbol("_autoClose");
+    _close = Symbol("_close");
+    _ended = Symbol("_ended");
+    _fd = Symbol("_fd");
+    _finished = Symbol("_finished");
+    _flags = Symbol("_flags");
+    _flush = Symbol("_flush");
+    _handleChunk = Symbol("_handleChunk");
+    _makeBuf = Symbol("_makeBuf");
+    _mode = Symbol("_mode");
+    _needDrain = Symbol("_needDrain");
+    _onerror = Symbol("_onerror");
+    _onopen = Symbol("_onopen");
+    _onread = Symbol("_onread");
+    _onwrite = Symbol("_onwrite");
+    _open = Symbol("_open");
+    _path = Symbol("_path");
+    _pos = Symbol("_pos");
+    _queue = Symbol("_queue");
+    _read = Symbol("_read");
+    _readSize = Symbol("_readSize");
+    _reading = Symbol("_reading");
+    _remain = Symbol("_remain");
+    _size = Symbol("_size");
+    _write = Symbol("_write");
+    _writing = Symbol("_writing");
+    _defaultFlag = Symbol("_defaultFlag");
+    _errored = Symbol("_errored");
+    ReadStream = class extends Minipass {
+      [_errored] = false;
+      [_fd];
+      [_path];
+      [_readSize];
+      [_reading] = false;
+      [_size];
+      [_remain];
+      [_autoClose];
+      constructor(path16, opt) {
+        opt = opt || {};
+        super(opt);
+        this.readable = true;
+        this.writable = false;
+        if (typeof path16 !== "string") {
+          throw new TypeError("path must be a string");
+        }
+        this[_errored] = false;
+        this[_fd] = typeof opt.fd === "number" ? opt.fd : void 0;
+        this[_path] = path16;
+        this[_readSize] = opt.readSize || 16 * 1024 * 1024;
+        this[_reading] = false;
+        this[_size] = typeof opt.size === "number" ? opt.size : Infinity;
+        this[_remain] = this[_size];
+        this[_autoClose] = typeof opt.autoClose === "boolean" ? opt.autoClose : true;
+        if (typeof this[_fd] === "number") {
+          this[_read]();
+        } else {
+          this[_open]();
+        }
       }
-    };
-    var PipeProxyErrors = class extends Pipe {
-      unpipe() {
-        this.src.removeListener("error", this.proxyErrors);
-        super.unpipe();
+      get fd() {
+        return this[_fd];
       }
-      constructor(src, dest, opts) {
-        super(src, dest, opts);
-        this.proxyErrors = (er) => dest.emit("error", er);
-        src.on("error", this.proxyErrors);
+      get path() {
+        return this[_path];
       }
-    };
-    module2.exports = class Minipass extends Stream {
-      constructor(options) {
-        super();
-        this[FLOWING] = false;
-        this[PAUSED] = false;
-        this.pipes = [];
-        this.buffer = [];
-        this[OBJECTMODE] = options && options.objectMode || false;
-        if (this[OBJECTMODE])
-          this[ENCODING] = null;
-        else
-          this[ENCODING] = options && options.encoding || null;
-        if (this[ENCODING] === "buffer")
-          this[ENCODING] = null;
-        this[ASYNC] = options && !!options.async || false;
-        this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null;
-        this[EOF] = false;
-        this[EMITTED_END] = false;
-        this[EMITTING_END] = false;
-        this[CLOSED] = false;
-        this[EMITTED_ERROR] = null;
-        this.writable = true;
-        this.readable = true;
-        this[BUFFERLENGTH] = 0;
-        this[DESTROYED] = false;
+      //@ts-ignore
+      write() {
+        throw new TypeError("this is a readable stream");
       }
-      get bufferLength() {
-        return this[BUFFERLENGTH];
+      //@ts-ignore
+      end() {
+        throw new TypeError("this is a readable stream");
       }
-      get encoding() {
-        return this[ENCODING];
+      [_open]() {
+        import_fs2.default.open(this[_path], "r", (er, fd) => this[_onopen](er, fd));
       }
-      set encoding(enc) {
-        if (this[OBJECTMODE])
-          throw new Error("cannot set encoding in objectMode");
-        if (this[ENCODING] && enc !== this[ENCODING] && (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))
-          throw new Error("cannot change encoding");
-        if (this[ENCODING] !== enc) {
-          this[DECODER] = enc ? new SD(enc) : null;
-          if (this.buffer.length)
-            this.buffer = this.buffer.map((chunk) => this[DECODER].write(chunk));
+      [_onopen](er, fd) {
+        if (er) {
+          this[_onerror](er);
+        } else {
+          this[_fd] = fd;
+          this.emit("open", fd);
+          this[_read]();
         }
-        this[ENCODING] = enc;
       }
-      setEncoding(enc) {
-        this.encoding = enc;
+      [_makeBuf]() {
+        return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]));
       }
-      get objectMode() {
-        return this[OBJECTMODE];
+      [_read]() {
+        if (!this[_reading]) {
+          this[_reading] = true;
+          const buf = this[_makeBuf]();
+          if (buf.length === 0) {
+            return process.nextTick(() => this[_onread](null, 0, buf));
+          }
+          import_fs2.default.read(this[_fd], buf, 0, buf.length, null, (er, br, b) => this[_onread](er, br, b));
+        }
       }
-      set objectMode(om) {
-        this[OBJECTMODE] = this[OBJECTMODE] || !!om;
+      [_onread](er, br, buf) {
+        this[_reading] = false;
+        if (er) {
+          this[_onerror](er);
+        } else if (this[_handleChunk](br, buf)) {
+          this[_read]();
+        }
       }
-      get ["async"]() {
-        return this[ASYNC];
+      [_close]() {
+        if (this[_autoClose] && typeof this[_fd] === "number") {
+          const fd = this[_fd];
+          this[_fd] = void 0;
+          import_fs2.default.close(fd, (er) => er ? this.emit("error", er) : this.emit("close"));
+        }
       }
-      set ["async"](a) {
-        this[ASYNC] = this[ASYNC] || !!a;
+      [_onerror](er) {
+        this[_reading] = true;
+        this[_close]();
+        this.emit("error", er);
       }
-      write(chunk, encoding, cb) {
-        if (this[EOF])
-          throw new Error("write after end");
-        if (this[DESTROYED]) {
-          this.emit("error", Object.assign(
-            new Error("Cannot call write after a stream was destroyed"),
-            { code: "ERR_STREAM_DESTROYED" }
-          ));
-          return true;
+      [_handleChunk](br, buf) {
+        let ret = false;
+        this[_remain] -= br;
+        if (br > 0) {
+          ret = super.write(br < buf.length ? buf.subarray(0, br) : buf);
         }
-        if (typeof encoding === "function")
-          cb = encoding, encoding = "utf8";
-        if (!encoding)
-          encoding = "utf8";
-        const fn2 = this[ASYNC] ? defer : (f) => f();
-        if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
-          if (isArrayBufferView(chunk))
-            chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
-          else if (isArrayBuffer(chunk))
-            chunk = Buffer.from(chunk);
-          else if (typeof chunk !== "string")
-            this.objectMode = true;
-        }
-        if (this[OBJECTMODE]) {
-          if (this.flowing && this[BUFFERLENGTH] !== 0)
-            this[FLUSH](true);
-          if (this.flowing)
-            this.emit("data", chunk);
-          else
-            this[BUFFERPUSH](chunk);
-          if (this[BUFFERLENGTH] !== 0)
-            this.emit("readable");
-          if (cb)
-            fn2(cb);
-          return this.flowing;
-        }
-        if (!chunk.length) {
-          if (this[BUFFERLENGTH] !== 0)
-            this.emit("readable");
-          if (cb)
-            fn2(cb);
-          return this.flowing;
-        }
-        if (typeof chunk === "string" && // unless it is a string already ready for us to use
-        !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {
-          chunk = Buffer.from(chunk, encoding);
+        if (br === 0 || this[_remain] <= 0) {
+          ret = false;
+          this[_close]();
+          super.end();
         }
-        if (Buffer.isBuffer(chunk) && this[ENCODING])
-          chunk = this[DECODER].write(chunk);
-        if (this.flowing && this[BUFFERLENGTH] !== 0)
-          this[FLUSH](true);
-        if (this.flowing)
-          this.emit("data", chunk);
-        else
-          this[BUFFERPUSH](chunk);
-        if (this[BUFFERLENGTH] !== 0)
-          this.emit("readable");
-        if (cb)
-          fn2(cb);
-        return this.flowing;
+        return ret;
       }
-      read(n) {
-        if (this[DESTROYED])
-          return null;
-        if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {
-          this[MAYBE_EMIT_END]();
-          return null;
+      emit(ev, ...args) {
+        switch (ev) {
+          case "prefinish":
+          case "finish":
+            return false;
+          case "drain":
+            if (typeof this[_fd] === "number") {
+              this[_read]();
+            }
+            return false;
+          case "error":
+            if (this[_errored]) {
+              return false;
+            }
+            this[_errored] = true;
+            return super.emit(ev, ...args);
+          default:
+            return super.emit(ev, ...args);
         }
-        if (this[OBJECTMODE])
-          n = null;
-        if (this.buffer.length > 1 && !this[OBJECTMODE]) {
-          if (this.encoding)
-            this.buffer = [this.buffer.join("")];
-          else
-            this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])];
+      }
+    };
+    ReadStreamSync = class extends ReadStream {
+      [_open]() {
+        let threw = true;
+        try {
+          this[_onopen](null, import_fs2.default.openSync(this[_path], "r"));
+          threw = false;
+        } finally {
+          if (threw) {
+            this[_close]();
+          }
         }
-        const ret = this[READ](n || null, this.buffer[0]);
-        this[MAYBE_EMIT_END]();
-        return ret;
       }
-      [READ](n, chunk) {
-        if (n === chunk.length || n === null)
-          this[BUFFERSHIFT]();
-        else {
-          this.buffer[0] = chunk.slice(n);
-          chunk = chunk.slice(0, n);
-          this[BUFFERLENGTH] -= n;
+      [_read]() {
+        let threw = true;
+        try {
+          if (!this[_reading]) {
+            this[_reading] = true;
+            do {
+              const buf = this[_makeBuf]();
+              const br = buf.length === 0 ? 0 : import_fs2.default.readSync(this[_fd], buf, 0, buf.length, null);
+              if (!this[_handleChunk](br, buf)) {
+                break;
+              }
+            } while (true);
+            this[_reading] = false;
+          }
+          threw = false;
+        } finally {
+          if (threw) {
+            this[_close]();
+          }
         }
-        this.emit("data", chunk);
-        if (!this.buffer.length && !this[EOF])
-          this.emit("drain");
-        return chunk;
       }
-      end(chunk, encoding, cb) {
-        if (typeof chunk === "function")
-          cb = chunk, chunk = null;
-        if (typeof encoding === "function")
-          cb = encoding, encoding = "utf8";
-        if (chunk)
-          this.write(chunk, encoding);
-        if (cb)
-          this.once("end", cb);
-        this[EOF] = true;
-        this.writable = false;
-        if (this.flowing || !this[PAUSED])
-          this[MAYBE_EMIT_END]();
-        return this;
+      [_close]() {
+        if (this[_autoClose] && typeof this[_fd] === "number") {
+          const fd = this[_fd];
+          this[_fd] = void 0;
+          import_fs2.default.closeSync(fd);
+          this.emit("close");
+        }
       }
-      // don't let the internal resume be overwritten
-      [RESUME]() {
-        if (this[DESTROYED])
-          return;
-        this[PAUSED] = false;
-        this[FLOWING] = true;
-        this.emit("resume");
-        if (this.buffer.length)
-          this[FLUSH]();
-        else if (this[EOF])
-          this[MAYBE_EMIT_END]();
-        else
-          this.emit("drain");
+    };
+    WriteStream = class extends import_events2.default {
+      readable = false;
+      writable = true;
+      [_errored] = false;
+      [_writing] = false;
+      [_ended] = false;
+      [_queue] = [];
+      [_needDrain] = false;
+      [_path];
+      [_mode];
+      [_autoClose];
+      [_fd];
+      [_defaultFlag];
+      [_flags];
+      [_finished] = false;
+      [_pos];
+      constructor(path16, opt) {
+        opt = opt || {};
+        super(opt);
+        this[_path] = path16;
+        this[_fd] = typeof opt.fd === "number" ? opt.fd : void 0;
+        this[_mode] = opt.mode === void 0 ? 438 : opt.mode;
+        this[_pos] = typeof opt.start === "number" ? opt.start : void 0;
+        this[_autoClose] = typeof opt.autoClose === "boolean" ? opt.autoClose : true;
+        const defaultFlag = this[_pos] !== void 0 ? "r+" : "w";
+        this[_defaultFlag] = opt.flags === void 0;
+        this[_flags] = opt.flags === void 0 ? defaultFlag : opt.flags;
+        if (this[_fd] === void 0) {
+          this[_open]();
+        }
       }
-      resume() {
-        return this[RESUME]();
+      emit(ev, ...args) {
+        if (ev === "error") {
+          if (this[_errored]) {
+            return false;
+          }
+          this[_errored] = true;
+        }
+        return super.emit(ev, ...args);
       }
-      pause() {
-        this[FLOWING] = false;
-        this[PAUSED] = true;
+      get fd() {
+        return this[_fd];
       }
-      get destroyed() {
-        return this[DESTROYED];
+      get path() {
+        return this[_path];
       }
-      get flowing() {
-        return this[FLOWING];
+      [_onerror](er) {
+        this[_close]();
+        this[_writing] = true;
+        this.emit("error", er);
       }
-      get paused() {
-        return this[PAUSED];
+      [_open]() {
+        import_fs2.default.open(this[_path], this[_flags], this[_mode], (er, fd) => this[_onopen](er, fd));
       }
-      [BUFFERPUSH](chunk) {
-        if (this[OBJECTMODE])
-          this[BUFFERLENGTH] += 1;
-        else
-          this[BUFFERLENGTH] += chunk.length;
-        this.buffer.push(chunk);
+      [_onopen](er, fd) {
+        if (this[_defaultFlag] && this[_flags] === "r+" && er && er.code === "ENOENT") {
+          this[_flags] = "w";
+          this[_open]();
+        } else if (er) {
+          this[_onerror](er);
+        } else {
+          this[_fd] = fd;
+          this.emit("open", fd);
+          if (!this[_writing]) {
+            this[_flush]();
+          }
+        }
       }
-      [BUFFERSHIFT]() {
-        if (this.buffer.length) {
-          if (this[OBJECTMODE])
-            this[BUFFERLENGTH] -= 1;
-          else
-            this[BUFFERLENGTH] -= this.buffer[0].length;
+      end(buf, enc) {
+        if (buf) {
+          this.write(buf, enc);
+        }
+        this[_ended] = true;
+        if (!this[_writing] && !this[_queue].length && typeof this[_fd] === "number") {
+          this[_onwrite](null, 0);
         }
-        return this.buffer.shift();
+        return this;
       }
-      [FLUSH](noDrain) {
-        do {
-        } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()));
-        if (!noDrain && !this.buffer.length && !this[EOF])
-          this.emit("drain");
+      write(buf, enc) {
+        if (typeof buf === "string") {
+          buf = Buffer.from(buf, enc);
+        }
+        if (this[_ended]) {
+          this.emit("error", new Error("write() after end()"));
+          return false;
+        }
+        if (this[_fd] === void 0 || this[_writing] || this[_queue].length) {
+          this[_queue].push(buf);
+          this[_needDrain] = true;
+          return false;
+        }
+        this[_writing] = true;
+        this[_write](buf);
+        return true;
       }
-      [FLUSHCHUNK](chunk) {
-        return chunk ? (this.emit("data", chunk), this.flowing) : false;
+      [_write](buf) {
+        import_fs2.default.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => this[_onwrite](er, bw));
       }
-      pipe(dest, opts) {
-        if (this[DESTROYED])
-          return;
-        const ended = this[EMITTED_END];
-        opts = opts || {};
-        if (dest === proc.stdout || dest === proc.stderr)
-          opts.end = false;
-        else
-          opts.end = opts.end !== false;
-        opts.proxyErrors = !!opts.proxyErrors;
-        if (ended) {
-          if (opts.end)
-            dest.end();
+      [_onwrite](er, bw) {
+        if (er) {
+          this[_onerror](er);
         } else {
-          this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts) : new PipeProxyErrors(this, dest, opts));
-          if (this[ASYNC])
-            defer(() => this[RESUME]());
-          else
-            this[RESUME]();
+          if (this[_pos] !== void 0 && typeof bw === "number") {
+            this[_pos] += bw;
+          }
+          if (this[_queue].length) {
+            this[_flush]();
+          } else {
+            this[_writing] = false;
+            if (this[_ended] && !this[_finished]) {
+              this[_finished] = true;
+              this[_close]();
+              this.emit("finish");
+            } else if (this[_needDrain]) {
+              this[_needDrain] = false;
+              this.emit("drain");
+            }
+          }
         }
-        return dest;
       }
-      unpipe(dest) {
-        const p = this.pipes.find((p2) => p2.dest === dest);
-        if (p) {
-          this.pipes.splice(this.pipes.indexOf(p), 1);
-          p.unpipe();
+      [_flush]() {
+        if (this[_queue].length === 0) {
+          if (this[_ended]) {
+            this[_onwrite](null, 0);
+          }
+        } else if (this[_queue].length === 1) {
+          this[_write](this[_queue].pop());
+        } else {
+          const iovec = this[_queue];
+          this[_queue] = [];
+          writev(this[_fd], iovec, this[_pos], (er, bw) => this[_onwrite](er, bw));
         }
       }
-      addListener(ev, fn2) {
-        return this.on(ev, fn2);
-      }
-      on(ev, fn2) {
-        const ret = super.on(ev, fn2);
-        if (ev === "data" && !this.pipes.length && !this.flowing)
-          this[RESUME]();
-        else if (ev === "readable" && this[BUFFERLENGTH] !== 0)
-          super.emit("readable");
-        else if (isEndish(ev) && this[EMITTED_END]) {
-          super.emit(ev);
-          this.removeAllListeners(ev);
-        } else if (ev === "error" && this[EMITTED_ERROR]) {
-          if (this[ASYNC])
-            defer(() => fn2.call(this, this[EMITTED_ERROR]));
-          else
-            fn2.call(this, this[EMITTED_ERROR]);
+      [_close]() {
+        if (this[_autoClose] && typeof this[_fd] === "number") {
+          const fd = this[_fd];
+          this[_fd] = void 0;
+          import_fs2.default.close(fd, (er) => er ? this.emit("error", er) : this.emit("close"));
         }
-        return ret;
-      }
-      get emittedEnd() {
-        return this[EMITTED_END];
       }
-      [MAYBE_EMIT_END]() {
-        if (!this[EMITTING_END] && !this[EMITTED_END] && !this[DESTROYED] && this.buffer.length === 0 && this[EOF]) {
-          this[EMITTING_END] = true;
-          this.emit("end");
-          this.emit("prefinish");
-          this.emit("finish");
-          if (this[CLOSED])
-            this.emit("close");
-          this[EMITTING_END] = false;
-        }
-      }
-      emit(ev, data, ...extra) {
-        if (ev !== "error" && ev !== "close" && ev !== DESTROYED && this[DESTROYED])
-          return;
-        else if (ev === "data") {
-          return !data ? false : this[ASYNC] ? defer(() => this[EMITDATA](data)) : this[EMITDATA](data);
-        } else if (ev === "end") {
-          return this[EMITEND]();
-        } else if (ev === "close") {
-          this[CLOSED] = true;
-          if (!this[EMITTED_END] && !this[DESTROYED])
-            return;
-          const ret2 = super.emit("close");
-          this.removeAllListeners("close");
-          return ret2;
-        } else if (ev === "error") {
-          this[EMITTED_ERROR] = data;
-          const ret2 = super.emit("error", data);
-          this[MAYBE_EMIT_END]();
-          return ret2;
-        } else if (ev === "resume") {
-          const ret2 = super.emit("resume");
-          this[MAYBE_EMIT_END]();
-          return ret2;
-        } else if (ev === "finish" || ev === "prefinish") {
-          const ret2 = super.emit(ev);
-          this.removeAllListeners(ev);
-          return ret2;
-        }
-        const ret = super.emit(ev, data, ...extra);
-        this[MAYBE_EMIT_END]();
-        return ret;
-      }
-      [EMITDATA](data) {
-        for (const p of this.pipes) {
-          if (p.dest.write(data) === false)
-            this.pause();
-        }
-        const ret = super.emit("data", data);
-        this[MAYBE_EMIT_END]();
-        return ret;
-      }
-      [EMITEND]() {
-        if (this[EMITTED_END])
-          return;
-        this[EMITTED_END] = true;
-        this.readable = false;
-        if (this[ASYNC])
-          defer(() => this[EMITEND2]());
-        else
-          this[EMITEND2]();
-      }
-      [EMITEND2]() {
-        if (this[DECODER]) {
-          const data = this[DECODER].end();
-          if (data) {
-            for (const p of this.pipes) {
-              p.dest.write(data);
+    };
+    WriteStreamSync = class extends WriteStream {
+      [_open]() {
+        let fd;
+        if (this[_defaultFlag] && this[_flags] === "r+") {
+          try {
+            fd = import_fs2.default.openSync(this[_path], this[_flags], this[_mode]);
+          } catch (er) {
+            if (er?.code === "ENOENT") {
+              this[_flags] = "w";
+              return this[_open]();
+            } else {
+              throw er;
             }
-            super.emit("data", data);
           }
+        } else {
+          fd = import_fs2.default.openSync(this[_path], this[_flags], this[_mode]);
         }
-        for (const p of this.pipes) {
-          p.end();
-        }
-        const ret = super.emit("end");
-        this.removeAllListeners("end");
-        return ret;
-      }
-      // const all = await stream.collect()
-      collect() {
-        const buf = [];
-        if (!this[OBJECTMODE])
-          buf.dataLength = 0;
-        const p = this.promise();
-        this.on("data", (c) => {
-          buf.push(c);
-          if (!this[OBJECTMODE])
-            buf.dataLength += c.length;
-        });
-        return p.then(() => buf);
-      }
-      // const data = await stream.concat()
-      concat() {
-        return this[OBJECTMODE] ? Promise.reject(new Error("cannot concat in objectMode")) : this.collect().then((buf) => this[OBJECTMODE] ? Promise.reject(new Error("cannot concat in objectMode")) : this[ENCODING] ? buf.join("") : Buffer.concat(buf, buf.dataLength));
-      }
-      // stream.promise().then(() => done, er => emitted error)
-      promise() {
-        return new Promise((resolve, reject) => {
-          this.on(DESTROYED, () => reject(new Error("stream destroyed")));
-          this.on("error", (er) => reject(er));
-          this.on("end", () => resolve());
-        });
-      }
-      // for await (let chunk of stream)
-      [ASYNCITERATOR]() {
-        const next = () => {
-          const res = this.read();
-          if (res !== null)
-            return Promise.resolve({ done: false, value: res });
-          if (this[EOF])
-            return Promise.resolve({ done: true });
-          let resolve = null;
-          let reject = null;
-          const onerr = (er) => {
-            this.removeListener("data", ondata);
-            this.removeListener("end", onend);
-            reject(er);
-          };
-          const ondata = (value) => {
-            this.removeListener("error", onerr);
-            this.removeListener("end", onend);
-            this.pause();
-            resolve({ value, done: !!this[EOF] });
-          };
-          const onend = () => {
-            this.removeListener("error", onerr);
-            this.removeListener("data", ondata);
-            resolve({ done: true });
-          };
-          const ondestroy = () => onerr(new Error("stream destroyed"));
-          return new Promise((res2, rej) => {
-            reject = rej;
-            resolve = res2;
-            this.once(DESTROYED, ondestroy);
-            this.once("error", onerr);
-            this.once("end", onend);
-            this.once("data", ondata);
-          });
-        };
-        return { next };
-      }
-      // for (let chunk of stream)
-      [ITERATOR]() {
-        const next = () => {
-          const value = this.read();
-          const done = value === null;
-          return { value, done };
-        };
-        return { next };
-      }
-      destroy(er) {
-        if (this[DESTROYED]) {
-          if (er)
-            this.emit("error", er);
-          else
-            this.emit(DESTROYED);
-          return this;
-        }
-        this[DESTROYED] = true;
-        this.buffer.length = 0;
-        this[BUFFERLENGTH] = 0;
-        if (typeof this.close === "function" && !this[CLOSED])
-          this.close();
-        if (er)
-          this.emit("error", er);
-        else
-          this.emit(DESTROYED);
-        return this;
-      }
-      static isStream(s) {
-        return !!s && (s instanceof Minipass || s instanceof Stream || s instanceof EE && (typeof s.pipe === "function" || // readable
-        typeof s.write === "function" && typeof s.end === "function"));
-      }
-    };
-  }
-});
-
-// .yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/index.js
-var require_minizlib = __commonJS({
-  ".yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-64fae024e1.zip/node_modules/minizlib/index.js"(exports2) {
-    "use strict";
-    var assert3 = require("assert");
-    var Buffer2 = require("buffer").Buffer;
-    var realZlib = require("zlib");
-    var constants = exports2.constants = require_constants5();
-    var Minipass = require_minipass2();
-    var OriginalBufferConcat = Buffer2.concat;
-    var _superWrite = Symbol("_superWrite");
-    var ZlibError = class extends Error {
-      constructor(err) {
-        super("zlib: " + err.message);
-        this.code = err.code;
-        this.errno = err.errno;
-        if (!this.code)
-          this.code = "ZLIB_ERROR";
-        this.message = "zlib: " + err.message;
-        Error.captureStackTrace(this, this.constructor);
-      }
-      get name() {
-        return "ZlibError";
-      }
-    };
-    var _opts = Symbol("opts");
-    var _flushFlag = Symbol("flushFlag");
-    var _finishFlushFlag = Symbol("finishFlushFlag");
-    var _fullFlushFlag = Symbol("fullFlushFlag");
-    var _handle = Symbol("handle");
-    var _onError = Symbol("onError");
-    var _sawError = Symbol("sawError");
-    var _level = Symbol("level");
-    var _strategy = Symbol("strategy");
-    var _ended = Symbol("ended");
-    var _defaultFullFlush = Symbol("_defaultFullFlush");
-    var ZlibBase = class extends Minipass {
-      constructor(opts, mode) {
-        if (!opts || typeof opts !== "object")
-          throw new TypeError("invalid options for ZlibBase constructor");
-        super(opts);
-        this[_sawError] = false;
-        this[_ended] = false;
-        this[_opts] = opts;
-        this[_flushFlag] = opts.flush;
-        this[_finishFlushFlag] = opts.finishFlush;
-        try {
-          this[_handle] = new realZlib[mode](opts);
-        } catch (er) {
-          throw new ZlibError(er);
-        }
-        this[_onError] = (err) => {
-          if (this[_sawError])
-            return;
-          this[_sawError] = true;
-          this.close();
-          this.emit("error", err);
-        };
-        this[_handle].on("error", (er) => this[_onError](new ZlibError(er)));
-        this.once("end", () => this.close);
+        this[_onopen](null, fd);
       }
-      close() {
-        if (this[_handle]) {
-          this[_handle].close();
-          this[_handle] = null;
+      [_close]() {
+        if (this[_autoClose] && typeof this[_fd] === "number") {
+          const fd = this[_fd];
+          this[_fd] = void 0;
+          import_fs2.default.closeSync(fd);
           this.emit("close");
         }
       }
-      reset() {
-        if (!this[_sawError]) {
-          assert3(this[_handle], "zlib binding closed");
-          return this[_handle].reset();
-        }
-      }
-      flush(flushFlag) {
-        if (this.ended)
-          return;
-        if (typeof flushFlag !== "number")
-          flushFlag = this[_fullFlushFlag];
-        this.write(Object.assign(Buffer2.alloc(0), { [_flushFlag]: flushFlag }));
-      }
-      end(chunk, encoding, cb) {
-        if (chunk)
-          this.write(chunk, encoding);
-        this.flush(this[_finishFlushFlag]);
-        this[_ended] = true;
-        return super.end(null, null, cb);
-      }
-      get ended() {
-        return this[_ended];
-      }
-      write(chunk, encoding, cb) {
-        if (typeof encoding === "function")
-          cb = encoding, encoding = "utf8";
-        if (typeof chunk === "string")
-          chunk = Buffer2.from(chunk, encoding);
-        if (this[_sawError])
-          return;
-        assert3(this[_handle], "zlib binding closed");
-        const nativeHandle = this[_handle]._handle;
-        const originalNativeClose = nativeHandle.close;
-        nativeHandle.close = () => {
-        };
-        const originalClose = this[_handle].close;
-        this[_handle].close = () => {
-        };
-        Buffer2.concat = (args) => args;
-        let result;
+      [_write](buf) {
+        let threw = true;
         try {
-          const flushFlag = typeof chunk[_flushFlag] === "number" ? chunk[_flushFlag] : this[_flushFlag];
-          result = this[_handle]._processChunk(chunk, flushFlag);
-          Buffer2.concat = OriginalBufferConcat;
-        } catch (err) {
-          Buffer2.concat = OriginalBufferConcat;
-          this[_onError](new ZlibError(err));
+          this[_onwrite](null, import_fs2.default.writeSync(this[_fd], buf, 0, buf.length, this[_pos]));
+          threw = false;
         } finally {
-          if (this[_handle]) {
-            this[_handle]._handle = nativeHandle;
-            nativeHandle.close = originalNativeClose;
-            this[_handle].close = originalClose;
-            this[_handle].removeAllListeners("error");
-          }
-        }
-        if (this[_handle])
-          this[_handle].on("error", (er) => this[_onError](new ZlibError(er)));
-        let writeReturn;
-        if (result) {
-          if (Array.isArray(result) && result.length > 0) {
-            writeReturn = this[_superWrite](Buffer2.from(result[0]));
-            for (let i = 1; i < result.length; i++) {
-              writeReturn = this[_superWrite](result[i]);
+          if (threw) {
+            try {
+              this[_close]();
+            } catch {
             }
-          } else {
-            writeReturn = this[_superWrite](Buffer2.from(result));
-          }
-        }
-        if (cb)
-          cb();
-        return writeReturn;
-      }
-      [_superWrite](data) {
-        return super.write(data);
-      }
-    };
-    var Zlib = class extends ZlibBase {
-      constructor(opts, mode) {
-        opts = opts || {};
-        opts.flush = opts.flush || constants.Z_NO_FLUSH;
-        opts.finishFlush = opts.finishFlush || constants.Z_FINISH;
-        super(opts, mode);
-        this[_fullFlushFlag] = constants.Z_FULL_FLUSH;
-        this[_level] = opts.level;
-        this[_strategy] = opts.strategy;
-      }
-      params(level, strategy) {
-        if (this[_sawError])
-          return;
-        if (!this[_handle])
-          throw new Error("cannot switch params when binding is closed");
-        if (!this[_handle].params)
-          throw new Error("not supported in this implementation");
-        if (this[_level] !== level || this[_strategy] !== strategy) {
-          this.flush(constants.Z_SYNC_FLUSH);
-          assert3(this[_handle], "zlib binding closed");
-          const origFlush = this[_handle].flush;
-          this[_handle].flush = (flushFlag, cb) => {
-            this.flush(flushFlag);
-            cb();
-          };
-          try {
-            this[_handle].params(level, strategy);
-          } finally {
-            this[_handle].flush = origFlush;
-          }
-          if (this[_handle]) {
-            this[_level] = level;
-            this[_strategy] = strategy;
           }
         }
       }
     };
-    var Deflate = class extends Zlib {
-      constructor(opts) {
-        super(opts, "Deflate");
-      }
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/options.js
+var argmap, isSyncFile, isAsyncFile, isSyncNoFile, isAsyncNoFile, dealiasKey, dealias;
+var init_options = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/options.js"() {
+    argmap = /* @__PURE__ */ new Map([
+      ["C", "cwd"],
+      ["f", "file"],
+      ["z", "gzip"],
+      ["P", "preservePaths"],
+      ["U", "unlink"],
+      ["strip-components", "strip"],
+      ["stripComponents", "strip"],
+      ["keep-newer", "newer"],
+      ["keepNewer", "newer"],
+      ["keep-newer-files", "newer"],
+      ["keepNewerFiles", "newer"],
+      ["k", "keep"],
+      ["keep-existing", "keep"],
+      ["keepExisting", "keep"],
+      ["m", "noMtime"],
+      ["no-mtime", "noMtime"],
+      ["p", "preserveOwner"],
+      ["L", "follow"],
+      ["h", "follow"],
+      ["onentry", "onReadEntry"]
+    ]);
+    isSyncFile = (o) => !!o.sync && !!o.file;
+    isAsyncFile = (o) => !o.sync && !!o.file;
+    isSyncNoFile = (o) => !!o.sync && !o.file;
+    isAsyncNoFile = (o) => !o.sync && !o.file;
+    dealiasKey = (k) => {
+      const d = argmap.get(k);
+      if (d)
+        return d;
+      return k;
+    };
+    dealias = (opt = {}) => {
+      if (!opt)
+        return {};
+      const result = {};
+      for (const [key, v] of Object.entries(opt)) {
+        const k = dealiasKey(key);
+        result[k] = v;
+      }
+      if (result.chmod === void 0 && result.noChmod === false) {
+        result.chmod = true;
+      }
+      delete result.noChmod;
+      return result;
     };
-    var Inflate = class extends Zlib {
-      constructor(opts) {
-        super(opts, "Inflate");
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/make-command.js
+var makeCommand;
+var init_make_command = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/make-command.js"() {
+    init_options();
+    makeCommand = (syncFile, asyncFile, syncNoFile, asyncNoFile, validate) => {
+      return Object.assign((opt_ = [], entries, cb) => {
+        if (Array.isArray(opt_)) {
+          entries = opt_;
+          opt_ = {};
+        }
+        if (typeof entries === "function") {
+          cb = entries;
+          entries = void 0;
+        }
+        if (!entries) {
+          entries = [];
+        } else {
+          entries = Array.from(entries);
+        }
+        const opt = dealias(opt_);
+        validate?.(opt, entries);
+        if (isSyncFile(opt)) {
+          if (typeof cb === "function") {
+            throw new TypeError("callback not supported for sync tar functions");
+          }
+          return syncFile(opt, entries);
+        } else if (isAsyncFile(opt)) {
+          const p = asyncFile(opt, entries);
+          const c = cb ? cb : void 0;
+          return c ? p.then(() => c(), c) : p;
+        } else if (isSyncNoFile(opt)) {
+          if (typeof cb === "function") {
+            throw new TypeError("callback not supported for sync tar functions");
+          }
+          return syncNoFile(opt, entries);
+        } else if (isAsyncNoFile(opt)) {
+          if (typeof cb === "function") {
+            throw new TypeError("callback only supported with file option");
+          }
+          return asyncNoFile(opt, entries);
+        } else {
+          throw new Error("impossible options??");
+        }
+      }, {
+        syncFile,
+        asyncFile,
+        syncNoFile,
+        asyncNoFile,
+        validate
+      });
+    };
+  }
+});
+
+// .yarn/cache/minizlib-npm-3.0.1-4bdabd978f-82f8bf70da.zip/node_modules/minizlib/dist/esm/constants.js
+var import_zlib, realZlibConstants, constants;
+var init_constants = __esm({
+  ".yarn/cache/minizlib-npm-3.0.1-4bdabd978f-82f8bf70da.zip/node_modules/minizlib/dist/esm/constants.js"() {
+    import_zlib = __toESM(require("zlib"), 1);
+    realZlibConstants = import_zlib.default.constants || { ZLIB_VERNUM: 4736 };
+    constants = Object.freeze(Object.assign(/* @__PURE__ */ Object.create(null), {
+      Z_NO_FLUSH: 0,
+      Z_PARTIAL_FLUSH: 1,
+      Z_SYNC_FLUSH: 2,
+      Z_FULL_FLUSH: 3,
+      Z_FINISH: 4,
+      Z_BLOCK: 5,
+      Z_OK: 0,
+      Z_STREAM_END: 1,
+      Z_NEED_DICT: 2,
+      Z_ERRNO: -1,
+      Z_STREAM_ERROR: -2,
+      Z_DATA_ERROR: -3,
+      Z_MEM_ERROR: -4,
+      Z_BUF_ERROR: -5,
+      Z_VERSION_ERROR: -6,
+      Z_NO_COMPRESSION: 0,
+      Z_BEST_SPEED: 1,
+      Z_BEST_COMPRESSION: 9,
+      Z_DEFAULT_COMPRESSION: -1,
+      Z_FILTERED: 1,
+      Z_HUFFMAN_ONLY: 2,
+      Z_RLE: 3,
+      Z_FIXED: 4,
+      Z_DEFAULT_STRATEGY: 0,
+      DEFLATE: 1,
+      INFLATE: 2,
+      GZIP: 3,
+      GUNZIP: 4,
+      DEFLATERAW: 5,
+      INFLATERAW: 6,
+      UNZIP: 7,
+      BROTLI_DECODE: 8,
+      BROTLI_ENCODE: 9,
+      Z_MIN_WINDOWBITS: 8,
+      Z_MAX_WINDOWBITS: 15,
+      Z_DEFAULT_WINDOWBITS: 15,
+      Z_MIN_CHUNK: 64,
+      Z_MAX_CHUNK: Infinity,
+      Z_DEFAULT_CHUNK: 16384,
+      Z_MIN_MEMLEVEL: 1,
+      Z_MAX_MEMLEVEL: 9,
+      Z_DEFAULT_MEMLEVEL: 8,
+      Z_MIN_LEVEL: -1,
+      Z_MAX_LEVEL: 9,
+      Z_DEFAULT_LEVEL: -1,
+      BROTLI_OPERATION_PROCESS: 0,
+      BROTLI_OPERATION_FLUSH: 1,
+      BROTLI_OPERATION_FINISH: 2,
+      BROTLI_OPERATION_EMIT_METADATA: 3,
+      BROTLI_MODE_GENERIC: 0,
+      BROTLI_MODE_TEXT: 1,
+      BROTLI_MODE_FONT: 2,
+      BROTLI_DEFAULT_MODE: 0,
+      BROTLI_MIN_QUALITY: 0,
+      BROTLI_MAX_QUALITY: 11,
+      BROTLI_DEFAULT_QUALITY: 11,
+      BROTLI_MIN_WINDOW_BITS: 10,
+      BROTLI_MAX_WINDOW_BITS: 24,
+      BROTLI_LARGE_MAX_WINDOW_BITS: 30,
+      BROTLI_DEFAULT_WINDOW: 22,
+      BROTLI_MIN_INPUT_BLOCK_BITS: 16,
+      BROTLI_MAX_INPUT_BLOCK_BITS: 24,
+      BROTLI_PARAM_MODE: 0,
+      BROTLI_PARAM_QUALITY: 1,
+      BROTLI_PARAM_LGWIN: 2,
+      BROTLI_PARAM_LGBLOCK: 3,
+      BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,
+      BROTLI_PARAM_SIZE_HINT: 5,
+      BROTLI_PARAM_LARGE_WINDOW: 6,
+      BROTLI_PARAM_NPOSTFIX: 7,
+      BROTLI_PARAM_NDIRECT: 8,
+      BROTLI_DECODER_RESULT_ERROR: 0,
+      BROTLI_DECODER_RESULT_SUCCESS: 1,
+      BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,
+      BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,
+      BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,
+      BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,
+      BROTLI_DECODER_NO_ERROR: 0,
+      BROTLI_DECODER_SUCCESS: 1,
+      BROTLI_DECODER_NEEDS_MORE_INPUT: 2,
+      BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,
+      BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,
+      BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,
+      BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,
+      BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,
+      BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,
+      BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,
+      BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,
+      BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,
+      BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,
+      BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,
+      BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,
+      BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,
+      BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,
+      BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,
+      BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,
+      BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,
+      BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,
+      BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,
+      BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,
+      BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,
+      BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,
+      BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,
+      BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,
+      BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,
+      BROTLI_DECODER_ERROR_UNREACHABLE: -31
+    }, realZlibConstants));
+  }
+});
+
+// .yarn/cache/minizlib-npm-3.0.1-4bdabd978f-82f8bf70da.zip/node_modules/minizlib/dist/esm/index.js
+var import_assert2, import_buffer, import_zlib2, OriginalBufferConcat, _superWrite, ZlibError, _flushFlag, ZlibBase, Zlib, Gzip, Unzip, Brotli, BrotliCompress, BrotliDecompress;
+var init_esm3 = __esm({
+  ".yarn/cache/minizlib-npm-3.0.1-4bdabd978f-82f8bf70da.zip/node_modules/minizlib/dist/esm/index.js"() {
+    import_assert2 = __toESM(require("assert"), 1);
+    import_buffer = require("buffer");
+    init_esm();
+    import_zlib2 = __toESM(require("zlib"), 1);
+    init_constants();
+    init_constants();
+    OriginalBufferConcat = import_buffer.Buffer.concat;
+    _superWrite = Symbol("_superWrite");
+    ZlibError = class extends Error {
+      code;
+      errno;
+      constructor(err) {
+        super("zlib: " + err.message);
+        this.code = err.code;
+        this.errno = err.errno;
+        if (!this.code)
+          this.code = "ZLIB_ERROR";
+        this.message = "zlib: " + err.message;
+        Error.captureStackTrace(this, this.constructor);
+      }
+      get name() {
+        return "ZlibError";
       }
     };
-    var _portable = Symbol("_portable");
-    var Gzip = class extends Zlib {
-      constructor(opts) {
-        super(opts, "Gzip");
-        this[_portable] = opts && !!opts.portable;
+    _flushFlag = Symbol("flushFlag");
+    ZlibBase = class extends Minipass {
+      #sawError = false;
+      #ended = false;
+      #flushFlag;
+      #finishFlushFlag;
+      #fullFlushFlag;
+      #handle;
+      #onError;
+      get sawError() {
+        return this.#sawError;
+      }
+      get handle() {
+        return this.#handle;
+      }
+      /* c8 ignore start */
+      get flushFlag() {
+        return this.#flushFlag;
+      }
+      /* c8 ignore stop */
+      constructor(opts, mode) {
+        if (!opts || typeof opts !== "object")
+          throw new TypeError("invalid options for ZlibBase constructor");
+        super(opts);
+        this.#flushFlag = opts.flush ?? 0;
+        this.#finishFlushFlag = opts.finishFlush ?? 0;
+        this.#fullFlushFlag = opts.fullFlushFlag ?? 0;
+        try {
+          this.#handle = new import_zlib2.default[mode](opts);
+        } catch (er) {
+          throw new ZlibError(er);
+        }
+        this.#onError = (err) => {
+          if (this.#sawError)
+            return;
+          this.#sawError = true;
+          this.close();
+          this.emit("error", err);
+        };
+        this.#handle?.on("error", (er) => this.#onError(new ZlibError(er)));
+        this.once("end", () => this.close);
+      }
+      close() {
+        if (this.#handle) {
+          this.#handle.close();
+          this.#handle = void 0;
+          this.emit("close");
+        }
+      }
+      reset() {
+        if (!this.#sawError) {
+          (0, import_assert2.default)(this.#handle, "zlib binding closed");
+          return this.#handle.reset?.();
+        }
+      }
+      flush(flushFlag) {
+        if (this.ended)
+          return;
+        if (typeof flushFlag !== "number")
+          flushFlag = this.#fullFlushFlag;
+        this.write(Object.assign(import_buffer.Buffer.alloc(0), { [_flushFlag]: flushFlag }));
+      }
+      end(chunk, encoding, cb) {
+        if (typeof chunk === "function") {
+          cb = chunk;
+          encoding = void 0;
+          chunk = void 0;
+        }
+        if (typeof encoding === "function") {
+          cb = encoding;
+          encoding = void 0;
+        }
+        if (chunk) {
+          if (encoding)
+            this.write(chunk, encoding);
+          else
+            this.write(chunk);
+        }
+        this.flush(this.#finishFlushFlag);
+        this.#ended = true;
+        return super.end(cb);
+      }
+      get ended() {
+        return this.#ended;
       }
+      // overridden in the gzip classes to do portable writes
       [_superWrite](data) {
-        if (!this[_portable])
-          return super[_superWrite](data);
-        this[_portable] = false;
-        data[9] = 255;
-        return super[_superWrite](data);
+        return super.write(data);
       }
-    };
-    var Gunzip = class extends Zlib {
-      constructor(opts) {
-        super(opts, "Gunzip");
+      write(chunk, encoding, cb) {
+        if (typeof encoding === "function")
+          cb = encoding, encoding = "utf8";
+        if (typeof chunk === "string")
+          chunk = import_buffer.Buffer.from(chunk, encoding);
+        if (this.#sawError)
+          return;
+        (0, import_assert2.default)(this.#handle, "zlib binding closed");
+        const nativeHandle = this.#handle._handle;
+        const originalNativeClose = nativeHandle.close;
+        nativeHandle.close = () => {
+        };
+        const originalClose = this.#handle.close;
+        this.#handle.close = () => {
+        };
+        import_buffer.Buffer.concat = (args) => args;
+        let result = void 0;
+        try {
+          const flushFlag = typeof chunk[_flushFlag] === "number" ? chunk[_flushFlag] : this.#flushFlag;
+          result = this.#handle._processChunk(chunk, flushFlag);
+          import_buffer.Buffer.concat = OriginalBufferConcat;
+        } catch (err) {
+          import_buffer.Buffer.concat = OriginalBufferConcat;
+          this.#onError(new ZlibError(err));
+        } finally {
+          if (this.#handle) {
+            ;
+            this.#handle._handle = nativeHandle;
+            nativeHandle.close = originalNativeClose;
+            this.#handle.close = originalClose;
+            this.#handle.removeAllListeners("error");
+          }
+        }
+        if (this.#handle)
+          this.#handle.on("error", (er) => this.#onError(new ZlibError(er)));
+        let writeReturn;
+        if (result) {
+          if (Array.isArray(result) && result.length > 0) {
+            const r = result[0];
+            writeReturn = this[_superWrite](import_buffer.Buffer.from(r));
+            for (let i = 1; i < result.length; i++) {
+              writeReturn = this[_superWrite](result[i]);
+            }
+          } else {
+            writeReturn = this[_superWrite](import_buffer.Buffer.from(result));
+          }
+        }
+        if (cb)
+          cb();
+        return writeReturn;
       }
     };
-    var DeflateRaw = class extends Zlib {
-      constructor(opts) {
-        super(opts, "DeflateRaw");
+    Zlib = class extends ZlibBase {
+      #level;
+      #strategy;
+      constructor(opts, mode) {
+        opts = opts || {};
+        opts.flush = opts.flush || constants.Z_NO_FLUSH;
+        opts.finishFlush = opts.finishFlush || constants.Z_FINISH;
+        opts.fullFlushFlag = constants.Z_FULL_FLUSH;
+        super(opts, mode);
+        this.#level = opts.level;
+        this.#strategy = opts.strategy;
+      }
+      params(level, strategy) {
+        if (this.sawError)
+          return;
+        if (!this.handle)
+          throw new Error("cannot switch params when binding is closed");
+        if (!this.handle.params)
+          throw new Error("not supported in this implementation");
+        if (this.#level !== level || this.#strategy !== strategy) {
+          this.flush(constants.Z_SYNC_FLUSH);
+          (0, import_assert2.default)(this.handle, "zlib binding closed");
+          const origFlush = this.handle.flush;
+          this.handle.flush = (flushFlag, cb) => {
+            if (typeof flushFlag === "function") {
+              cb = flushFlag;
+              flushFlag = this.flushFlag;
+            }
+            this.flush(flushFlag);
+            cb?.();
+          };
+          try {
+            ;
+            this.handle.params(level, strategy);
+          } finally {
+            this.handle.flush = origFlush;
+          }
+          if (this.handle) {
+            this.#level = level;
+            this.#strategy = strategy;
+          }
+        }
       }
     };
-    var InflateRaw = class extends Zlib {
+    Gzip = class extends Zlib {
+      #portable;
       constructor(opts) {
-        super(opts, "InflateRaw");
+        super(opts, "Gzip");
+        this.#portable = opts && !!opts.portable;
+      }
+      [_superWrite](data) {
+        if (!this.#portable)
+          return super[_superWrite](data);
+        this.#portable = false;
+        data[9] = 255;
+        return super[_superWrite](data);
       }
     };
-    var Unzip = class extends Zlib {
+    Unzip = class extends Zlib {
       constructor(opts) {
         super(opts, "Unzip");
       }
     };
-    var Brotli = class extends ZlibBase {
+    Brotli = class extends ZlibBase {
       constructor(opts, mode) {
         opts = opts || {};
         opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS;
         opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH;
+        opts.fullFlushFlag = constants.BROTLI_OPERATION_FLUSH;
         super(opts, mode);
-        this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH;
       }
     };
-    var BrotliCompress = class extends Brotli {
+    BrotliCompress = class extends Brotli {
       constructor(opts) {
         super(opts, "BrotliCompress");
       }
     };
-    var BrotliDecompress = class extends Brotli {
+    BrotliDecompress = class extends Brotli {
       constructor(opts) {
         super(opts, "BrotliDecompress");
       }
     };
-    exports2.Deflate = Deflate;
-    exports2.Inflate = Inflate;
-    exports2.Gzip = Gzip;
-    exports2.Gunzip = Gunzip;
-    exports2.DeflateRaw = DeflateRaw;
-    exports2.InflateRaw = InflateRaw;
-    exports2.Unzip = Unzip;
-    if (typeof realZlib.BrotliCompress === "function") {
-      exports2.BrotliCompress = BrotliCompress;
-      exports2.BrotliDecompress = BrotliDecompress;
-    } else {
-      exports2.BrotliCompress = exports2.BrotliDecompress = class {
-        constructor() {
-          throw new Error("Brotli is not supported in this version of Node.js");
-        }
-      };
-    }
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js
-var require_normalize_windows_path = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-windows-path.js"(exports2, module2) {
-    var platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
-    module2.exports = platform !== "win32" ? (p) => p : (p) => p && p.replace(/\\/g, "/");
+// .yarn/cache/yallist-npm-5.0.0-8732dd9f1c-a499c81ce6.zip/node_modules/yallist/dist/esm/index.js
+function insertAfter(self2, node, value) {
+  const prev = node;
+  const next = node ? node.next : self2.head;
+  const inserted = new Node(value, prev, next, self2);
+  if (inserted.next === void 0) {
+    self2.tail = inserted;
+  }
+  if (inserted.prev === void 0) {
+    self2.head = inserted;
+  }
+  self2.length++;
+  return inserted;
+}
+function push(self2, item) {
+  self2.tail = new Node(item, self2.tail, void 0, self2);
+  if (!self2.head) {
+    self2.head = self2.tail;
   }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js
-var require_read_entry = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/read-entry.js"(exports2, module2) {
-    "use strict";
-    var { Minipass } = require_minipass();
-    var normPath = require_normalize_windows_path();
-    var SLURP = Symbol("slurp");
-    module2.exports = class ReadEntry extends Minipass {
-      constructor(header, ex, gex) {
-        super();
-        this.pause();
-        this.extended = ex;
-        this.globalExtended = gex;
-        this.header = header;
-        this.startBlockSize = 512 * Math.ceil(header.size / 512);
-        this.blockRemain = this.startBlockSize;
-        this.remain = header.size;
-        this.type = header.type;
-        this.meta = false;
-        this.ignore = false;
-        switch (this.type) {
-          case "File":
-          case "OldFile":
-          case "Link":
-          case "SymbolicLink":
-          case "CharacterDevice":
-          case "BlockDevice":
-          case "Directory":
-          case "FIFO":
-          case "ContiguousFile":
-          case "GNUDumpDir":
-            break;
-          case "NextFileHasLongLinkpath":
-          case "NextFileHasLongPath":
-          case "OldGnuLongPath":
-          case "GlobalExtendedHeader":
-          case "ExtendedHeader":
-          case "OldExtendedHeader":
-            this.meta = true;
-            break;
-          default:
-            this.ignore = true;
+  self2.length++;
+}
+function unshift(self2, item) {
+  self2.head = new Node(item, void 0, self2.head, self2);
+  if (!self2.tail) {
+    self2.tail = self2.head;
+  }
+  self2.length++;
+}
+var Yallist, Node;
+var init_esm4 = __esm({
+  ".yarn/cache/yallist-npm-5.0.0-8732dd9f1c-a499c81ce6.zip/node_modules/yallist/dist/esm/index.js"() {
+    Yallist = class _Yallist {
+      tail;
+      head;
+      length = 0;
+      static create(list2 = []) {
+        return new _Yallist(list2);
+      }
+      constructor(list2 = []) {
+        for (const item of list2) {
+          this.push(item);
+        }
+      }
+      *[Symbol.iterator]() {
+        for (let walker = this.head; walker; walker = walker.next) {
+          yield walker.value;
         }
-        this.path = normPath(header.path);
-        this.mode = header.mode;
-        if (this.mode) {
-          this.mode = this.mode & 4095;
+      }
+      removeNode(node) {
+        if (node.list !== this) {
+          throw new Error("removing node which does not belong to this list");
         }
-        this.uid = header.uid;
-        this.gid = header.gid;
-        this.uname = header.uname;
-        this.gname = header.gname;
-        this.size = header.size;
-        this.mtime = header.mtime;
-        this.atime = header.atime;
-        this.ctime = header.ctime;
-        this.linkpath = normPath(header.linkpath);
-        this.uname = header.uname;
-        this.gname = header.gname;
-        if (ex) {
-          this[SLURP](ex);
+        const next = node.next;
+        const prev = node.prev;
+        if (next) {
+          next.prev = prev;
         }
-        if (gex) {
-          this[SLURP](gex, true);
+        if (prev) {
+          prev.next = next;
+        }
+        if (node === this.head) {
+          this.head = next;
+        }
+        if (node === this.tail) {
+          this.tail = prev;
         }
+        this.length--;
+        node.next = void 0;
+        node.prev = void 0;
+        node.list = void 0;
+        return next;
       }
-      write(data) {
-        const writeLen = data.length;
-        if (writeLen > this.blockRemain) {
-          throw new Error("writing more to entry than is appropriate");
+      unshiftNode(node) {
+        if (node === this.head) {
+          return;
         }
-        const r = this.remain;
-        const br = this.blockRemain;
-        this.remain = Math.max(0, r - writeLen);
-        this.blockRemain = Math.max(0, br - writeLen);
-        if (this.ignore) {
-          return true;
+        if (node.list) {
+          node.list.removeNode(node);
         }
-        if (r >= writeLen) {
-          return super.write(data);
+        const head = this.head;
+        node.list = this;
+        node.next = head;
+        if (head) {
+          head.prev = node;
+        }
+        this.head = node;
+        if (!this.tail) {
+          this.tail = node;
         }
-        return super.write(data.slice(0, r));
+        this.length++;
       }
-      [SLURP](ex, global2) {
-        for (const k in ex) {
-          if (ex[k] !== null && ex[k] !== void 0 && !(global2 && k === "path")) {
-            this[k] = k === "path" || k === "linkpath" ? normPath(ex[k]) : ex[k];
-          }
+      pushNode(node) {
+        if (node === this.tail) {
+          return;
+        }
+        if (node.list) {
+          node.list.removeNode(node);
+        }
+        const tail = this.tail;
+        node.list = this;
+        node.prev = tail;
+        if (tail) {
+          tail.next = node;
+        }
+        this.tail = node;
+        if (!this.head) {
+          this.head = node;
+        }
+        this.length++;
+      }
+      push(...args) {
+        for (let i = 0, l = args.length; i < l; i++) {
+          push(this, args[i]);
+        }
+        return this.length;
+      }
+      unshift(...args) {
+        for (var i = 0, l = args.length; i < l; i++) {
+          unshift(this, args[i]);
+        }
+        return this.length;
+      }
+      pop() {
+        if (!this.tail) {
+          return void 0;
+        }
+        const res = this.tail.value;
+        const t = this.tail;
+        this.tail = this.tail.prev;
+        if (this.tail) {
+          this.tail.next = void 0;
+        } else {
+          this.head = void 0;
+        }
+        t.list = void 0;
+        this.length--;
+        return res;
+      }
+      shift() {
+        if (!this.head) {
+          return void 0;
+        }
+        const res = this.head.value;
+        const h = this.head;
+        this.head = this.head.next;
+        if (this.head) {
+          this.head.prev = void 0;
+        } else {
+          this.tail = void 0;
+        }
+        h.list = void 0;
+        this.length--;
+        return res;
+      }
+      forEach(fn2, thisp) {
+        thisp = thisp || this;
+        for (let walker = this.head, i = 0; !!walker; i++) {
+          fn2.call(thisp, walker.value, i, this);
+          walker = walker.next;
+        }
+      }
+      forEachReverse(fn2, thisp) {
+        thisp = thisp || this;
+        for (let walker = this.tail, i = this.length - 1; !!walker; i--) {
+          fn2.call(thisp, walker.value, i, this);
+          walker = walker.prev;
+        }
+      }
+      get(n) {
+        let i = 0;
+        let walker = this.head;
+        for (; !!walker && i < n; i++) {
+          walker = walker.next;
+        }
+        if (i === n && !!walker) {
+          return walker.value;
+        }
+      }
+      getReverse(n) {
+        let i = 0;
+        let walker = this.tail;
+        for (; !!walker && i < n; i++) {
+          walker = walker.prev;
+        }
+        if (i === n && !!walker) {
+          return walker.value;
+        }
+      }
+      map(fn2, thisp) {
+        thisp = thisp || this;
+        const res = new _Yallist();
+        for (let walker = this.head; !!walker; ) {
+          res.push(fn2.call(thisp, walker.value, this));
+          walker = walker.next;
+        }
+        return res;
+      }
+      mapReverse(fn2, thisp) {
+        thisp = thisp || this;
+        var res = new _Yallist();
+        for (let walker = this.tail; !!walker; ) {
+          res.push(fn2.call(thisp, walker.value, this));
+          walker = walker.prev;
+        }
+        return res;
+      }
+      reduce(fn2, initial) {
+        let acc;
+        let walker = this.head;
+        if (arguments.length > 1) {
+          acc = initial;
+        } else if (this.head) {
+          walker = this.head.next;
+          acc = this.head.value;
+        } else {
+          throw new TypeError("Reduce of empty list with no initial value");
+        }
+        for (var i = 0; !!walker; i++) {
+          acc = fn2(acc, walker.value, i);
+          walker = walker.next;
+        }
+        return acc;
+      }
+      reduceReverse(fn2, initial) {
+        let acc;
+        let walker = this.tail;
+        if (arguments.length > 1) {
+          acc = initial;
+        } else if (this.tail) {
+          walker = this.tail.prev;
+          acc = this.tail.value;
+        } else {
+          throw new TypeError("Reduce of empty list with no initial value");
+        }
+        for (let i = this.length - 1; !!walker; i--) {
+          acc = fn2(acc, walker.value, i);
+          walker = walker.prev;
+        }
+        return acc;
+      }
+      toArray() {
+        const arr = new Array(this.length);
+        for (let i = 0, walker = this.head; !!walker; i++) {
+          arr[i] = walker.value;
+          walker = walker.next;
+        }
+        return arr;
+      }
+      toArrayReverse() {
+        const arr = new Array(this.length);
+        for (let i = 0, walker = this.tail; !!walker; i++) {
+          arr[i] = walker.value;
+          walker = walker.prev;
+        }
+        return arr;
+      }
+      slice(from = 0, to = this.length) {
+        if (to < 0) {
+          to += this.length;
+        }
+        if (from < 0) {
+          from += this.length;
+        }
+        const ret = new _Yallist();
+        if (to < from || to < 0) {
+          return ret;
+        }
+        if (from < 0) {
+          from = 0;
+        }
+        if (to > this.length) {
+          to = this.length;
+        }
+        let walker = this.head;
+        let i = 0;
+        for (i = 0; !!walker && i < from; i++) {
+          walker = walker.next;
+        }
+        for (; !!walker && i < to; i++, walker = walker.next) {
+          ret.push(walker.value);
+        }
+        return ret;
+      }
+      sliceReverse(from = 0, to = this.length) {
+        if (to < 0) {
+          to += this.length;
+        }
+        if (from < 0) {
+          from += this.length;
+        }
+        const ret = new _Yallist();
+        if (to < from || to < 0) {
+          return ret;
+        }
+        if (from < 0) {
+          from = 0;
+        }
+        if (to > this.length) {
+          to = this.length;
+        }
+        let i = this.length;
+        let walker = this.tail;
+        for (; !!walker && i > to; i--) {
+          walker = walker.prev;
+        }
+        for (; !!walker && i > from; i--, walker = walker.prev) {
+          ret.push(walker.value);
+        }
+        return ret;
+      }
+      splice(start, deleteCount = 0, ...nodes) {
+        if (start > this.length) {
+          start = this.length - 1;
+        }
+        if (start < 0) {
+          start = this.length + start;
+        }
+        let walker = this.head;
+        for (let i = 0; !!walker && i < start; i++) {
+          walker = walker.next;
+        }
+        const ret = [];
+        for (let i = 0; !!walker && i < deleteCount; i++) {
+          ret.push(walker.value);
+          walker = this.removeNode(walker);
+        }
+        if (!walker) {
+          walker = this.tail;
+        } else if (walker !== this.tail) {
+          walker = walker.prev;
+        }
+        for (const v of nodes) {
+          walker = insertAfter(this, walker, v);
+        }
+        return ret;
+      }
+      reverse() {
+        const head = this.head;
+        const tail = this.tail;
+        for (let walker = head; !!walker; walker = walker.prev) {
+          const p = walker.prev;
+          walker.prev = walker.next;
+          walker.next = p;
+        }
+        this.head = tail;
+        this.tail = head;
+        return this;
+      }
+    };
+    Node = class {
+      list;
+      next;
+      prev;
+      value;
+      constructor(value, prev, next, list2) {
+        this.list = list2;
+        this.value = value;
+        if (prev) {
+          prev.next = this;
+          this.prev = prev;
+        } else {
+          this.prev = void 0;
+        }
+        if (next) {
+          next.prev = this;
+          this.next = next;
+        } else {
+          this.next = void 0;
         }
       }
     };
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js
-var require_types = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/types.js"(exports2) {
-    "use strict";
-    exports2.name = /* @__PURE__ */ new Map([
-      ["0", "File"],
-      // same as File
-      ["", "OldFile"],
-      ["1", "Link"],
-      ["2", "SymbolicLink"],
-      // Devices and FIFOs aren't fully supported
-      // they are parsed, but skipped when unpacking
-      ["3", "CharacterDevice"],
-      ["4", "BlockDevice"],
-      ["5", "Directory"],
-      ["6", "FIFO"],
-      // same as File
-      ["7", "ContiguousFile"],
-      // pax headers
-      ["g", "GlobalExtendedHeader"],
-      ["x", "ExtendedHeader"],
-      // vendor-specific stuff
-      // skip
-      ["A", "SolarisACL"],
-      // like 5, but with data, which should be skipped
-      ["D", "GNUDumpDir"],
-      // metadata only, skip
-      ["I", "Inode"],
-      // data = link path of next file
-      ["K", "NextFileHasLongLinkpath"],
-      // data = path of next file
-      ["L", "NextFileHasLongPath"],
-      // skip
-      ["M", "ContinuationFile"],
-      // like L
-      ["N", "OldGnuLongPath"],
-      // skip
-      ["S", "SparseFile"],
-      // skip
-      ["V", "TapeVolumeHeader"],
-      // like x
-      ["X", "OldExtendedHeader"]
-    ]);
-    exports2.code = new Map(Array.from(exports2.name).map((kv) => [kv[1], kv[0]]));
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js
-var require_large_numbers = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/large-numbers.js"(exports2, module2) {
-    "use strict";
-    var encode = (num, buf) => {
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/large-numbers.js
+var encode, encodePositive, encodeNegative, parse, twos, pos, onesComp, twosComp;
+var init_large_numbers = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/large-numbers.js"() {
+    encode = (num, buf) => {
       if (!Number.isSafeInteger(num)) {
         throw Error("cannot encode number outside of javascript safe integer range");
       } else if (num < 0) {
@@ -13470,14 +14041,14 @@ var require_large_numbers = __commonJS({
       }
       return buf;
     };
-    var encodePositive = (num, buf) => {
+    encodePositive = (num, buf) => {
       buf[0] = 128;
       for (var i = buf.length; i > 1; i--) {
         buf[i - 1] = num & 255;
         num = Math.floor(num / 256);
       }
     };
-    var encodeNegative = (num, buf) => {
+    encodeNegative = (num, buf) => {
       buf[0] = 255;
       var flipped = false;
       num = num * -1;
@@ -13494,9 +14065,9 @@ var require_large_numbers = __commonJS({
         }
       }
     };
-    var parse = (buf) => {
+    parse = (buf) => {
       const pre = buf[0];
-      const value = pre === 128 ? pos(buf.slice(1, buf.length)) : pre === 255 ? twos(buf) : null;
+      const value = pre === 128 ? pos(buf.subarray(1, buf.length)) : pre === 255 ? twos(buf) : null;
       if (value === null) {
         throw Error("invalid base256 encoding");
       }
@@ -13505,12 +14076,12 @@ var require_large_numbers = __commonJS({
       }
       return value;
     };
-    var twos = (buf) => {
+    twos = (buf) => {
       var len = buf.length;
       var sum = 0;
       var flipped = false;
       for (var i = len - 1; i > -1; i--) {
-        var byte = buf[i];
+        var byte = Number(buf[i]);
         var f;
         if (flipped) {
           f = onesComp(byte);
@@ -13526,60 +14097,104 @@ var require_large_numbers = __commonJS({
       }
       return sum;
     };
-    var pos = (buf) => {
+    pos = (buf) => {
       var len = buf.length;
       var sum = 0;
       for (var i = len - 1; i > -1; i--) {
-        var byte = buf[i];
+        var byte = Number(buf[i]);
         if (byte !== 0) {
           sum += byte * Math.pow(256, len - i - 1);
         }
       }
       return sum;
     };
-    var onesComp = (byte) => (255 ^ byte) & 255;
-    var twosComp = (byte) => (255 ^ byte) + 1 & 255;
-    module2.exports = {
-      encode,
-      parse
-    };
+    onesComp = (byte) => (255 ^ byte) & 255;
+    twosComp = (byte) => (255 ^ byte) + 1 & 255;
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js
-var require_header = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/header.js"(exports2, module2) {
-    "use strict";
-    var types = require_types();
-    var pathModule = require("path").posix;
-    var large = require_large_numbers();
-    var SLURP = Symbol("slurp");
-    var TYPE = Symbol("type");
-    var Header = class {
-      constructor(data, off, ex, gex) {
-        this.cksumValid = false;
-        this.needPax = false;
-        this.nullBlock = false;
-        this.block = null;
-        this.path = null;
-        this.mode = null;
-        this.uid = null;
-        this.gid = null;
-        this.size = null;
-        this.mtime = null;
-        this.cksum = null;
-        this[TYPE] = "0";
-        this.linkpath = null;
-        this.uname = null;
-        this.gname = null;
-        this.devmaj = 0;
-        this.devmin = 0;
-        this.atime = null;
-        this.ctime = null;
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/types.js
+var isCode, name, code;
+var init_types = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/types.js"() {
+    isCode = (c) => name.has(c);
+    name = /* @__PURE__ */ new Map([
+      ["0", "File"],
+      // same as File
+      ["", "OldFile"],
+      ["1", "Link"],
+      ["2", "SymbolicLink"],
+      // Devices and FIFOs aren't fully supported
+      // they are parsed, but skipped when unpacking
+      ["3", "CharacterDevice"],
+      ["4", "BlockDevice"],
+      ["5", "Directory"],
+      ["6", "FIFO"],
+      // same as File
+      ["7", "ContiguousFile"],
+      // pax headers
+      ["g", "GlobalExtendedHeader"],
+      ["x", "ExtendedHeader"],
+      // vendor-specific stuff
+      // skip
+      ["A", "SolarisACL"],
+      // like 5, but with data, which should be skipped
+      ["D", "GNUDumpDir"],
+      // metadata only, skip
+      ["I", "Inode"],
+      // data = link path of next file
+      ["K", "NextFileHasLongLinkpath"],
+      // data = path of next file
+      ["L", "NextFileHasLongPath"],
+      // skip
+      ["M", "ContinuationFile"],
+      // like L
+      ["N", "OldGnuLongPath"],
+      // skip
+      ["S", "SparseFile"],
+      // skip
+      ["V", "TapeVolumeHeader"],
+      // like x
+      ["X", "OldExtendedHeader"]
+    ]);
+    code = new Map(Array.from(name).map((kv) => [kv[1], kv[0]]));
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/header.js
+var import_node_path, Header, splitPrefix, decString, decDate, numToDate, decNumber, nanUndef, decSmallNumber, MAXNUM, encNumber, encSmallNumber, octalString, padOctal, encDate, NULLS, encString;
+var init_header = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/header.js"() {
+    import_node_path = require("node:path");
+    init_large_numbers();
+    init_types();
+    Header = class {
+      cksumValid = false;
+      needPax = false;
+      nullBlock = false;
+      block;
+      path;
+      mode;
+      uid;
+      gid;
+      size;
+      cksum;
+      #type = "Unsupported";
+      linkpath;
+      uname;
+      gname;
+      devmaj = 0;
+      devmin = 0;
+      atime;
+      ctime;
+      mtime;
+      charset;
+      comment;
+      constructor(data, off = 0, ex, gex) {
         if (Buffer.isBuffer(data)) {
           this.decode(data, off || 0, ex, gex);
         } else if (data) {
-          this.set(data);
+          this.#slurp(data);
         }
       }
       decode(buf, off, ex, gex) {
@@ -13596,24 +14211,26 @@ var require_header = __commonJS({
         this.size = decNumber(buf, off + 124, 12);
         this.mtime = decDate(buf, off + 136, 12);
         this.cksum = decNumber(buf, off + 148, 12);
-        this[SLURP](ex);
-        this[SLURP](gex, true);
-        this[TYPE] = decString(buf, off + 156, 1);
-        if (this[TYPE] === "") {
-          this[TYPE] = "0";
-        }
-        if (this[TYPE] === "0" && this.path.slice(-1) === "/") {
-          this[TYPE] = "5";
-        }
-        if (this[TYPE] === "5") {
+        if (gex)
+          this.#slurp(gex, true);
+        if (ex)
+          this.#slurp(ex);
+        const t = decString(buf, off + 156, 1);
+        if (isCode(t)) {
+          this.#type = t || "0";
+        }
+        if (this.#type === "0" && this.path.slice(-1) === "/") {
+          this.#type = "5";
+        }
+        if (this.#type === "5") {
           this.size = 0;
         }
         this.linkpath = decString(buf, off + 157, 100);
-        if (buf.slice(off + 257, off + 265).toString() === "ustar\x0000") {
+        if (buf.subarray(off + 257, off + 265).toString() === "ustar\x0000") {
           this.uname = decString(buf, off + 265, 32);
           this.gname = decString(buf, off + 297, 32);
-          this.devmaj = decNumber(buf, off + 329, 8);
-          this.devmin = decNumber(buf, off + 337, 8);
+          this.devmaj = decNumber(buf, off + 329, 8) ?? 0;
+          this.devmin = decNumber(buf, off + 337, 8) ?? 0;
           if (buf[off + 475] !== 0) {
             const prefix = decString(buf, off + 345, 155);
             this.path = prefix + "/" + this.path;
@@ -13634,40 +14251,37 @@ var require_header = __commonJS({
           sum += buf[i];
         }
         this.cksumValid = sum === this.cksum;
-        if (this.cksum === null && sum === 8 * 32) {
+        if (this.cksum === void 0 && sum === 8 * 32) {
           this.nullBlock = true;
         }
       }
-      [SLURP](ex, global2) {
-        for (const k in ex) {
-          if (ex[k] !== null && ex[k] !== void 0 && !(global2 && k === "path")) {
-            this[k] = ex[k];
-          }
-        }
+      #slurp(ex, gex = false) {
+        Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {
+          return !(v === null || v === void 0 || k === "path" && gex || k === "linkpath" && gex || k === "global");
+        })));
       }
-      encode(buf, off) {
+      encode(buf, off = 0) {
         if (!buf) {
           buf = this.block = Buffer.alloc(512);
-          off = 0;
         }
-        if (!off) {
-          off = 0;
+        if (this.#type === "Unsupported") {
+          this.#type = "0";
         }
         if (!(buf.length >= off + 512)) {
           throw new Error("need 512 bytes for header");
         }
         const prefixSize = this.ctime || this.atime ? 130 : 155;
         const split = splitPrefix(this.path || "", prefixSize);
-        const path10 = split[0];
+        const path16 = split[0];
         const prefix = split[1];
-        this.needPax = split[2];
-        this.needPax = encString(buf, off, 100, path10) || this.needPax;
+        this.needPax = !!split[2];
+        this.needPax = encString(buf, off, 100, path16) || this.needPax;
         this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax;
         this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax;
         this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax;
         this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax;
         this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax;
-        buf[off + 156] = this[TYPE].charCodeAt(0);
+        buf[off + 156] = this.#type.charCodeAt(0);
         this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax;
         buf.write("ustar\x0000", off + 257, 8);
         this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax;
@@ -13694,107 +14308,116 @@ var require_header = __commonJS({
         this.cksumValid = true;
         return this.needPax;
       }
-      set(data) {
-        for (const i in data) {
-          if (data[i] !== null && data[i] !== void 0) {
-            this[i] = data[i];
-          }
-        }
-      }
       get type() {
-        return types.name.get(this[TYPE]) || this[TYPE];
+        return this.#type === "Unsupported" ? this.#type : name.get(this.#type);
       }
       get typeKey() {
-        return this[TYPE];
+        return this.#type;
       }
       set type(type) {
-        if (types.code.has(type)) {
-          this[TYPE] = types.code.get(type);
+        const c = String(code.get(type));
+        if (isCode(c) || c === "Unsupported") {
+          this.#type = c;
+        } else if (isCode(type)) {
+          this.#type = type;
         } else {
-          this[TYPE] = type;
+          throw new TypeError("invalid entry type: " + type);
         }
       }
     };
-    var splitPrefix = (p, prefixSize) => {
+    splitPrefix = (p, prefixSize) => {
       const pathSize = 100;
       let pp = p;
       let prefix = "";
-      let ret;
-      const root = pathModule.parse(p).root || ".";
+      let ret = void 0;
+      const root = import_node_path.posix.parse(p).root || ".";
       if (Buffer.byteLength(pp) < pathSize) {
         ret = [pp, prefix, false];
       } else {
-        prefix = pathModule.dirname(pp);
-        pp = pathModule.basename(pp);
+        prefix = import_node_path.posix.dirname(pp);
+        pp = import_node_path.posix.basename(pp);
         do {
           if (Buffer.byteLength(pp) <= pathSize && Buffer.byteLength(prefix) <= prefixSize) {
             ret = [pp, prefix, false];
           } else if (Buffer.byteLength(pp) > pathSize && Buffer.byteLength(prefix) <= prefixSize) {
             ret = [pp.slice(0, pathSize - 1), prefix, true];
           } else {
-            pp = pathModule.join(pathModule.basename(prefix), pp);
-            prefix = pathModule.dirname(prefix);
+            pp = import_node_path.posix.join(import_node_path.posix.basename(prefix), pp);
+            prefix = import_node_path.posix.dirname(prefix);
           }
-        } while (prefix !== root && !ret);
+        } while (prefix !== root && ret === void 0);
         if (!ret) {
           ret = [p.slice(0, pathSize - 1), "", true];
         }
       }
       return ret;
     };
-    var decString = (buf, off, size) => buf.slice(off, off + size).toString("utf8").replace(/\0.*/, "");
-    var decDate = (buf, off, size) => numToDate(decNumber(buf, off, size));
-    var numToDate = (num) => num === null ? null : new Date(num * 1e3);
-    var decNumber = (buf, off, size) => buf[off] & 128 ? large.parse(buf.slice(off, off + size)) : decSmallNumber(buf, off, size);
-    var nanNull = (value) => isNaN(value) ? null : value;
-    var decSmallNumber = (buf, off, size) => nanNull(parseInt(
-      buf.slice(off, off + size).toString("utf8").replace(/\0.*$/, "").trim(),
-      8
-    ));
-    var MAXNUM = {
+    decString = (buf, off, size) => buf.subarray(off, off + size).toString("utf8").replace(/\0.*/, "");
+    decDate = (buf, off, size) => numToDate(decNumber(buf, off, size));
+    numToDate = (num) => num === void 0 ? void 0 : new Date(num * 1e3);
+    decNumber = (buf, off, size) => Number(buf[off]) & 128 ? parse(buf.subarray(off, off + size)) : decSmallNumber(buf, off, size);
+    nanUndef = (value) => isNaN(value) ? void 0 : value;
+    decSmallNumber = (buf, off, size) => nanUndef(parseInt(buf.subarray(off, off + size).toString("utf8").replace(/\0.*$/, "").trim(), 8));
+    MAXNUM = {
       12: 8589934591,
       8: 2097151
     };
-    var encNumber = (buf, off, size, number) => number === null ? false : number > MAXNUM[size] || number < 0 ? (large.encode(number, buf.slice(off, off + size)), true) : (encSmallNumber(buf, off, size, number), false);
-    var encSmallNumber = (buf, off, size, number) => buf.write(octalString(number, size), off, size, "ascii");
-    var octalString = (number, size) => padOctal(Math.floor(number).toString(8), size);
-    var padOctal = (string, size) => (string.length === size - 1 ? string : new Array(size - string.length - 1).join("0") + string + " ") + "\0";
-    var encDate = (buf, off, size, date) => date === null ? false : encNumber(buf, off, size, date.getTime() / 1e3);
-    var NULLS = new Array(156).join("\0");
-    var encString = (buf, off, size, string) => string === null ? false : (buf.write(string + NULLS, off, size, "utf8"), string.length !== Buffer.byteLength(string) || string.length > size);
-    module2.exports = Header;
+    encNumber = (buf, off, size, num) => num === void 0 ? false : num > MAXNUM[size] || num < 0 ? (encode(num, buf.subarray(off, off + size)), true) : (encSmallNumber(buf, off, size, num), false);
+    encSmallNumber = (buf, off, size, num) => buf.write(octalString(num, size), off, size, "ascii");
+    octalString = (num, size) => padOctal(Math.floor(num).toString(8), size);
+    padOctal = (str, size) => (str.length === size - 1 ? str : new Array(size - str.length - 1).join("0") + str + " ") + "\0";
+    encDate = (buf, off, size, date) => date === void 0 ? false : encNumber(buf, off, size, date.getTime() / 1e3);
+    NULLS = new Array(156).join("\0");
+    encString = (buf, off, size, str) => str === void 0 ? false : (buf.write(str + NULLS, off, size, "utf8"), str.length !== Buffer.byteLength(str) || str.length > size);
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js
-var require_pax = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pax.js"(exports2, module2) {
-    "use strict";
-    var Header = require_header();
-    var path10 = require("path");
-    var Pax = class {
-      constructor(obj, global2) {
-        this.atime = obj.atime || null;
-        this.charset = obj.charset || null;
-        this.comment = obj.comment || null;
-        this.ctime = obj.ctime || null;
-        this.gid = obj.gid || null;
-        this.gname = obj.gname || null;
-        this.linkpath = obj.linkpath || null;
-        this.mtime = obj.mtime || null;
-        this.path = obj.path || null;
-        this.size = obj.size || null;
-        this.uid = obj.uid || null;
-        this.uname = obj.uname || null;
-        this.dev = obj.dev || null;
-        this.ino = obj.ino || null;
-        this.nlink = obj.nlink || null;
-        this.global = global2 || false;
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/pax.js
+var import_node_path2, Pax, merge, parseKV, parseKVLine;
+var init_pax = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/pax.js"() {
+    import_node_path2 = require("node:path");
+    init_header();
+    Pax = class _Pax {
+      atime;
+      mtime;
+      ctime;
+      charset;
+      comment;
+      gid;
+      uid;
+      gname;
+      uname;
+      linkpath;
+      dev;
+      ino;
+      nlink;
+      path;
+      size;
+      mode;
+      global;
+      constructor(obj, global2 = false) {
+        this.atime = obj.atime;
+        this.charset = obj.charset;
+        this.comment = obj.comment;
+        this.ctime = obj.ctime;
+        this.dev = obj.dev;
+        this.gid = obj.gid;
+        this.global = global2;
+        this.gname = obj.gname;
+        this.ino = obj.ino;
+        this.linkpath = obj.linkpath;
+        this.mtime = obj.mtime;
+        this.nlink = obj.nlink;
+        this.path = obj.path;
+        this.size = obj.size;
+        this.uid = obj.uid;
+        this.uname = obj.uname;
       }
       encode() {
         const body = this.encodeBody();
         if (body === "") {
-          return null;
+          return Buffer.allocUnsafe(0);
         }
         const bodyLen = Buffer.byteLength(body);
         const bufLen = 512 * Math.ceil(1 + bodyLen / 512);
@@ -13806,20 +14429,22 @@ var require_pax = __commonJS({
           // XXX split the path
           // then the path should be PaxHeader + basename, but less than 99,
           // prepend with the dirname
-          path: ("PaxHeader/" + path10.basename(this.path)).slice(0, 99),
+          /* c8 ignore start */
+          path: ("PaxHeader/" + (0, import_node_path2.basename)(this.path ?? "")).slice(0, 99),
+          /* c8 ignore stop */
           mode: this.mode || 420,
-          uid: this.uid || null,
-          gid: this.gid || null,
+          uid: this.uid,
+          gid: this.gid,
           size: bodyLen,
-          mtime: this.mtime || null,
+          mtime: this.mtime,
           type: this.global ? "GlobalExtendedHeader" : "ExtendedHeader",
           linkpath: "",
           uname: this.uname || "",
           gname: this.gname || "",
           devmaj: 0,
           devmin: 0,
-          atime: this.atime || null,
-          ctime: this.ctime || null
+          atime: this.atime,
+          ctime: this.ctime
         }).encode(buf);
         buf.write(body, 512, bodyLen, "utf8");
         for (let i = bodyLen + 512; i < buf.length; i++) {
@@ -13831,10 +14456,11 @@ var require_pax = __commonJS({
         return this.encodeField("path") + this.encodeField("ctime") + this.encodeField("atime") + this.encodeField("dev") + this.encodeField("ino") + this.encodeField("nlink") + this.encodeField("charset") + this.encodeField("comment") + this.encodeField("gid") + this.encodeField("gname") + this.encodeField("linkpath") + this.encodeField("mtime") + this.encodeField("size") + this.encodeField("uid") + this.encodeField("uname");
       }
       encodeField(field) {
-        if (this[field] === null || this[field] === void 0) {
+        if (this[field] === void 0) {
           return "";
         }
-        const v = this[field] instanceof Date ? this[field].getTime() / 1e3 : this[field];
+        const r = this[field];
+        const v = r instanceof Date ? r.getTime() / 1e3 : r;
         const s = " " + (field === "dev" || field === "ino" || field === "nlink" ? "SCHILY." : "") + field + "=" + v + "\n";
         const byteLen = Buffer.byteLength(s);
         let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1;
@@ -13844,5781 +14470,5127 @@ var require_pax = __commonJS({
         const len = digits + byteLen;
         return len + s;
       }
+      static parse(str, ex, g = false) {
+        return new _Pax(merge(parseKV(str), ex), g);
+      }
     };
-    Pax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g);
-    var merge = (a, b) => b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a;
-    var parseKV = (string) => string.replace(/\n$/, "").split("\n").reduce(parseKVLine, /* @__PURE__ */ Object.create(null));
-    var parseKVLine = (set, line) => {
+    merge = (a, b) => b ? Object.assign({}, b, a) : a;
+    parseKV = (str) => str.replace(/\n$/, "").split("\n").reduce(parseKVLine, /* @__PURE__ */ Object.create(null));
+    parseKVLine = (set, line) => {
       const n = parseInt(line, 10);
       if (n !== Buffer.byteLength(line) + 1) {
         return set;
       }
       line = line.slice((n + " ").length);
       const kv = line.split("=");
-      const k = kv.shift().replace(/^SCHILY\.(dev|ino|nlink)/, "$1");
-      if (!k) {
+      const r = kv.shift();
+      if (!r) {
         return set;
       }
+      const k = r.replace(/^SCHILY\.(dev|ino|nlink)/, "$1");
       const v = kv.join("=");
-      set[k] = /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ? new Date(v * 1e3) : /^[0-9]+$/.test(v) ? +v : v;
+      set[k] = /^([A-Z]+\.)?([mac]|birth|creation)time$/.test(k) ? new Date(Number(v) * 1e3) : /^[0-9]+$/.test(v) ? +v : v;
       return set;
     };
-    module2.exports = Pax;
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js
-var require_strip_trailing_slashes = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-trailing-slashes.js"(exports2, module2) {
-    module2.exports = (str) => {
-      let i = str.length - 1;
-      let slashesStart = -1;
-      while (i > -1 && str.charAt(i) === "/") {
-        slashesStart = i;
-        i--;
-      }
-      return slashesStart === -1 ? str : str.slice(0, slashesStart);
-    };
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js
-var require_warn_mixin = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/warn-mixin.js"(exports2, module2) {
-    "use strict";
-    module2.exports = (Base) => class extends Base {
-      warn(code, message, data = {}) {
-        if (this.file) {
-          data.file = this.file;
-        }
-        if (this.cwd) {
-          data.cwd = this.cwd;
-        }
-        data.code = message instanceof Error && message.code || code;
-        data.tarCode = code;
-        if (!this.strict && data.recoverable !== false) {
-          if (message instanceof Error) {
-            data = Object.assign(message, data);
-            message = message.message;
-          }
-          this.emit("warn", data.tarCode, message, data);
-        } else if (message instanceof Error) {
-          this.emit("error", Object.assign(message, data));
-        } else {
-          this.emit("error", Object.assign(new Error(`${code}: ${message}`), data));
-        }
-      }
-    };
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js
-var require_winchars = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/winchars.js"(exports2, module2) {
-    "use strict";
-    var raw = [
-      "|",
-      "<",
-      ">",
-      "?",
-      ":"
-    ];
-    var win = raw.map((char) => String.fromCharCode(61440 + char.charCodeAt(0)));
-    var toWin = new Map(raw.map((char, i) => [char, win[i]]));
-    var toRaw = new Map(win.map((char, i) => [char, raw[i]]));
-    module2.exports = {
-      encode: (s) => raw.reduce((s2, c) => s2.split(c).join(toWin.get(c)), s),
-      decode: (s) => win.reduce((s2, c) => s2.split(c).join(toRaw.get(c)), s)
-    };
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/normalize-windows-path.js
+var platform, normalizeWindowsPath;
+var init_normalize_windows_path = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/normalize-windows-path.js"() {
+    platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
+    normalizeWindowsPath = platform !== "win32" ? (p) => p : (p) => p && p.replace(/\\/g, "/");
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js
-var require_strip_absolute_path = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/strip-absolute-path.js"(exports2, module2) {
-    var { isAbsolute, parse } = require("path").win32;
-    module2.exports = (path10) => {
-      let r = "";
-      let parsed = parse(path10);
-      while (isAbsolute(path10) || parsed.root) {
-        const root = path10.charAt(0) === "/" && path10.slice(0, 4) !== "//?/" ? "/" : parsed.root;
-        path10 = path10.slice(root.length);
-        r += root;
-        parsed = parse(path10);
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/read-entry.js
+var ReadEntry;
+var init_read_entry = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/read-entry.js"() {
+    init_esm();
+    init_normalize_windows_path();
+    ReadEntry = class extends Minipass {
+      extended;
+      globalExtended;
+      header;
+      startBlockSize;
+      blockRemain;
+      remain;
+      type;
+      meta = false;
+      ignore = false;
+      path;
+      mode;
+      uid;
+      gid;
+      uname;
+      gname;
+      size = 0;
+      mtime;
+      atime;
+      ctime;
+      linkpath;
+      dev;
+      ino;
+      nlink;
+      invalid = false;
+      absolute;
+      unsupported = false;
+      constructor(header, ex, gex) {
+        super({});
+        this.pause();
+        this.extended = ex;
+        this.globalExtended = gex;
+        this.header = header;
+        this.remain = header.size ?? 0;
+        this.startBlockSize = 512 * Math.ceil(this.remain / 512);
+        this.blockRemain = this.startBlockSize;
+        this.type = header.type;
+        switch (this.type) {
+          case "File":
+          case "OldFile":
+          case "Link":
+          case "SymbolicLink":
+          case "CharacterDevice":
+          case "BlockDevice":
+          case "Directory":
+          case "FIFO":
+          case "ContiguousFile":
+          case "GNUDumpDir":
+            break;
+          case "NextFileHasLongLinkpath":
+          case "NextFileHasLongPath":
+          case "OldGnuLongPath":
+          case "GlobalExtendedHeader":
+          case "ExtendedHeader":
+          case "OldExtendedHeader":
+            this.meta = true;
+            break;
+          default:
+            this.ignore = true;
+        }
+        if (!header.path) {
+          throw new Error("no path provided for tar.ReadEntry");
+        }
+        this.path = normalizeWindowsPath(header.path);
+        this.mode = header.mode;
+        if (this.mode) {
+          this.mode = this.mode & 4095;
+        }
+        this.uid = header.uid;
+        this.gid = header.gid;
+        this.uname = header.uname;
+        this.gname = header.gname;
+        this.size = this.remain;
+        this.mtime = header.mtime;
+        this.atime = header.atime;
+        this.ctime = header.ctime;
+        this.linkpath = header.linkpath ? normalizeWindowsPath(header.linkpath) : void 0;
+        this.uname = header.uname;
+        this.gname = header.gname;
+        if (ex) {
+          this.#slurp(ex);
+        }
+        if (gex) {
+          this.#slurp(gex, true);
+        }
+      }
+      write(data) {
+        const writeLen = data.length;
+        if (writeLen > this.blockRemain) {
+          throw new Error("writing more to entry than is appropriate");
+        }
+        const r = this.remain;
+        const br = this.blockRemain;
+        this.remain = Math.max(0, r - writeLen);
+        this.blockRemain = Math.max(0, br - writeLen);
+        if (this.ignore) {
+          return true;
+        }
+        if (r >= writeLen) {
+          return super.write(data);
+        }
+        return super.write(data.subarray(0, r));
+      }
+      #slurp(ex, gex = false) {
+        if (ex.path)
+          ex.path = normalizeWindowsPath(ex.path);
+        if (ex.linkpath)
+          ex.linkpath = normalizeWindowsPath(ex.linkpath);
+        Object.assign(this, Object.fromEntries(Object.entries(ex).filter(([k, v]) => {
+          return !(v === null || v === void 0 || k === "path" && gex);
+        })));
       }
-      return [r, path10];
     };
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js
-var require_mode_fix = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mode-fix.js"(exports2, module2) {
-    "use strict";
-    module2.exports = (mode, isDir, portable) => {
-      mode &= 4095;
-      if (portable) {
-        mode = (mode | 384) & ~18;
-      }
-      if (isDir) {
-        if (mode & 256) {
-          mode |= 64;
-        }
-        if (mode & 32) {
-          mode |= 8;
-        }
-        if (mode & 4) {
-          mode |= 1;
-        }
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/warn-method.js
+var warnMethod;
+var init_warn_method = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/warn-method.js"() {
+    warnMethod = (self2, code2, message, data = {}) => {
+      if (self2.file) {
+        data.file = self2.file;
+      }
+      if (self2.cwd) {
+        data.cwd = self2.cwd;
+      }
+      data.code = message instanceof Error && message.code || code2;
+      data.tarCode = code2;
+      if (!self2.strict && data.recoverable !== false) {
+        if (message instanceof Error) {
+          data = Object.assign(message, data);
+          message = message.message;
+        }
+        self2.emit("warn", code2, message, data);
+      } else if (message instanceof Error) {
+        self2.emit("error", Object.assign(message, data));
+      } else {
+        self2.emit("error", Object.assign(new Error(`${code2}: ${message}`), data));
       }
-      return mode;
     };
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js
-var require_write_entry = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/write-entry.js"(exports2, module2) {
-    "use strict";
-    var { Minipass } = require_minipass();
-    var Pax = require_pax();
-    var Header = require_header();
-    var fs8 = require("fs");
-    var path10 = require("path");
-    var normPath = require_normalize_windows_path();
-    var stripSlash = require_strip_trailing_slashes();
-    var prefixPath = (path11, prefix) => {
-      if (!prefix) {
-        return normPath(path11);
-      }
-      path11 = normPath(path11).replace(/^\.(\/|$)/, "");
-      return stripSlash(prefix) + "/" + path11;
-    };
-    var maxReadSize = 16 * 1024 * 1024;
-    var PROCESS = Symbol("process");
-    var FILE = Symbol("file");
-    var DIRECTORY = Symbol("directory");
-    var SYMLINK = Symbol("symlink");
-    var HARDLINK = Symbol("hardlink");
-    var HEADER = Symbol("header");
-    var READ = Symbol("read");
-    var LSTAT = Symbol("lstat");
-    var ONLSTAT = Symbol("onlstat");
-    var ONREAD = Symbol("onread");
-    var ONREADLINK = Symbol("onreadlink");
-    var OPENFILE = Symbol("openfile");
-    var ONOPENFILE = Symbol("onopenfile");
-    var CLOSE = Symbol("close");
-    var MODE = Symbol("mode");
-    var AWAITDRAIN = Symbol("awaitDrain");
-    var ONDRAIN = Symbol("ondrain");
-    var PREFIX = Symbol("prefix");
-    var HAD_ERROR = Symbol("hadError");
-    var warner = require_warn_mixin();
-    var winchars = require_winchars();
-    var stripAbsolutePath = require_strip_absolute_path();
-    var modeFix = require_mode_fix();
-    var WriteEntry = warner(class WriteEntry extends Minipass {
-      constructor(p, opt) {
-        opt = opt || {};
-        super(opt);
-        if (typeof p !== "string") {
-          throw new TypeError("path is required");
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/parse.js
+var import_events3, maxMetaEntrySize, gzipHeader, STATE, WRITEENTRY, READENTRY, NEXTENTRY, PROCESSENTRY, EX, GEX, META, EMITMETA, BUFFER2, QUEUE, ENDED, EMITTEDEND, EMIT, UNZIP, CONSUMECHUNK, CONSUMECHUNKSUB, CONSUMEBODY, CONSUMEMETA, CONSUMEHEADER, CONSUMING, BUFFERCONCAT, MAYBEEND, WRITING, ABORTED2, DONE, SAW_VALID_ENTRY, SAW_NULL_BLOCK, SAW_EOF, CLOSESTREAM, noop, Parser;
+var init_parse = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/parse.js"() {
+    import_events3 = require("events");
+    init_esm3();
+    init_esm4();
+    init_header();
+    init_pax();
+    init_read_entry();
+    init_warn_method();
+    maxMetaEntrySize = 1024 * 1024;
+    gzipHeader = Buffer.from([31, 139]);
+    STATE = Symbol("state");
+    WRITEENTRY = Symbol("writeEntry");
+    READENTRY = Symbol("readEntry");
+    NEXTENTRY = Symbol("nextEntry");
+    PROCESSENTRY = Symbol("processEntry");
+    EX = Symbol("extendedHeader");
+    GEX = Symbol("globalExtendedHeader");
+    META = Symbol("meta");
+    EMITMETA = Symbol("emitMeta");
+    BUFFER2 = Symbol("buffer");
+    QUEUE = Symbol("queue");
+    ENDED = Symbol("ended");
+    EMITTEDEND = Symbol("emittedEnd");
+    EMIT = Symbol("emit");
+    UNZIP = Symbol("unzip");
+    CONSUMECHUNK = Symbol("consumeChunk");
+    CONSUMECHUNKSUB = Symbol("consumeChunkSub");
+    CONSUMEBODY = Symbol("consumeBody");
+    CONSUMEMETA = Symbol("consumeMeta");
+    CONSUMEHEADER = Symbol("consumeHeader");
+    CONSUMING = Symbol("consuming");
+    BUFFERCONCAT = Symbol("bufferConcat");
+    MAYBEEND = Symbol("maybeEnd");
+    WRITING = Symbol("writing");
+    ABORTED2 = Symbol("aborted");
+    DONE = Symbol("onDone");
+    SAW_VALID_ENTRY = Symbol("sawValidEntry");
+    SAW_NULL_BLOCK = Symbol("sawNullBlock");
+    SAW_EOF = Symbol("sawEOF");
+    CLOSESTREAM = Symbol("closeStream");
+    noop = () => true;
+    Parser = class extends import_events3.EventEmitter {
+      file;
+      strict;
+      maxMetaEntrySize;
+      filter;
+      brotli;
+      writable = true;
+      readable = false;
+      [QUEUE] = new Yallist();
+      [BUFFER2];
+      [READENTRY];
+      [WRITEENTRY];
+      [STATE] = "begin";
+      [META] = "";
+      [EX];
+      [GEX];
+      [ENDED] = false;
+      [UNZIP];
+      [ABORTED2] = false;
+      [SAW_VALID_ENTRY];
+      [SAW_NULL_BLOCK] = false;
+      [SAW_EOF] = false;
+      [WRITING] = false;
+      [CONSUMING] = false;
+      [EMITTEDEND] = false;
+      constructor(opt = {}) {
+        super();
+        this.file = opt.file || "";
+        this.on(DONE, () => {
+          if (this[STATE] === "begin" || this[SAW_VALID_ENTRY] === false) {
+            this.warn("TAR_BAD_ARCHIVE", "Unrecognized archive format");
+          }
+        });
+        if (opt.ondone) {
+          this.on(DONE, opt.ondone);
+        } else {
+          this.on(DONE, () => {
+            this.emit("prefinish");
+            this.emit("finish");
+            this.emit("end");
+          });
         }
-        this.path = normPath(p);
-        this.portable = !!opt.portable;
-        this.myuid = process.getuid && process.getuid() || 0;
-        this.myuser = process.env.USER || "";
-        this.maxReadSize = opt.maxReadSize || maxReadSize;
-        this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
-        this.statCache = opt.statCache || /* @__PURE__ */ new Map();
-        this.preservePaths = !!opt.preservePaths;
-        this.cwd = normPath(opt.cwd || process.cwd());
         this.strict = !!opt.strict;
-        this.noPax = !!opt.noPax;
-        this.noMtime = !!opt.noMtime;
-        this.mtime = opt.mtime || null;
-        this.prefix = opt.prefix ? normPath(opt.prefix) : null;
-        this.fd = null;
-        this.blockLen = null;
-        this.blockRemain = null;
-        this.buf = null;
-        this.offset = null;
-        this.length = null;
-        this.pos = null;
-        this.remain = null;
+        this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize;
+        this.filter = typeof opt.filter === "function" ? opt.filter : noop;
+        const isTBR = opt.file && (opt.file.endsWith(".tar.br") || opt.file.endsWith(".tbr"));
+        this.brotli = !opt.gzip && opt.brotli !== void 0 ? opt.brotli : isTBR ? void 0 : false;
+        this.on("end", () => this[CLOSESTREAM]());
         if (typeof opt.onwarn === "function") {
           this.on("warn", opt.onwarn);
         }
-        let pathWarn = false;
-        if (!this.preservePaths) {
-          const [root, stripped] = stripAbsolutePath(this.path);
-          if (root) {
-            this.path = stripped;
-            pathWarn = root;
-          }
-        }
-        this.win32 = !!opt.win32 || process.platform === "win32";
-        if (this.win32) {
-          this.path = winchars.decode(this.path.replace(/\\/g, "/"));
-          p = p.replace(/\\/g, "/");
+        if (typeof opt.onReadEntry === "function") {
+          this.on("entry", opt.onReadEntry);
         }
-        this.absolute = normPath(opt.absolute || path10.resolve(this.cwd, p));
-        if (this.path === "") {
-          this.path = "./";
+      }
+      warn(code2, message, data = {}) {
+        warnMethod(this, code2, message, data);
+      }
+      [CONSUMEHEADER](chunk, position) {
+        if (this[SAW_VALID_ENTRY] === void 0) {
+          this[SAW_VALID_ENTRY] = false;
         }
-        if (pathWarn) {
-          this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
-            entry: this,
-            path: pathWarn + this.path
-          });
+        let header;
+        try {
+          header = new Header(chunk, position, this[EX], this[GEX]);
+        } catch (er) {
+          return this.warn("TAR_ENTRY_INVALID", er);
         }
-        if (this.statCache.has(this.absolute)) {
-          this[ONLSTAT](this.statCache.get(this.absolute));
+        if (header.nullBlock) {
+          if (this[SAW_NULL_BLOCK]) {
+            this[SAW_EOF] = true;
+            if (this[STATE] === "begin") {
+              this[STATE] = "header";
+            }
+            this[EMIT]("eof");
+          } else {
+            this[SAW_NULL_BLOCK] = true;
+            this[EMIT]("nullBlock");
+          }
         } else {
-          this[LSTAT]();
+          this[SAW_NULL_BLOCK] = false;
+          if (!header.cksumValid) {
+            this.warn("TAR_ENTRY_INVALID", "checksum failure", { header });
+          } else if (!header.path) {
+            this.warn("TAR_ENTRY_INVALID", "path is required", { header });
+          } else {
+            const type = header.type;
+            if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {
+              this.warn("TAR_ENTRY_INVALID", "linkpath required", {
+                header
+              });
+            } else if (!/^(Symbolic)?Link$/.test(type) && !/^(Global)?ExtendedHeader$/.test(type) && header.linkpath) {
+              this.warn("TAR_ENTRY_INVALID", "linkpath forbidden", {
+                header
+              });
+            } else {
+              const entry = this[WRITEENTRY] = new ReadEntry(header, this[EX], this[GEX]);
+              if (!this[SAW_VALID_ENTRY]) {
+                if (entry.remain) {
+                  const onend = () => {
+                    if (!entry.invalid) {
+                      this[SAW_VALID_ENTRY] = true;
+                    }
+                  };
+                  entry.on("end", onend);
+                } else {
+                  this[SAW_VALID_ENTRY] = true;
+                }
+              }
+              if (entry.meta) {
+                if (entry.size > this.maxMetaEntrySize) {
+                  entry.ignore = true;
+                  this[EMIT]("ignoredEntry", entry);
+                  this[STATE] = "ignore";
+                  entry.resume();
+                } else if (entry.size > 0) {
+                  this[META] = "";
+                  entry.on("data", (c) => this[META] += c);
+                  this[STATE] = "meta";
+                }
+              } else {
+                this[EX] = void 0;
+                entry.ignore = entry.ignore || !this.filter(entry.path, entry);
+                if (entry.ignore) {
+                  this[EMIT]("ignoredEntry", entry);
+                  this[STATE] = entry.remain ? "ignore" : "header";
+                  entry.resume();
+                } else {
+                  if (entry.remain) {
+                    this[STATE] = "body";
+                  } else {
+                    this[STATE] = "header";
+                    entry.end();
+                  }
+                  if (!this[READENTRY]) {
+                    this[QUEUE].push(entry);
+                    this[NEXTENTRY]();
+                  } else {
+                    this[QUEUE].push(entry);
+                  }
+                }
+              }
+            }
+          }
         }
       }
-      emit(ev, ...data) {
-        if (ev === "error") {
-          this[HAD_ERROR] = true;
-        }
-        return super.emit(ev, ...data);
+      [CLOSESTREAM]() {
+        queueMicrotask(() => this.emit("close"));
       }
-      [LSTAT]() {
-        fs8.lstat(this.absolute, (er, stat) => {
-          if (er) {
-            return this.emit("error", er);
+      [PROCESSENTRY](entry) {
+        let go = true;
+        if (!entry) {
+          this[READENTRY] = void 0;
+          go = false;
+        } else if (Array.isArray(entry)) {
+          const [ev, ...args] = entry;
+          this.emit(ev, ...args);
+        } else {
+          this[READENTRY] = entry;
+          this.emit("entry", entry);
+          if (!entry.emittedEnd) {
+            entry.on("end", () => this[NEXTENTRY]());
+            go = false;
           }
-          this[ONLSTAT](stat);
-        });
-      }
-      [ONLSTAT](stat) {
-        this.statCache.set(this.absolute, stat);
-        this.stat = stat;
-        if (!stat.isFile()) {
-          stat.size = 0;
         }
-        this.type = getType(stat);
-        this.emit("stat", stat);
-        this[PROCESS]();
+        return go;
       }
-      [PROCESS]() {
-        switch (this.type) {
-          case "File":
-            return this[FILE]();
-          case "Directory":
-            return this[DIRECTORY]();
-          case "SymbolicLink":
-            return this[SYMLINK]();
-          default:
-            return this.end();
+      [NEXTENTRY]() {
+        do {
+        } while (this[PROCESSENTRY](this[QUEUE].shift()));
+        if (!this[QUEUE].length) {
+          const re = this[READENTRY];
+          const drainNow = !re || re.flowing || re.size === re.remain;
+          if (drainNow) {
+            if (!this[WRITING]) {
+              this.emit("drain");
+            }
+          } else {
+            re.once("drain", () => this.emit("drain"));
+          }
         }
       }
-      [MODE](mode) {
-        return modeFix(mode, this.type === "Directory", this.portable);
-      }
-      [PREFIX](path11) {
-        return prefixPath(path11, this.prefix);
-      }
-      [HEADER]() {
-        if (this.type === "Directory" && this.portable) {
-          this.noMtime = true;
+      [CONSUMEBODY](chunk, position) {
+        const entry = this[WRITEENTRY];
+        if (!entry) {
+          throw new Error("attempt to consume body without entry??");
         }
-        this.header = new Header({
-          path: this[PREFIX](this.path),
-          // only apply the prefix to hard links.
-          linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
-          // only the permissions and setuid/setgid/sticky bitflags
-          // not the higher-order bits that specify file type
-          mode: this[MODE](this.stat.mode),
-          uid: this.portable ? null : this.stat.uid,
-          gid: this.portable ? null : this.stat.gid,
-          size: this.stat.size,
-          mtime: this.noMtime ? null : this.mtime || this.stat.mtime,
-          type: this.type,
-          uname: this.portable ? null : this.stat.uid === this.myuid ? this.myuser : "",
-          atime: this.portable ? null : this.stat.atime,
-          ctime: this.portable ? null : this.stat.ctime
-        });
-        if (this.header.encode() && !this.noPax) {
-          super.write(new Pax({
-            atime: this.portable ? null : this.header.atime,
-            ctime: this.portable ? null : this.header.ctime,
-            gid: this.portable ? null : this.header.gid,
-            mtime: this.noMtime ? null : this.mtime || this.header.mtime,
-            path: this[PREFIX](this.path),
-            linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
-            size: this.header.size,
-            uid: this.portable ? null : this.header.uid,
-            uname: this.portable ? null : this.header.uname,
-            dev: this.portable ? null : this.stat.dev,
-            ino: this.portable ? null : this.stat.ino,
-            nlink: this.portable ? null : this.stat.nlink
-          }).encode());
+        const br = entry.blockRemain ?? 0;
+        const c = br >= chunk.length && position === 0 ? chunk : chunk.subarray(position, position + br);
+        entry.write(c);
+        if (!entry.blockRemain) {
+          this[STATE] = "header";
+          this[WRITEENTRY] = void 0;
+          entry.end();
         }
-        super.write(this.header.block);
+        return c.length;
       }
-      [DIRECTORY]() {
-        if (this.path.slice(-1) !== "/") {
-          this.path += "/";
+      [CONSUMEMETA](chunk, position) {
+        const entry = this[WRITEENTRY];
+        const ret = this[CONSUMEBODY](chunk, position);
+        if (!this[WRITEENTRY] && entry) {
+          this[EMITMETA](entry);
         }
-        this.stat.size = 0;
-        this[HEADER]();
-        this.end();
-      }
-      [SYMLINK]() {
-        fs8.readlink(this.absolute, (er, linkpath) => {
-          if (er) {
-            return this.emit("error", er);
-          }
-          this[ONREADLINK](linkpath);
-        });
-      }
-      [ONREADLINK](linkpath) {
-        this.linkpath = normPath(linkpath);
-        this[HEADER]();
-        this.end();
-      }
-      [HARDLINK](linkpath) {
-        this.type = "Link";
-        this.linkpath = normPath(path10.relative(this.cwd, linkpath));
-        this.stat.size = 0;
-        this[HEADER]();
-        this.end();
+        return ret;
       }
-      [FILE]() {
-        if (this.stat.nlink > 1) {
-          const linkKey = this.stat.dev + ":" + this.stat.ino;
-          if (this.linkCache.has(linkKey)) {
-            const linkpath = this.linkCache.get(linkKey);
-            if (linkpath.indexOf(this.cwd) === 0) {
-              return this[HARDLINK](linkpath);
-            }
-          }
-          this.linkCache.set(linkKey, this.absolute);
-        }
-        this[HEADER]();
-        if (this.stat.size === 0) {
-          return this.end();
+      [EMIT](ev, data, extra) {
+        if (!this[QUEUE].length && !this[READENTRY]) {
+          this.emit(ev, data, extra);
+        } else {
+          this[QUEUE].push([ev, data, extra]);
         }
-        this[OPENFILE]();
       }
-      [OPENFILE]() {
-        fs8.open(this.absolute, "r", (er, fd) => {
-          if (er) {
-            return this.emit("error", er);
+      [EMITMETA](entry) {
+        this[EMIT]("meta", this[META]);
+        switch (entry.type) {
+          case "ExtendedHeader":
+          case "OldExtendedHeader":
+            this[EX] = Pax.parse(this[META], this[EX], false);
+            break;
+          case "GlobalExtendedHeader":
+            this[GEX] = Pax.parse(this[META], this[GEX], true);
+            break;
+          case "NextFileHasLongPath":
+          case "OldGnuLongPath": {
+            const ex = this[EX] ?? /* @__PURE__ */ Object.create(null);
+            this[EX] = ex;
+            ex.path = this[META].replace(/\0.*/, "");
+            break;
           }
-          this[ONOPENFILE](fd);
-        });
-      }
-      [ONOPENFILE](fd) {
-        this.fd = fd;
-        if (this[HAD_ERROR]) {
-          return this[CLOSE]();
-        }
-        this.blockLen = 512 * Math.ceil(this.stat.size / 512);
-        this.blockRemain = this.blockLen;
-        const bufLen = Math.min(this.blockLen, this.maxReadSize);
-        this.buf = Buffer.allocUnsafe(bufLen);
-        this.offset = 0;
-        this.pos = 0;
-        this.remain = this.stat.size;
-        this.length = this.buf.length;
-        this[READ]();
-      }
-      [READ]() {
-        const { fd, buf, offset, length, pos } = this;
-        fs8.read(fd, buf, offset, length, pos, (er, bytesRead) => {
-          if (er) {
-            return this[CLOSE](() => this.emit("error", er));
+          case "NextFileHasLongLinkpath": {
+            const ex = this[EX] || /* @__PURE__ */ Object.create(null);
+            this[EX] = ex;
+            ex.linkpath = this[META].replace(/\0.*/, "");
+            break;
           }
-          this[ONREAD](bytesRead);
-        });
+          default:
+            throw new Error("unknown meta: " + entry.type);
+        }
       }
-      [CLOSE](cb) {
-        fs8.close(this.fd, cb);
+      abort(error) {
+        this[ABORTED2] = true;
+        this.emit("abort", error);
+        this.warn("TAR_ABORT", error, { recoverable: false });
       }
-      [ONREAD](bytesRead) {
-        if (bytesRead <= 0 && this.remain > 0) {
-          const er = new Error("encountered unexpected EOF");
-          er.path = this.absolute;
-          er.syscall = "read";
-          er.code = "EOF";
-          return this[CLOSE](() => this.emit("error", er));
+      write(chunk, encoding, cb) {
+        if (typeof encoding === "function") {
+          cb = encoding;
+          encoding = void 0;
+        }
+        if (typeof chunk === "string") {
+          chunk = Buffer.from(
+            chunk,
+            /* c8 ignore next */
+            typeof encoding === "string" ? encoding : "utf8"
+          );
         }
-        if (bytesRead > this.remain) {
-          const er = new Error("did not encounter expected EOF");
-          er.path = this.absolute;
-          er.syscall = "read";
-          er.code = "EOF";
-          return this[CLOSE](() => this.emit("error", er));
+        if (this[ABORTED2]) {
+          cb?.();
+          return false;
         }
-        if (bytesRead === this.remain) {
-          for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {
-            this.buf[i + this.offset] = 0;
-            bytesRead++;
-            this.remain++;
+        const needSniff = this[UNZIP] === void 0 || this.brotli === void 0 && this[UNZIP] === false;
+        if (needSniff && chunk) {
+          if (this[BUFFER2]) {
+            chunk = Buffer.concat([this[BUFFER2], chunk]);
+            this[BUFFER2] = void 0;
+          }
+          if (chunk.length < gzipHeader.length) {
+            this[BUFFER2] = chunk;
+            cb?.();
+            return true;
+          }
+          for (let i = 0; this[UNZIP] === void 0 && i < gzipHeader.length; i++) {
+            if (chunk[i] !== gzipHeader[i]) {
+              this[UNZIP] = false;
+            }
+          }
+          const maybeBrotli = this.brotli === void 0;
+          if (this[UNZIP] === false && maybeBrotli) {
+            if (chunk.length < 512) {
+              if (this[ENDED]) {
+                this.brotli = true;
+              } else {
+                this[BUFFER2] = chunk;
+                cb?.();
+                return true;
+              }
+            } else {
+              try {
+                new Header(chunk.subarray(0, 512));
+                this.brotli = false;
+              } catch (_) {
+                this.brotli = true;
+              }
+            }
+          }
+          if (this[UNZIP] === void 0 || this[UNZIP] === false && this.brotli) {
+            const ended = this[ENDED];
+            this[ENDED] = false;
+            this[UNZIP] = this[UNZIP] === void 0 ? new Unzip({}) : new BrotliDecompress({});
+            this[UNZIP].on("data", (chunk2) => this[CONSUMECHUNK](chunk2));
+            this[UNZIP].on("error", (er) => this.abort(er));
+            this[UNZIP].on("end", () => {
+              this[ENDED] = true;
+              this[CONSUMECHUNK]();
+            });
+            this[WRITING] = true;
+            const ret2 = !!this[UNZIP][ended ? "end" : "write"](chunk);
+            this[WRITING] = false;
+            cb?.();
+            return ret2;
           }
         }
-        const writeBuf = this.offset === 0 && bytesRead === this.buf.length ? this.buf : this.buf.slice(this.offset, this.offset + bytesRead);
-        const flushed = this.write(writeBuf);
-        if (!flushed) {
-          this[AWAITDRAIN](() => this[ONDRAIN]());
+        this[WRITING] = true;
+        if (this[UNZIP]) {
+          this[UNZIP].write(chunk);
         } else {
-          this[ONDRAIN]();
+          this[CONSUMECHUNK](chunk);
         }
+        this[WRITING] = false;
+        const ret = this[QUEUE].length ? false : this[READENTRY] ? this[READENTRY].flowing : true;
+        if (!ret && !this[QUEUE].length) {
+          this[READENTRY]?.once("drain", () => this.emit("drain"));
+        }
+        cb?.();
+        return ret;
       }
-      [AWAITDRAIN](cb) {
-        this.once("drain", cb);
+      [BUFFERCONCAT](c) {
+        if (c && !this[ABORTED2]) {
+          this[BUFFER2] = this[BUFFER2] ? Buffer.concat([this[BUFFER2], c]) : c;
+        }
       }
-      write(writeBuf) {
-        if (this.blockRemain < writeBuf.length) {
-          const er = new Error("writing more data than expected");
-          er.path = this.absolute;
-          return this.emit("error", er);
+      [MAYBEEND]() {
+        if (this[ENDED] && !this[EMITTEDEND] && !this[ABORTED2] && !this[CONSUMING]) {
+          this[EMITTEDEND] = true;
+          const entry = this[WRITEENTRY];
+          if (entry && entry.blockRemain) {
+            const have = this[BUFFER2] ? this[BUFFER2].length : 0;
+            this.warn("TAR_BAD_ARCHIVE", `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry });
+            if (this[BUFFER2]) {
+              entry.write(this[BUFFER2]);
+            }
+            entry.end();
+          }
+          this[EMIT](DONE);
         }
-        this.remain -= writeBuf.length;
-        this.blockRemain -= writeBuf.length;
-        this.pos += writeBuf.length;
-        this.offset += writeBuf.length;
-        return super.write(writeBuf);
       }
-      [ONDRAIN]() {
-        if (!this.remain) {
-          if (this.blockRemain) {
-            super.write(Buffer.alloc(this.blockRemain));
+      [CONSUMECHUNK](chunk) {
+        if (this[CONSUMING] && chunk) {
+          this[BUFFERCONCAT](chunk);
+        } else if (!chunk && !this[BUFFER2]) {
+          this[MAYBEEND]();
+        } else if (chunk) {
+          this[CONSUMING] = true;
+          if (this[BUFFER2]) {
+            this[BUFFERCONCAT](chunk);
+            const c = this[BUFFER2];
+            this[BUFFER2] = void 0;
+            this[CONSUMECHUNKSUB](c);
+          } else {
+            this[CONSUMECHUNKSUB](chunk);
           }
-          return this[CLOSE]((er) => er ? this.emit("error", er) : this.end());
+          while (this[BUFFER2] && this[BUFFER2]?.length >= 512 && !this[ABORTED2] && !this[SAW_EOF]) {
+            const c = this[BUFFER2];
+            this[BUFFER2] = void 0;
+            this[CONSUMECHUNKSUB](c);
+          }
+          this[CONSUMING] = false;
         }
-        if (this.offset >= this.length) {
-          this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length));
-          this.offset = 0;
+        if (!this[BUFFER2] || this[ENDED]) {
+          this[MAYBEEND]();
         }
-        this.length = this.buf.length - this.offset;
-        this[READ]();
       }
-    });
-    var WriteEntrySync = class extends WriteEntry {
-      [LSTAT]() {
-        this[ONLSTAT](fs8.lstatSync(this.absolute));
-      }
-      [SYMLINK]() {
-        this[ONREADLINK](fs8.readlinkSync(this.absolute));
-      }
-      [OPENFILE]() {
-        this[ONOPENFILE](fs8.openSync(this.absolute, "r"));
-      }
-      [READ]() {
-        let threw = true;
-        try {
-          const { fd, buf, offset, length, pos } = this;
-          const bytesRead = fs8.readSync(fd, buf, offset, length, pos);
-          this[ONREAD](bytesRead);
-          threw = false;
-        } finally {
-          if (threw) {
-            try {
-              this[CLOSE](() => {
-              });
-            } catch (er) {
-            }
+      [CONSUMECHUNKSUB](chunk) {
+        let position = 0;
+        const length = chunk.length;
+        while (position + 512 <= length && !this[ABORTED2] && !this[SAW_EOF]) {
+          switch (this[STATE]) {
+            case "begin":
+            case "header":
+              this[CONSUMEHEADER](chunk, position);
+              position += 512;
+              break;
+            case "ignore":
+            case "body":
+              position += this[CONSUMEBODY](chunk, position);
+              break;
+            case "meta":
+              position += this[CONSUMEMETA](chunk, position);
+              break;
+            default:
+              throw new Error("invalid state: " + this[STATE]);
+          }
+        }
+        if (position < length) {
+          if (this[BUFFER2]) {
+            this[BUFFER2] = Buffer.concat([
+              chunk.subarray(position),
+              this[BUFFER2]
+            ]);
+          } else {
+            this[BUFFER2] = chunk.subarray(position);
           }
         }
       }
-      [AWAITDRAIN](cb) {
-        cb();
-      }
-      [CLOSE](cb) {
-        fs8.closeSync(this.fd);
-        cb();
+      end(chunk, encoding, cb) {
+        if (typeof chunk === "function") {
+          cb = chunk;
+          encoding = void 0;
+          chunk = void 0;
+        }
+        if (typeof encoding === "function") {
+          cb = encoding;
+          encoding = void 0;
+        }
+        if (typeof chunk === "string") {
+          chunk = Buffer.from(chunk, encoding);
+        }
+        if (cb)
+          this.once("finish", cb);
+        if (!this[ABORTED2]) {
+          if (this[UNZIP]) {
+            if (chunk)
+              this[UNZIP].write(chunk);
+            this[UNZIP].end();
+          } else {
+            this[ENDED] = true;
+            if (this.brotli === void 0)
+              chunk = chunk || Buffer.alloc(0);
+            if (chunk)
+              this.write(chunk);
+            this[MAYBEEND]();
+          }
+        }
+        return this;
       }
     };
-    var WriteEntryTar = warner(class WriteEntryTar extends Minipass {
-      constructor(readEntry, opt) {
-        opt = opt || {};
-        super(opt);
-        this.preservePaths = !!opt.preservePaths;
-        this.portable = !!opt.portable;
-        this.strict = !!opt.strict;
-        this.noPax = !!opt.noPax;
-        this.noMtime = !!opt.noMtime;
-        this.readEntry = readEntry;
-        this.type = readEntry.type;
-        if (this.type === "Directory" && this.portable) {
-          this.noMtime = true;
-        }
-        this.prefix = opt.prefix || null;
-        this.path = normPath(readEntry.path);
-        this.mode = this[MODE](readEntry.mode);
-        this.uid = this.portable ? null : readEntry.uid;
-        this.gid = this.portable ? null : readEntry.gid;
-        this.uname = this.portable ? null : readEntry.uname;
-        this.gname = this.portable ? null : readEntry.gname;
-        this.size = readEntry.size;
-        this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime;
-        this.atime = this.portable ? null : readEntry.atime;
-        this.ctime = this.portable ? null : readEntry.ctime;
-        this.linkpath = normPath(readEntry.linkpath);
-        if (typeof opt.onwarn === "function") {
-          this.on("warn", opt.onwarn);
-        }
-        let pathWarn = false;
-        if (!this.preservePaths) {
-          const [root, stripped] = stripAbsolutePath(this.path);
-          if (root) {
-            this.path = stripped;
-            pathWarn = root;
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/strip-trailing-slashes.js
+var stripTrailingSlashes;
+var init_strip_trailing_slashes = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/strip-trailing-slashes.js"() {
+    stripTrailingSlashes = (str) => {
+      let i = str.length - 1;
+      let slashesStart = -1;
+      while (i > -1 && str.charAt(i) === "/") {
+        slashesStart = i;
+        i--;
+      }
+      return slashesStart === -1 ? str : str.slice(0, slashesStart);
+    };
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/list.js
+var list_exports = {};
+__export(list_exports, {
+  filesFilter: () => filesFilter,
+  list: () => list
+});
+var import_node_fs, import_path2, onReadEntryFunction, filesFilter, listFileSync, listFile, list;
+var init_list = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/list.js"() {
+    init_esm2();
+    import_node_fs = __toESM(require("node:fs"), 1);
+    import_path2 = require("path");
+    init_make_command();
+    init_parse();
+    init_strip_trailing_slashes();
+    onReadEntryFunction = (opt) => {
+      const onReadEntry = opt.onReadEntry;
+      opt.onReadEntry = onReadEntry ? (e) => {
+        onReadEntry(e);
+        e.resume();
+      } : (e) => e.resume();
+    };
+    filesFilter = (opt, files) => {
+      const map = new Map(files.map((f) => [stripTrailingSlashes(f), true]));
+      const filter = opt.filter;
+      const mapHas = (file, r = "") => {
+        const root = r || (0, import_path2.parse)(file).root || ".";
+        let ret;
+        if (file === root)
+          ret = false;
+        else {
+          const m = map.get(file);
+          if (m !== void 0) {
+            ret = m;
+          } else {
+            ret = mapHas((0, import_path2.dirname)(file), root);
           }
         }
-        this.remain = readEntry.size;
-        this.blockRemain = readEntry.startBlockSize;
-        this.header = new Header({
-          path: this[PREFIX](this.path),
-          linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
-          // only the permissions and setuid/setgid/sticky bitflags
-          // not the higher-order bits that specify file type
-          mode: this.mode,
-          uid: this.portable ? null : this.uid,
-          gid: this.portable ? null : this.gid,
-          size: this.size,
-          mtime: this.noMtime ? null : this.mtime,
-          type: this.type,
-          uname: this.portable ? null : this.uname,
-          atime: this.portable ? null : this.atime,
-          ctime: this.portable ? null : this.ctime
-        });
-        if (pathWarn) {
-          this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
-            entry: this,
-            path: pathWarn + this.path
-          });
-        }
-        if (this.header.encode() && !this.noPax) {
-          super.write(new Pax({
-            atime: this.portable ? null : this.atime,
-            ctime: this.portable ? null : this.ctime,
-            gid: this.portable ? null : this.gid,
-            mtime: this.noMtime ? null : this.mtime,
-            path: this[PREFIX](this.path),
-            linkpath: this.type === "Link" ? this[PREFIX](this.linkpath) : this.linkpath,
-            size: this.size,
-            uid: this.portable ? null : this.uid,
-            uname: this.portable ? null : this.uname,
-            dev: this.portable ? null : this.readEntry.dev,
-            ino: this.portable ? null : this.readEntry.ino,
-            nlink: this.portable ? null : this.readEntry.nlink
-          }).encode());
-        }
-        super.write(this.header.block);
-        readEntry.pipe(this);
-      }
-      [PREFIX](path11) {
-        return prefixPath(path11, this.prefix);
-      }
-      [MODE](mode) {
-        return modeFix(mode, this.type === "Directory", this.portable);
-      }
-      write(data) {
-        const writeLen = data.length;
-        if (writeLen > this.blockRemain) {
-          throw new Error("writing more to entry than is appropriate");
+        map.set(file, ret);
+        return ret;
+      };
+      opt.filter = filter ? (file, entry) => filter(file, entry) && mapHas(stripTrailingSlashes(file)) : (file) => mapHas(stripTrailingSlashes(file));
+    };
+    listFileSync = (opt) => {
+      const p = new Parser(opt);
+      const file = opt.file;
+      let fd;
+      try {
+        const stat2 = import_node_fs.default.statSync(file);
+        const readSize = opt.maxReadSize || 16 * 1024 * 1024;
+        if (stat2.size < readSize) {
+          p.end(import_node_fs.default.readFileSync(file));
+        } else {
+          let pos2 = 0;
+          const buf = Buffer.allocUnsafe(readSize);
+          fd = import_node_fs.default.openSync(file, "r");
+          while (pos2 < stat2.size) {
+            const bytesRead = import_node_fs.default.readSync(fd, buf, 0, readSize, pos2);
+            pos2 += bytesRead;
+            p.write(buf.subarray(0, bytesRead));
+          }
+          p.end();
         }
-        this.blockRemain -= writeLen;
-        return super.write(data);
-      }
-      end() {
-        if (this.blockRemain) {
-          super.write(Buffer.alloc(this.blockRemain));
+      } finally {
+        if (typeof fd === "number") {
+          try {
+            import_node_fs.default.closeSync(fd);
+          } catch (er) {
+          }
         }
-        return super.end();
       }
+    };
+    listFile = (opt, _files) => {
+      const parse5 = new Parser(opt);
+      const readSize = opt.maxReadSize || 16 * 1024 * 1024;
+      const file = opt.file;
+      const p = new Promise((resolve2, reject) => {
+        parse5.on("error", reject);
+        parse5.on("end", resolve2);
+        import_node_fs.default.stat(file, (er, stat2) => {
+          if (er) {
+            reject(er);
+          } else {
+            const stream = new ReadStream(file, {
+              readSize,
+              size: stat2.size
+            });
+            stream.on("error", reject);
+            stream.pipe(parse5);
+          }
+        });
+      });
+      return p;
+    };
+    list = makeCommand(listFileSync, listFile, (opt) => new Parser(opt), (opt) => new Parser(opt), (opt, files) => {
+      if (files?.length)
+        filesFilter(opt, files);
+      if (!opt.noResume)
+        onReadEntryFunction(opt);
     });
-    WriteEntry.Sync = WriteEntrySync;
-    WriteEntry.Tar = WriteEntryTar;
-    var getType = (stat) => stat.isFile() ? "File" : stat.isDirectory() ? "Directory" : stat.isSymbolicLink() ? "SymbolicLink" : "Unsupported";
-    module2.exports = WriteEntry;
   }
 });
 
-// .yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js
-var require_iterator = __commonJS({
-  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/iterator.js"(exports2, module2) {
-    "use strict";
-    module2.exports = function(Yallist) {
-      Yallist.prototype[Symbol.iterator] = function* () {
-        for (let walker = this.head; walker; walker = walker.next) {
-          yield walker.value;
-        }
-      };
-    };
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/get-write-flag.js
+var import_fs3, platform2, isWindows, O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP, fMapEnabled, fMapLimit, fMapFlag, getWriteFlag;
+var init_get_write_flag = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/get-write-flag.js"() {
+    import_fs3 = __toESM(require("fs"), 1);
+    platform2 = process.env.__FAKE_PLATFORM__ || process.platform;
+    isWindows = platform2 === "win32";
+    ({ O_CREAT, O_TRUNC, O_WRONLY } = import_fs3.default.constants);
+    UV_FS_O_FILEMAP = Number(process.env.__FAKE_FS_O_FILENAME__) || import_fs3.default.constants.UV_FS_O_FILEMAP || 0;
+    fMapEnabled = isWindows && !!UV_FS_O_FILEMAP;
+    fMapLimit = 512 * 1024;
+    fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY;
+    getWriteFlag = !fMapEnabled ? () => "w" : (size) => size < fMapLimit ? fMapFlag : "w";
   }
 });
 
-// .yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js
-var require_yallist = __commonJS({
-  ".yarn/cache/yallist-npm-4.0.0-b493d9e907-2286b5e8db.zip/node_modules/yallist/yallist.js"(exports2, module2) {
-    "use strict";
-    module2.exports = Yallist;
-    Yallist.Node = Node;
-    Yallist.create = Yallist;
-    function Yallist(list) {
-      var self2 = this;
-      if (!(self2 instanceof Yallist)) {
-        self2 = new Yallist();
-      }
-      self2.tail = null;
-      self2.head = null;
-      self2.length = 0;
-      if (list && typeof list.forEach === "function") {
-        list.forEach(function(item) {
-          self2.push(item);
-        });
-      } else if (arguments.length > 0) {
-        for (var i = 0, l = arguments.length; i < l; i++) {
-          self2.push(arguments[i]);
-        }
-      }
-      return self2;
-    }
-    Yallist.prototype.removeNode = function(node) {
-      if (node.list !== this) {
-        throw new Error("removing node which does not belong to this list");
-      }
-      var next = node.next;
-      var prev = node.prev;
-      if (next) {
-        next.prev = prev;
-      }
-      if (prev) {
-        prev.next = next;
-      }
-      if (node === this.head) {
-        this.head = next;
-      }
-      if (node === this.tail) {
-        this.tail = prev;
+// .yarn/cache/chownr-npm-3.0.0-5275e85d25-43925b8770.zip/node_modules/chownr/dist/esm/index.js
+var import_node_fs2, import_node_path3, lchownSync, chown, chownrKid, chownr, chownrKidSync, chownrSync;
+var init_esm5 = __esm({
+  ".yarn/cache/chownr-npm-3.0.0-5275e85d25-43925b8770.zip/node_modules/chownr/dist/esm/index.js"() {
+    import_node_fs2 = __toESM(require("node:fs"), 1);
+    import_node_path3 = __toESM(require("node:path"), 1);
+    lchownSync = (path16, uid, gid) => {
+      try {
+        return import_node_fs2.default.lchownSync(path16, uid, gid);
+      } catch (er) {
+        if (er?.code !== "ENOENT")
+          throw er;
       }
-      node.list.length--;
-      node.next = null;
-      node.prev = null;
-      node.list = null;
-      return next;
     };
-    Yallist.prototype.unshiftNode = function(node) {
-      if (node === this.head) {
-        return;
-      }
-      if (node.list) {
-        node.list.removeNode(node);
-      }
-      var head = this.head;
-      node.list = this;
-      node.next = head;
-      if (head) {
-        head.prev = node;
-      }
-      this.head = node;
-      if (!this.tail) {
-        this.tail = node;
-      }
-      this.length++;
+    chown = (cpath, uid, gid, cb) => {
+      import_node_fs2.default.lchown(cpath, uid, gid, (er) => {
+        cb(er && er?.code !== "ENOENT" ? er : null);
+      });
     };
-    Yallist.prototype.pushNode = function(node) {
-      if (node === this.tail) {
-        return;
-      }
-      if (node.list) {
-        node.list.removeNode(node);
-      }
-      var tail = this.tail;
-      node.list = this;
-      node.prev = tail;
-      if (tail) {
-        tail.next = node;
-      }
-      this.tail = node;
-      if (!this.head) {
-        this.head = node;
+    chownrKid = (p, child, uid, gid, cb) => {
+      if (child.isDirectory()) {
+        chownr(import_node_path3.default.resolve(p, child.name), uid, gid, (er) => {
+          if (er)
+            return cb(er);
+          const cpath = import_node_path3.default.resolve(p, child.name);
+          chown(cpath, uid, gid, cb);
+        });
+      } else {
+        const cpath = import_node_path3.default.resolve(p, child.name);
+        chown(cpath, uid, gid, cb);
       }
-      this.length++;
     };
-    Yallist.prototype.push = function() {
-      for (var i = 0, l = arguments.length; i < l; i++) {
-        push(this, arguments[i]);
-      }
-      return this.length;
+    chownr = (p, uid, gid, cb) => {
+      import_node_fs2.default.readdir(p, { withFileTypes: true }, (er, children) => {
+        if (er) {
+          if (er.code === "ENOENT")
+            return cb();
+          else if (er.code !== "ENOTDIR" && er.code !== "ENOTSUP")
+            return cb(er);
+        }
+        if (er || !children.length)
+          return chown(p, uid, gid, cb);
+        let len = children.length;
+        let errState = null;
+        const then = (er2) => {
+          if (errState)
+            return;
+          if (er2)
+            return cb(errState = er2);
+          if (--len === 0)
+            return chown(p, uid, gid, cb);
+        };
+        for (const child of children) {
+          chownrKid(p, child, uid, gid, then);
+        }
+      });
     };
-    Yallist.prototype.unshift = function() {
-      for (var i = 0, l = arguments.length; i < l; i++) {
-        unshift(this, arguments[i]);
-      }
-      return this.length;
+    chownrKidSync = (p, child, uid, gid) => {
+      if (child.isDirectory())
+        chownrSync(import_node_path3.default.resolve(p, child.name), uid, gid);
+      lchownSync(import_node_path3.default.resolve(p, child.name), uid, gid);
     };
-    Yallist.prototype.pop = function() {
-      if (!this.tail) {
-        return void 0;
+    chownrSync = (p, uid, gid) => {
+      let children;
+      try {
+        children = import_node_fs2.default.readdirSync(p, { withFileTypes: true });
+      } catch (er) {
+        const e = er;
+        if (e?.code === "ENOENT")
+          return;
+        else if (e?.code === "ENOTDIR" || e?.code === "ENOTSUP")
+          return lchownSync(p, uid, gid);
+        else
+          throw e;
       }
-      var res = this.tail.value;
-      this.tail = this.tail.prev;
-      if (this.tail) {
-        this.tail.next = null;
-      } else {
-        this.head = null;
+      for (const child of children) {
+        chownrKidSync(p, child, uid, gid);
       }
-      this.length--;
-      return res;
+      return lchownSync(p, uid, gid);
     };
-    Yallist.prototype.shift = function() {
-      if (!this.head) {
-        return void 0;
-      }
-      var res = this.head.value;
-      this.head = this.head.next;
-      if (this.head) {
-        this.head.prev = null;
+  }
+});
+
+// .yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/opts-arg.js
+var import_fs4, optsArg;
+var init_opts_arg = __esm({
+  ".yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/opts-arg.js"() {
+    import_fs4 = require("fs");
+    optsArg = (opts) => {
+      if (!opts) {
+        opts = { mode: 511 };
+      } else if (typeof opts === "object") {
+        opts = { mode: 511, ...opts };
+      } else if (typeof opts === "number") {
+        opts = { mode: opts };
+      } else if (typeof opts === "string") {
+        opts = { mode: parseInt(opts, 8) };
       } else {
-        this.tail = null;
-      }
-      this.length--;
-      return res;
-    };
-    Yallist.prototype.forEach = function(fn2, thisp) {
-      thisp = thisp || this;
-      for (var walker = this.head, i = 0; walker !== null; i++) {
-        fn2.call(thisp, walker.value, i, this);
-        walker = walker.next;
-      }
-    };
-    Yallist.prototype.forEachReverse = function(fn2, thisp) {
-      thisp = thisp || this;
-      for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
-        fn2.call(thisp, walker.value, i, this);
-        walker = walker.prev;
+        throw new TypeError("invalid options argument");
       }
+      const resolved = opts;
+      const optsFs = opts.fs || {};
+      opts.mkdir = opts.mkdir || optsFs.mkdir || import_fs4.mkdir;
+      opts.mkdirAsync = opts.mkdirAsync ? opts.mkdirAsync : async (path16, options) => {
+        return new Promise((res, rej) => resolved.mkdir(path16, options, (er, made) => er ? rej(er) : res(made)));
+      };
+      opts.stat = opts.stat || optsFs.stat || import_fs4.stat;
+      opts.statAsync = opts.statAsync ? opts.statAsync : async (path16) => new Promise((res, rej) => resolved.stat(path16, (err, stats) => err ? rej(err) : res(stats)));
+      opts.statSync = opts.statSync || optsFs.statSync || import_fs4.statSync;
+      opts.mkdirSync = opts.mkdirSync || optsFs.mkdirSync || import_fs4.mkdirSync;
+      return resolved;
     };
-    Yallist.prototype.get = function(n) {
-      for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
-        walker = walker.next;
+  }
+});
+
+// .yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/mkdirp-manual.js
+var import_path3, mkdirpManualSync, mkdirpManual;
+var init_mkdirp_manual = __esm({
+  ".yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/mkdirp-manual.js"() {
+    import_path3 = require("path");
+    init_opts_arg();
+    mkdirpManualSync = (path16, options, made) => {
+      const parent = (0, import_path3.dirname)(path16);
+      const opts = { ...optsArg(options), recursive: false };
+      if (parent === path16) {
+        try {
+          return opts.mkdirSync(path16, opts);
+        } catch (er) {
+          const fer = er;
+          if (fer && fer.code !== "EISDIR") {
+            throw er;
+          }
+          return;
+        }
       }
-      if (i === n && walker !== null) {
-        return walker.value;
+      try {
+        opts.mkdirSync(path16, opts);
+        return made || path16;
+      } catch (er) {
+        const fer = er;
+        if (fer && fer.code === "ENOENT") {
+          return mkdirpManualSync(path16, opts, mkdirpManualSync(parent, opts, made));
+        }
+        if (fer && fer.code !== "EEXIST" && fer && fer.code !== "EROFS") {
+          throw er;
+        }
+        try {
+          if (!opts.statSync(path16).isDirectory())
+            throw er;
+        } catch (_) {
+          throw er;
+        }
       }
     };
-    Yallist.prototype.getReverse = function(n) {
-      for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
-        walker = walker.prev;
+    mkdirpManual = Object.assign(async (path16, options, made) => {
+      const opts = optsArg(options);
+      opts.recursive = false;
+      const parent = (0, import_path3.dirname)(path16);
+      if (parent === path16) {
+        return opts.mkdirAsync(path16, opts).catch((er) => {
+          const fer = er;
+          if (fer && fer.code !== "EISDIR") {
+            throw er;
+          }
+        });
       }
-      if (i === n && walker !== null) {
-        return walker.value;
+      return opts.mkdirAsync(path16, opts).then(() => made || path16, async (er) => {
+        const fer = er;
+        if (fer && fer.code === "ENOENT") {
+          return mkdirpManual(parent, opts).then((made2) => mkdirpManual(path16, opts, made2));
+        }
+        if (fer && fer.code !== "EEXIST" && fer.code !== "EROFS") {
+          throw er;
+        }
+        return opts.statAsync(path16).then((st) => {
+          if (st.isDirectory()) {
+            return made;
+          } else {
+            throw er;
+          }
+        }, () => {
+          throw er;
+        });
+      });
+    }, { sync: mkdirpManualSync });
+  }
+});
+
+// .yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/find-made.js
+var import_path4, findMade, findMadeSync;
+var init_find_made = __esm({
+  ".yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/find-made.js"() {
+    import_path4 = require("path");
+    findMade = async (opts, parent, path16) => {
+      if (path16 === parent) {
+        return;
       }
+      return opts.statAsync(parent).then(
+        (st) => st.isDirectory() ? path16 : void 0,
+        // will fail later
+        // will fail later
+        (er) => {
+          const fer = er;
+          return fer && fer.code === "ENOENT" ? findMade(opts, (0, import_path4.dirname)(parent), parent) : void 0;
+        }
+      );
     };
-    Yallist.prototype.map = function(fn2, thisp) {
-      thisp = thisp || this;
-      var res = new Yallist();
-      for (var walker = this.head; walker !== null; ) {
-        res.push(fn2.call(thisp, walker.value, this));
-        walker = walker.next;
+    findMadeSync = (opts, parent, path16) => {
+      if (path16 === parent) {
+        return void 0;
       }
-      return res;
-    };
-    Yallist.prototype.mapReverse = function(fn2, thisp) {
-      thisp = thisp || this;
-      var res = new Yallist();
-      for (var walker = this.tail; walker !== null; ) {
-        res.push(fn2.call(thisp, walker.value, this));
-        walker = walker.prev;
+      try {
+        return opts.statSync(parent).isDirectory() ? path16 : void 0;
+      } catch (er) {
+        const fer = er;
+        return fer && fer.code === "ENOENT" ? findMadeSync(opts, (0, import_path4.dirname)(parent), parent) : void 0;
       }
-      return res;
     };
-    Yallist.prototype.reduce = function(fn2, initial) {
-      var acc;
-      var walker = this.head;
-      if (arguments.length > 1) {
-        acc = initial;
-      } else if (this.head) {
-        walker = this.head.next;
-        acc = this.head.value;
-      } else {
-        throw new TypeError("Reduce of empty list with no initial value");
-      }
-      for (var i = 0; walker !== null; i++) {
-        acc = fn2(acc, walker.value, i);
-        walker = walker.next;
-      }
-      return acc;
-    };
-    Yallist.prototype.reduceReverse = function(fn2, initial) {
-      var acc;
-      var walker = this.tail;
-      if (arguments.length > 1) {
-        acc = initial;
-      } else if (this.tail) {
-        walker = this.tail.prev;
-        acc = this.tail.value;
-      } else {
-        throw new TypeError("Reduce of empty list with no initial value");
-      }
-      for (var i = this.length - 1; walker !== null; i--) {
-        acc = fn2(acc, walker.value, i);
-        walker = walker.prev;
+  }
+});
+
+// .yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/mkdirp-native.js
+var import_path5, mkdirpNativeSync, mkdirpNative;
+var init_mkdirp_native = __esm({
+  ".yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/mkdirp-native.js"() {
+    import_path5 = require("path");
+    init_find_made();
+    init_mkdirp_manual();
+    init_opts_arg();
+    mkdirpNativeSync = (path16, options) => {
+      const opts = optsArg(options);
+      opts.recursive = true;
+      const parent = (0, import_path5.dirname)(path16);
+      if (parent === path16) {
+        return opts.mkdirSync(path16, opts);
       }
-      return acc;
-    };
-    Yallist.prototype.toArray = function() {
-      var arr = new Array(this.length);
-      for (var i = 0, walker = this.head; walker !== null; i++) {
-        arr[i] = walker.value;
-        walker = walker.next;
+      const made = findMadeSync(opts, path16);
+      try {
+        opts.mkdirSync(path16, opts);
+        return made;
+      } catch (er) {
+        const fer = er;
+        if (fer && fer.code === "ENOENT") {
+          return mkdirpManualSync(path16, opts);
+        } else {
+          throw er;
+        }
       }
-      return arr;
     };
-    Yallist.prototype.toArrayReverse = function() {
-      var arr = new Array(this.length);
-      for (var i = 0, walker = this.tail; walker !== null; i++) {
-        arr[i] = walker.value;
-        walker = walker.prev;
+    mkdirpNative = Object.assign(async (path16, options) => {
+      const opts = { ...optsArg(options), recursive: true };
+      const parent = (0, import_path5.dirname)(path16);
+      if (parent === path16) {
+        return await opts.mkdirAsync(path16, opts);
       }
-      return arr;
-    };
-    Yallist.prototype.slice = function(from, to) {
-      to = to || this.length;
-      if (to < 0) {
-        to += this.length;
-      }
-      from = from || 0;
-      if (from < 0) {
-        from += this.length;
-      }
-      var ret = new Yallist();
-      if (to < from || to < 0) {
-        return ret;
-      }
-      if (from < 0) {
-        from = 0;
-      }
-      if (to > this.length) {
-        to = this.length;
-      }
-      for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
-        walker = walker.next;
+      return findMade(opts, path16).then((made) => opts.mkdirAsync(path16, opts).then((m) => made || m).catch((er) => {
+        const fer = er;
+        if (fer && fer.code === "ENOENT") {
+          return mkdirpManual(path16, opts);
+        } else {
+          throw er;
+        }
+      }));
+    }, { sync: mkdirpNativeSync });
+  }
+});
+
+// .yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/path-arg.js
+var import_path6, platform3, pathArg;
+var init_path_arg = __esm({
+  ".yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/path-arg.js"() {
+    import_path6 = require("path");
+    platform3 = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform;
+    pathArg = (path16) => {
+      if (/\0/.test(path16)) {
+        throw Object.assign(new TypeError("path must be a string without null bytes"), {
+          path: path16,
+          code: "ERR_INVALID_ARG_VALUE"
+        });
       }
-      for (; walker !== null && i < to; i++, walker = walker.next) {
-        ret.push(walker.value);
+      path16 = (0, import_path6.resolve)(path16);
+      if (platform3 === "win32") {
+        const badWinChars = /[*|"<>?:]/;
+        const { root } = (0, import_path6.parse)(path16);
+        if (badWinChars.test(path16.substring(root.length))) {
+          throw Object.assign(new Error("Illegal characters in path."), {
+            path: path16,
+            code: "EINVAL"
+          });
+        }
       }
-      return ret;
+      return path16;
     };
-    Yallist.prototype.sliceReverse = function(from, to) {
-      to = to || this.length;
-      if (to < 0) {
-        to += this.length;
-      }
-      from = from || 0;
-      if (from < 0) {
-        from += this.length;
-      }
-      var ret = new Yallist();
-      if (to < from || to < 0) {
-        return ret;
-      }
-      if (from < 0) {
-        from = 0;
-      }
-      if (to > this.length) {
-        to = this.length;
-      }
-      for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
-        walker = walker.prev;
+  }
+});
+
+// .yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/use-native.js
+var import_fs5, version2, versArr, hasNative, useNativeSync, useNative;
+var init_use_native = __esm({
+  ".yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/use-native.js"() {
+    import_fs5 = require("fs");
+    init_opts_arg();
+    version2 = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version;
+    versArr = version2.replace(/^v/, "").split(".");
+    hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12;
+    useNativeSync = !hasNative ? () => false : (opts) => optsArg(opts).mkdirSync === import_fs5.mkdirSync;
+    useNative = Object.assign(!hasNative ? () => false : (opts) => optsArg(opts).mkdir === import_fs5.mkdir, {
+      sync: useNativeSync
+    });
+  }
+});
+
+// .yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/index.js
+var mkdirpSync, mkdirp;
+var init_mjs = __esm({
+  ".yarn/cache/mkdirp-npm-3.0.1-f94bfa769e-9f2b975e92.zip/node_modules/mkdirp/dist/mjs/index.js"() {
+    init_mkdirp_manual();
+    init_mkdirp_native();
+    init_opts_arg();
+    init_path_arg();
+    init_use_native();
+    init_mkdirp_manual();
+    init_mkdirp_native();
+    init_use_native();
+    mkdirpSync = (path16, opts) => {
+      path16 = pathArg(path16);
+      const resolved = optsArg(opts);
+      return useNativeSync(resolved) ? mkdirpNativeSync(path16, resolved) : mkdirpManualSync(path16, resolved);
+    };
+    mkdirp = Object.assign(async (path16, opts) => {
+      path16 = pathArg(path16);
+      const resolved = optsArg(opts);
+      return useNative(resolved) ? mkdirpNative(path16, resolved) : mkdirpManual(path16, resolved);
+    }, {
+      mkdirpSync,
+      mkdirpNative,
+      mkdirpNativeSync,
+      mkdirpManual,
+      mkdirpManualSync,
+      sync: mkdirpSync,
+      native: mkdirpNative,
+      nativeSync: mkdirpNativeSync,
+      manual: mkdirpManual,
+      manualSync: mkdirpManualSync,
+      useNative,
+      useNativeSync
+    });
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/cwd-error.js
+var CwdError;
+var init_cwd_error = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/cwd-error.js"() {
+    CwdError = class extends Error {
+      path;
+      code;
+      syscall = "chdir";
+      constructor(path16, code2) {
+        super(`${code2}: Cannot cd into '${path16}'`);
+        this.path = path16;
+        this.code = code2;
       }
-      for (; walker !== null && i > from; i--, walker = walker.prev) {
-        ret.push(walker.value);
+      get name() {
+        return "CwdError";
       }
-      return ret;
     };
-    Yallist.prototype.splice = function(start, deleteCount, ...nodes) {
-      if (start > this.length) {
-        start = this.length - 1;
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/symlink-error.js
+var SymlinkError;
+var init_symlink_error = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/symlink-error.js"() {
+    SymlinkError = class extends Error {
+      path;
+      symlink;
+      syscall = "symlink";
+      code = "TAR_SYMLINK_ERROR";
+      constructor(symlink, path16) {
+        super("TAR_SYMLINK_ERROR: Cannot extract through symbolic link");
+        this.symlink = symlink;
+        this.path = path16;
       }
-      if (start < 0) {
-        start = this.length + start;
+      get name() {
+        return "SymlinkError";
       }
-      for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
-        walker = walker.next;
+    };
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/mkdir.js
+var import_fs6, import_node_path4, cGet, cSet, checkCwd, mkdir3, mkdir_, onmkdir, checkCwdSync, mkdirSync4;
+var init_mkdir = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/mkdir.js"() {
+    init_esm5();
+    import_fs6 = __toESM(require("fs"), 1);
+    init_mjs();
+    import_node_path4 = __toESM(require("node:path"), 1);
+    init_cwd_error();
+    init_normalize_windows_path();
+    init_symlink_error();
+    cGet = (cache, key) => cache.get(normalizeWindowsPath(key));
+    cSet = (cache, key, val) => cache.set(normalizeWindowsPath(key), val);
+    checkCwd = (dir, cb) => {
+      import_fs6.default.stat(dir, (er, st) => {
+        if (er || !st.isDirectory()) {
+          er = new CwdError(dir, er?.code || "ENOTDIR");
+        }
+        cb(er);
+      });
+    };
+    mkdir3 = (dir, opt, cb) => {
+      dir = normalizeWindowsPath(dir);
+      const umask = opt.umask ?? 18;
+      const mode = opt.mode | 448;
+      const needChmod = (mode & umask) !== 0;
+      const uid = opt.uid;
+      const gid = opt.gid;
+      const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid);
+      const preserve = opt.preserve;
+      const unlink = opt.unlink;
+      const cache = opt.cache;
+      const cwd = normalizeWindowsPath(opt.cwd);
+      const done = (er, created) => {
+        if (er) {
+          cb(er);
+        } else {
+          cSet(cache, dir, true);
+          if (created && doChown) {
+            chownr(created, uid, gid, (er2) => done(er2));
+          } else if (needChmod) {
+            import_fs6.default.chmod(dir, mode, cb);
+          } else {
+            cb();
+          }
+        }
+      };
+      if (cache && cGet(cache, dir) === true) {
+        return done();
       }
-      var ret = [];
-      for (var i = 0; walker && i < deleteCount; i++) {
-        ret.push(walker.value);
-        walker = this.removeNode(walker);
+      if (dir === cwd) {
+        return checkCwd(dir, done);
       }
-      if (walker === null) {
-        walker = this.tail;
+      if (preserve) {
+        return mkdirp(dir, { mode }).then(
+          (made) => done(null, made ?? void 0),
+          // oh, ts
+          done
+        );
       }
-      if (walker !== this.head && walker !== this.tail) {
-        walker = walker.prev;
+      const sub = normalizeWindowsPath(import_node_path4.default.relative(cwd, dir));
+      const parts = sub.split("/");
+      mkdir_(cwd, parts, mode, cache, unlink, cwd, void 0, done);
+    };
+    mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {
+      if (!parts.length) {
+        return cb(null, created);
       }
-      for (var i = 0; i < nodes.length; i++) {
-        walker = insert(this, walker, nodes[i]);
+      const p = parts.shift();
+      const part = normalizeWindowsPath(import_node_path4.default.resolve(base + "/" + p));
+      if (cGet(cache, part)) {
+        return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb);
       }
-      return ret;
+      import_fs6.default.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb));
     };
-    Yallist.prototype.reverse = function() {
-      var head = this.head;
-      var tail = this.tail;
-      for (var walker = head; walker !== null; walker = walker.prev) {
-        var p = walker.prev;
-        walker.prev = walker.next;
-        walker.next = p;
+    onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => (er) => {
+      if (er) {
+        import_fs6.default.lstat(part, (statEr, st) => {
+          if (statEr) {
+            statEr.path = statEr.path && normalizeWindowsPath(statEr.path);
+            cb(statEr);
+          } else if (st.isDirectory()) {
+            mkdir_(part, parts, mode, cache, unlink, cwd, created, cb);
+          } else if (unlink) {
+            import_fs6.default.unlink(part, (er2) => {
+              if (er2) {
+                return cb(er2);
+              }
+              import_fs6.default.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb));
+            });
+          } else if (st.isSymbolicLink()) {
+            return cb(new SymlinkError(part, part + "/" + parts.join("/")));
+          } else {
+            cb(er);
+          }
+        });
+      } else {
+        created = created || part;
+        mkdir_(part, parts, mode, cache, unlink, cwd, created, cb);
       }
-      this.head = tail;
-      this.tail = head;
-      return this;
     };
-    function insert(self2, node, value) {
-      var inserted = node === self2.head ? new Node(value, null, node, self2) : new Node(value, node, node.next, self2);
-      if (inserted.next === null) {
-        self2.tail = inserted;
+    checkCwdSync = (dir) => {
+      let ok = false;
+      let code2 = void 0;
+      try {
+        ok = import_fs6.default.statSync(dir).isDirectory();
+      } catch (er) {
+        code2 = er?.code;
+      } finally {
+        if (!ok) {
+          throw new CwdError(dir, code2 ?? "ENOTDIR");
+        }
       }
-      if (inserted.prev === null) {
-        self2.head = inserted;
+    };
+    mkdirSync4 = (dir, opt) => {
+      dir = normalizeWindowsPath(dir);
+      const umask = opt.umask ?? 18;
+      const mode = opt.mode | 448;
+      const needChmod = (mode & umask) !== 0;
+      const uid = opt.uid;
+      const gid = opt.gid;
+      const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid);
+      const preserve = opt.preserve;
+      const unlink = opt.unlink;
+      const cache = opt.cache;
+      const cwd = normalizeWindowsPath(opt.cwd);
+      const done = (created2) => {
+        cSet(cache, dir, true);
+        if (created2 && doChown) {
+          chownrSync(created2, uid, gid);
+        }
+        if (needChmod) {
+          import_fs6.default.chmodSync(dir, mode);
+        }
+      };
+      if (cache && cGet(cache, dir) === true) {
+        return done();
       }
-      self2.length++;
-      return inserted;
-    }
-    function push(self2, item) {
-      self2.tail = new Node(item, self2.tail, null, self2);
-      if (!self2.head) {
-        self2.head = self2.tail;
+      if (dir === cwd) {
+        checkCwdSync(cwd);
+        return done();
       }
-      self2.length++;
-    }
-    function unshift(self2, item) {
-      self2.head = new Node(item, null, self2.head, self2);
-      if (!self2.tail) {
-        self2.tail = self2.head;
+      if (preserve) {
+        return done(mkdirpSync(dir, mode) ?? void 0);
       }
-      self2.length++;
-    }
-    function Node(value, prev, next, list) {
-      if (!(this instanceof Node)) {
-        return new Node(value, prev, next, list);
+      const sub = normalizeWindowsPath(import_node_path4.default.relative(cwd, dir));
+      const parts = sub.split("/");
+      let created = void 0;
+      for (let p = parts.shift(), part = cwd; p && (part += "/" + p); p = parts.shift()) {
+        part = normalizeWindowsPath(import_node_path4.default.resolve(part));
+        if (cGet(cache, part)) {
+          continue;
+        }
+        try {
+          import_fs6.default.mkdirSync(part, mode);
+          created = created || part;
+          cSet(cache, part, true);
+        } catch (er) {
+          const st = import_fs6.default.lstatSync(part);
+          if (st.isDirectory()) {
+            cSet(cache, part, true);
+            continue;
+          } else if (unlink) {
+            import_fs6.default.unlinkSync(part);
+            import_fs6.default.mkdirSync(part, mode);
+            created = created || part;
+            cSet(cache, part, true);
+            continue;
+          } else if (st.isSymbolicLink()) {
+            return new SymlinkError(part, part + "/" + parts.join("/"));
+          }
+        }
       }
-      this.list = list;
-      this.value = value;
-      if (prev) {
-        prev.next = this;
-        this.prev = prev;
-      } else {
-        this.prev = null;
+      return done(created);
+    };
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/normalize-unicode.js
+var normalizeCache, hasOwnProperty, normalizeUnicode;
+var init_normalize_unicode = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/normalize-unicode.js"() {
+    normalizeCache = /* @__PURE__ */ Object.create(null);
+    ({ hasOwnProperty } = Object.prototype);
+    normalizeUnicode = (s) => {
+      if (!hasOwnProperty.call(normalizeCache, s)) {
+        normalizeCache[s] = s.normalize("NFD");
       }
-      if (next) {
-        next.prev = this;
-        this.next = next;
-      } else {
-        this.next = null;
+      return normalizeCache[s];
+    };
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/strip-absolute-path.js
+var import_node_path5, isAbsolute, parse4, stripAbsolutePath;
+var init_strip_absolute_path = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/strip-absolute-path.js"() {
+    import_node_path5 = require("node:path");
+    ({ isAbsolute, parse: parse4 } = import_node_path5.win32);
+    stripAbsolutePath = (path16) => {
+      let r = "";
+      let parsed = parse4(path16);
+      while (isAbsolute(path16) || parsed.root) {
+        const root = path16.charAt(0) === "/" && path16.slice(0, 4) !== "//?/" ? "/" : parsed.root;
+        path16 = path16.slice(root.length);
+        r += root;
+        parsed = parse4(path16);
       }
-    }
-    try {
-      require_iterator()(Yallist);
-    } catch (er) {
-    }
+      return [r, path16];
+    };
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pack.js
-var require_pack = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/pack.js"(exports2, module2) {
-    "use strict";
-    var PackJob = class {
-      constructor(path11, absolute) {
-        this.path = path11 || "./";
-        this.absolute = absolute;
-        this.entry = null;
-        this.stat = null;
-        this.readdir = null;
-        this.pending = false;
-        this.ignore = false;
-        this.piped = false;
-      }
-    };
-    var { Minipass } = require_minipass();
-    var zlib = require_minizlib();
-    var ReadEntry = require_read_entry();
-    var WriteEntry = require_write_entry();
-    var WriteEntrySync = WriteEntry.Sync;
-    var WriteEntryTar = WriteEntry.Tar;
-    var Yallist = require_yallist();
-    var EOF = Buffer.alloc(1024);
-    var ONSTAT = Symbol("onStat");
-    var ENDED = Symbol("ended");
-    var QUEUE = Symbol("queue");
-    var CURRENT = Symbol("current");
-    var PROCESS = Symbol("process");
-    var PROCESSING = Symbol("processing");
-    var PROCESSJOB = Symbol("processJob");
-    var JOBS = Symbol("jobs");
-    var JOBDONE = Symbol("jobDone");
-    var ADDFSENTRY = Symbol("addFSEntry");
-    var ADDTARENTRY = Symbol("addTarEntry");
-    var STAT = Symbol("stat");
-    var READDIR = Symbol("readdir");
-    var ONREADDIR = Symbol("onreaddir");
-    var PIPE = Symbol("pipe");
-    var ENTRY = Symbol("entry");
-    var ENTRYOPT = Symbol("entryOpt");
-    var WRITEENTRYCLASS = Symbol("writeEntryClass");
-    var WRITE = Symbol("write");
-    var ONDRAIN = Symbol("ondrain");
-    var fs8 = require("fs");
-    var path10 = require("path");
-    var warner = require_warn_mixin();
-    var normPath = require_normalize_windows_path();
-    var Pack = warner(class Pack extends Minipass {
-      constructor(opt) {
-        super(opt);
-        opt = opt || /* @__PURE__ */ Object.create(null);
-        this.opt = opt;
-        this.file = opt.file || "";
-        this.cwd = opt.cwd || process.cwd();
-        this.maxReadSize = opt.maxReadSize;
-        this.preservePaths = !!opt.preservePaths;
-        this.strict = !!opt.strict;
-        this.noPax = !!opt.noPax;
-        this.prefix = normPath(opt.prefix || "");
-        this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
-        this.statCache = opt.statCache || /* @__PURE__ */ new Map();
-        this.readdirCache = opt.readdirCache || /* @__PURE__ */ new Map();
-        this[WRITEENTRYCLASS] = WriteEntry;
-        if (typeof opt.onwarn === "function") {
-          this.on("warn", opt.onwarn);
-        }
-        this.portable = !!opt.portable;
-        this.zip = null;
-        if (opt.gzip || opt.brotli) {
-          if (opt.gzip && opt.brotli) {
-            throw new TypeError("gzip and brotli are mutually exclusive");
-          }
-          if (opt.gzip) {
-            if (typeof opt.gzip !== "object") {
-              opt.gzip = {};
-            }
-            if (this.portable) {
-              opt.gzip.portable = true;
-            }
-            this.zip = new zlib.Gzip(opt.gzip);
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/winchars.js
+var raw, win, toWin, toRaw, encode2, decode;
+var init_winchars = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/winchars.js"() {
+    raw = ["|", "<", ">", "?", ":"];
+    win = raw.map((char) => String.fromCharCode(61440 + char.charCodeAt(0)));
+    toWin = new Map(raw.map((char, i) => [char, win[i]]));
+    toRaw = new Map(win.map((char, i) => [char, raw[i]]));
+    encode2 = (s) => raw.reduce((s2, c) => s2.split(c).join(toWin.get(c)), s);
+    decode = (s) => win.reduce((s2, c) => s2.split(c).join(toRaw.get(c)), s);
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/path-reservations.js
+var import_node_path6, platform4, isWindows2, getDirs, PathReservations;
+var init_path_reservations = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/path-reservations.js"() {
+    import_node_path6 = require("node:path");
+    init_normalize_unicode();
+    init_strip_trailing_slashes();
+    platform4 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
+    isWindows2 = platform4 === "win32";
+    getDirs = (path16) => {
+      const dirs = path16.split("/").slice(0, -1).reduce((set, path17) => {
+        const s = set[set.length - 1];
+        if (s !== void 0) {
+          path17 = (0, import_node_path6.join)(s, path17);
+        }
+        set.push(path17 || "/");
+        return set;
+      }, []);
+      return dirs;
+    };
+    PathReservations = class {
+      // path => [function or Set]
+      // A Set object means a directory reservation
+      // A fn is a direct reservation on that path
+      #queues = /* @__PURE__ */ new Map();
+      // fn => {paths:[path,...], dirs:[path, ...]}
+      #reservations = /* @__PURE__ */ new Map();
+      // functions currently running
+      #running = /* @__PURE__ */ new Set();
+      reserve(paths, fn2) {
+        paths = isWindows2 ? ["win32 parallelization disabled"] : paths.map((p) => {
+          return stripTrailingSlashes((0, import_node_path6.join)(normalizeUnicode(p))).toLowerCase();
+        });
+        const dirs = new Set(paths.map((path16) => getDirs(path16)).reduce((a, b) => a.concat(b)));
+        this.#reservations.set(fn2, { dirs, paths });
+        for (const p of paths) {
+          const q = this.#queues.get(p);
+          if (!q) {
+            this.#queues.set(p, [fn2]);
+          } else {
+            q.push(fn2);
           }
-          if (opt.brotli) {
-            if (typeof opt.brotli !== "object") {
-              opt.brotli = {};
+        }
+        for (const dir of dirs) {
+          const q = this.#queues.get(dir);
+          if (!q) {
+            this.#queues.set(dir, [/* @__PURE__ */ new Set([fn2])]);
+          } else {
+            const l = q[q.length - 1];
+            if (l instanceof Set) {
+              l.add(fn2);
+            } else {
+              q.push(/* @__PURE__ */ new Set([fn2]));
             }
-            this.zip = new zlib.BrotliCompress(opt.brotli);
           }
-          this.zip.on("data", (chunk) => super.write(chunk));
-          this.zip.on("end", (_) => super.end());
-          this.zip.on("drain", (_) => this[ONDRAIN]());
-          this.on("resume", (_) => this.zip.resume());
-        } else {
-          this.on("drain", this[ONDRAIN]);
         }
-        this.noDirRecurse = !!opt.noDirRecurse;
-        this.follow = !!opt.follow;
-        this.noMtime = !!opt.noMtime;
-        this.mtime = opt.mtime || null;
-        this.filter = typeof opt.filter === "function" ? opt.filter : (_) => true;
-        this[QUEUE] = new Yallist();
-        this[JOBS] = 0;
-        this.jobs = +opt.jobs || 4;
-        this[PROCESSING] = false;
-        this[ENDED] = false;
+        return this.#run(fn2);
       }
-      [WRITE](chunk) {
-        return super.write(chunk);
+      // return the queues for each path the function cares about
+      // fn => {paths, dirs}
+      #getQueues(fn2) {
+        const res = this.#reservations.get(fn2);
+        if (!res) {
+          throw new Error("function does not have any path reservations");
+        }
+        return {
+          paths: res.paths.map((path16) => this.#queues.get(path16)),
+          dirs: [...res.dirs].map((path16) => this.#queues.get(path16))
+        };
       }
-      add(path11) {
-        this.write(path11);
-        return this;
+      // check if fn is first in line for all its paths, and is
+      // included in the first set for all its dir queues
+      check(fn2) {
+        const { paths, dirs } = this.#getQueues(fn2);
+        return paths.every((q) => q && q[0] === fn2) && dirs.every((q) => q && q[0] instanceof Set && q[0].has(fn2));
       }
-      end(path11) {
-        if (path11) {
-          this.write(path11);
+      // run the function if it's first in line and not already running
+      #run(fn2) {
+        if (this.#running.has(fn2) || !this.check(fn2)) {
+          return false;
         }
-        this[ENDED] = true;
-        this[PROCESS]();
-        return this;
+        this.#running.add(fn2);
+        fn2(() => this.#clear(fn2));
+        return true;
       }
-      write(path11) {
-        if (this[ENDED]) {
-          throw new Error("write after end");
+      #clear(fn2) {
+        if (!this.#running.has(fn2)) {
+          return false;
         }
-        if (path11 instanceof ReadEntry) {
-          this[ADDTARENTRY](path11);
-        } else {
-          this[ADDFSENTRY](path11);
+        const res = this.#reservations.get(fn2);
+        if (!res) {
+          throw new Error("invalid reservation");
         }
-        return this.flowing;
-      }
-      [ADDTARENTRY](p) {
-        const absolute = normPath(path10.resolve(this.cwd, p.path));
-        if (!this.filter(p.path, p)) {
-          p.resume();
-        } else {
-          const job = new PackJob(p.path, absolute, false);
-          job.entry = new WriteEntryTar(p, this[ENTRYOPT](job));
-          job.entry.on("end", (_) => this[JOBDONE](job));
-          this[JOBS] += 1;
-          this[QUEUE].push(job);
+        const { paths, dirs } = res;
+        const next = /* @__PURE__ */ new Set();
+        for (const path16 of paths) {
+          const q = this.#queues.get(path16);
+          if (!q || q?.[0] !== fn2) {
+            continue;
+          }
+          const q0 = q[1];
+          if (!q0) {
+            this.#queues.delete(path16);
+            continue;
+          }
+          q.shift();
+          if (typeof q0 === "function") {
+            next.add(q0);
+          } else {
+            for (const f of q0) {
+              next.add(f);
+            }
+          }
         }
-        this[PROCESS]();
-      }
-      [ADDFSENTRY](p) {
-        const absolute = normPath(path10.resolve(this.cwd, p));
-        this[QUEUE].push(new PackJob(p, absolute));
-        this[PROCESS]();
-      }
-      [STAT](job) {
-        job.pending = true;
-        this[JOBS] += 1;
-        const stat = this.follow ? "stat" : "lstat";
-        fs8[stat](job.absolute, (er, stat2) => {
-          job.pending = false;
-          this[JOBS] -= 1;
-          if (er) {
-            this.emit("error", er);
+        for (const dir of dirs) {
+          const q = this.#queues.get(dir);
+          const q0 = q?.[0];
+          if (!q || !(q0 instanceof Set))
+            continue;
+          if (q0.size === 1 && q.length === 1) {
+            this.#queues.delete(dir);
+            continue;
+          } else if (q0.size === 1) {
+            q.shift();
+            const n = q[0];
+            if (typeof n === "function") {
+              next.add(n);
+            }
           } else {
-            this[ONSTAT](job, stat2);
+            q0.delete(fn2);
           }
-        });
+        }
+        this.#running.delete(fn2);
+        next.forEach((fn3) => this.#run(fn3));
+        return true;
       }
-      [ONSTAT](job, stat) {
-        this.statCache.set(job.absolute, stat);
-        job.stat = stat;
-        if (!this.filter(job.path, stat)) {
-          job.ignore = true;
+    };
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/unpack.js
+var import_node_assert, import_node_crypto, import_node_fs3, import_node_path7, ONENTRY, CHECKFS, CHECKFS2, PRUNECACHE, ISREUSABLE, MAKEFS, FILE, DIRECTORY, LINK, SYMLINK, HARDLINK, UNSUPPORTED, CHECKPATH, MKDIR, ONERROR, PENDING, PEND, UNPEND, ENDED2, MAYBECLOSE, SKIP, DOCHOWN, UID, GID, CHECKED_CWD, platform5, isWindows3, DEFAULT_MAX_DEPTH, unlinkFile, unlinkFileSync, uint32, cacheKeyNormalize, pruneCache, dropCache, Unpack, callSync, UnpackSync;
+var init_unpack = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/unpack.js"() {
+    init_esm2();
+    import_node_assert = __toESM(require("node:assert"), 1);
+    import_node_crypto = require("node:crypto");
+    import_node_fs3 = __toESM(require("node:fs"), 1);
+    import_node_path7 = __toESM(require("node:path"), 1);
+    init_get_write_flag();
+    init_mkdir();
+    init_normalize_unicode();
+    init_normalize_windows_path();
+    init_parse();
+    init_strip_absolute_path();
+    init_strip_trailing_slashes();
+    init_winchars();
+    init_path_reservations();
+    ONENTRY = Symbol("onEntry");
+    CHECKFS = Symbol("checkFs");
+    CHECKFS2 = Symbol("checkFs2");
+    PRUNECACHE = Symbol("pruneCache");
+    ISREUSABLE = Symbol("isReusable");
+    MAKEFS = Symbol("makeFs");
+    FILE = Symbol("file");
+    DIRECTORY = Symbol("directory");
+    LINK = Symbol("link");
+    SYMLINK = Symbol("symlink");
+    HARDLINK = Symbol("hardlink");
+    UNSUPPORTED = Symbol("unsupported");
+    CHECKPATH = Symbol("checkPath");
+    MKDIR = Symbol("mkdir");
+    ONERROR = Symbol("onError");
+    PENDING = Symbol("pending");
+    PEND = Symbol("pend");
+    UNPEND = Symbol("unpend");
+    ENDED2 = Symbol("ended");
+    MAYBECLOSE = Symbol("maybeClose");
+    SKIP = Symbol("skip");
+    DOCHOWN = Symbol("doChown");
+    UID = Symbol("uid");
+    GID = Symbol("gid");
+    CHECKED_CWD = Symbol("checkedCwd");
+    platform5 = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
+    isWindows3 = platform5 === "win32";
+    DEFAULT_MAX_DEPTH = 1024;
+    unlinkFile = (path16, cb) => {
+      if (!isWindows3) {
+        return import_node_fs3.default.unlink(path16, cb);
+      }
+      const name2 = path16 + ".DELETE." + (0, import_node_crypto.randomBytes)(16).toString("hex");
+      import_node_fs3.default.rename(path16, name2, (er) => {
+        if (er) {
+          return cb(er);
         }
-        this[PROCESS]();
+        import_node_fs3.default.unlink(name2, cb);
+      });
+    };
+    unlinkFileSync = (path16) => {
+      if (!isWindows3) {
+        return import_node_fs3.default.unlinkSync(path16);
       }
-      [READDIR](job) {
-        job.pending = true;
-        this[JOBS] += 1;
-        fs8.readdir(job.absolute, (er, entries) => {
-          job.pending = false;
-          this[JOBS] -= 1;
-          if (er) {
-            return this.emit("error", er);
-          }
-          this[ONREADDIR](job, entries);
-        });
+      const name2 = path16 + ".DELETE." + (0, import_node_crypto.randomBytes)(16).toString("hex");
+      import_node_fs3.default.renameSync(path16, name2);
+      import_node_fs3.default.unlinkSync(name2);
+    };
+    uint32 = (a, b, c) => a !== void 0 && a === a >>> 0 ? a : b !== void 0 && b === b >>> 0 ? b : c;
+    cacheKeyNormalize = (path16) => stripTrailingSlashes(normalizeWindowsPath(normalizeUnicode(path16))).toLowerCase();
+    pruneCache = (cache, abs) => {
+      abs = cacheKeyNormalize(abs);
+      for (const path16 of cache.keys()) {
+        const pnorm = cacheKeyNormalize(path16);
+        if (pnorm === abs || pnorm.indexOf(abs + "/") === 0) {
+          cache.delete(path16);
+        }
       }
-      [ONREADDIR](job, entries) {
-        this.readdirCache.set(job.absolute, entries);
-        job.readdir = entries;
-        this[PROCESS]();
+    };
+    dropCache = (cache) => {
+      for (const key of cache.keys()) {
+        cache.delete(key);
       }
-      [PROCESS]() {
-        if (this[PROCESSING]) {
-          return;
-        }
-        this[PROCESSING] = true;
-        for (let w = this[QUEUE].head; w !== null && this[JOBS] < this.jobs; w = w.next) {
-          this[PROCESSJOB](w.value);
-          if (w.value.ignore) {
-            const p = w.next;
-            this[QUEUE].removeNode(w);
-            w.next = p;
+    };
+    Unpack = class extends Parser {
+      [ENDED2] = false;
+      [CHECKED_CWD] = false;
+      [PENDING] = 0;
+      reservations = new PathReservations();
+      transform;
+      writable = true;
+      readable = false;
+      dirCache;
+      uid;
+      gid;
+      setOwner;
+      preserveOwner;
+      processGid;
+      processUid;
+      maxDepth;
+      forceChown;
+      win32;
+      newer;
+      keep;
+      noMtime;
+      preservePaths;
+      unlink;
+      cwd;
+      strip;
+      processUmask;
+      umask;
+      dmode;
+      fmode;
+      chmod;
+      constructor(opt = {}) {
+        opt.ondone = () => {
+          this[ENDED2] = true;
+          this[MAYBECLOSE]();
+        };
+        super(opt);
+        this.transform = opt.transform;
+        this.dirCache = opt.dirCache || /* @__PURE__ */ new Map();
+        this.chmod = !!opt.chmod;
+        if (typeof opt.uid === "number" || typeof opt.gid === "number") {
+          if (typeof opt.uid !== "number" || typeof opt.gid !== "number") {
+            throw new TypeError("cannot set owner without number uid and gid");
           }
-        }
-        this[PROCESSING] = false;
-        if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {
-          if (this.zip) {
-            this.zip.end(EOF);
-          } else {
-            super.write(EOF);
-            super.end();
+          if (opt.preserveOwner) {
+            throw new TypeError("cannot preserve owner in archive and also set owner explicitly");
           }
+          this.uid = opt.uid;
+          this.gid = opt.gid;
+          this.setOwner = true;
+        } else {
+          this.uid = void 0;
+          this.gid = void 0;
+          this.setOwner = false;
         }
+        if (opt.preserveOwner === void 0 && typeof opt.uid !== "number") {
+          this.preserveOwner = !!(process.getuid && process.getuid() === 0);
+        } else {
+          this.preserveOwner = !!opt.preserveOwner;
+        }
+        this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? process.getuid() : void 0;
+        this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ? process.getgid() : void 0;
+        this.maxDepth = typeof opt.maxDepth === "number" ? opt.maxDepth : DEFAULT_MAX_DEPTH;
+        this.forceChown = opt.forceChown === true;
+        this.win32 = !!opt.win32 || isWindows3;
+        this.newer = !!opt.newer;
+        this.keep = !!opt.keep;
+        this.noMtime = !!opt.noMtime;
+        this.preservePaths = !!opt.preservePaths;
+        this.unlink = !!opt.unlink;
+        this.cwd = normalizeWindowsPath(import_node_path7.default.resolve(opt.cwd || process.cwd()));
+        this.strip = Number(opt.strip) || 0;
+        this.processUmask = !this.chmod ? 0 : typeof opt.processUmask === "number" ? opt.processUmask : process.umask();
+        this.umask = typeof opt.umask === "number" ? opt.umask : this.processUmask;
+        this.dmode = opt.dmode || 511 & ~this.umask;
+        this.fmode = opt.fmode || 438 & ~this.umask;
+        this.on("entry", (entry) => this[ONENTRY](entry));
       }
-      get [CURRENT]() {
-        return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value;
-      }
-      [JOBDONE](job) {
-        this[QUEUE].shift();
-        this[JOBS] -= 1;
-        this[PROCESS]();
+      // a bad or damaged archive is a warning for Parser, but an error
+      // when extracting.  Mark those errors as unrecoverable, because
+      // the Unpack contract cannot be met.
+      warn(code2, msg, data = {}) {
+        if (code2 === "TAR_BAD_ARCHIVE" || code2 === "TAR_ABORT") {
+          data.recoverable = false;
+        }
+        return super.warn(code2, msg, data);
       }
-      [PROCESSJOB](job) {
-        if (job.pending) {
-          return;
+      [MAYBECLOSE]() {
+        if (this[ENDED2] && this[PENDING] === 0) {
+          this.emit("prefinish");
+          this.emit("finish");
+          this.emit("end");
         }
-        if (job.entry) {
-          if (job === this[CURRENT] && !job.piped) {
-            this[PIPE](job);
+      }
+      [CHECKPATH](entry) {
+        const p = normalizeWindowsPath(entry.path);
+        const parts = p.split("/");
+        if (this.strip) {
+          if (parts.length < this.strip) {
+            return false;
           }
-          return;
-        }
-        if (!job.stat) {
-          if (this.statCache.has(job.absolute)) {
-            this[ONSTAT](job, this.statCache.get(job.absolute));
-          } else {
-            this[STAT](job);
+          if (entry.type === "Link") {
+            const linkparts = normalizeWindowsPath(String(entry.linkpath)).split("/");
+            if (linkparts.length >= this.strip) {
+              entry.linkpath = linkparts.slice(this.strip).join("/");
+            } else {
+              return false;
+            }
           }
+          parts.splice(0, this.strip);
+          entry.path = parts.join("/");
         }
-        if (!job.stat) {
-          return;
-        }
-        if (job.ignore) {
-          return;
+        if (isFinite(this.maxDepth) && parts.length > this.maxDepth) {
+          this.warn("TAR_ENTRY_ERROR", "path excessively deep", {
+            entry,
+            path: p,
+            depth: parts.length,
+            maxDepth: this.maxDepth
+          });
+          return false;
         }
-        if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {
-          if (this.readdirCache.has(job.absolute)) {
-            this[ONREADDIR](job, this.readdirCache.get(job.absolute));
-          } else {
-            this[READDIR](job);
+        if (!this.preservePaths) {
+          if (parts.includes("..") || /* c8 ignore next */
+          isWindows3 && /^[a-z]:\.\.$/i.test(parts[0] ?? "")) {
+            this.warn("TAR_ENTRY_ERROR", `path contains '..'`, {
+              entry,
+              path: p
+            });
+            return false;
           }
-          if (!job.readdir) {
-            return;
+          const [root, stripped] = stripAbsolutePath(p);
+          if (root) {
+            entry.path = String(stripped);
+            this.warn("TAR_ENTRY_INFO", `stripping ${root} from absolute path`, {
+              entry,
+              path: p
+            });
           }
         }
-        job.entry = this[ENTRY](job);
-        if (!job.entry) {
-          job.ignore = true;
-          return;
+        if (import_node_path7.default.isAbsolute(entry.path)) {
+          entry.absolute = normalizeWindowsPath(import_node_path7.default.resolve(entry.path));
+        } else {
+          entry.absolute = normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, entry.path));
         }
-        if (job === this[CURRENT] && !job.piped) {
-          this[PIPE](job);
+        if (!this.preservePaths && typeof entry.absolute === "string" && entry.absolute.indexOf(this.cwd + "/") !== 0 && entry.absolute !== this.cwd) {
+          this.warn("TAR_ENTRY_ERROR", "path escaped extraction target", {
+            entry,
+            path: normalizeWindowsPath(entry.path),
+            resolvedPath: entry.absolute,
+            cwd: this.cwd
+          });
+          return false;
         }
-      }
-      [ENTRYOPT](job) {
-        return {
-          onwarn: (code, msg, data) => this.warn(code, msg, data),
-          noPax: this.noPax,
-          cwd: this.cwd,
-          absolute: job.absolute,
-          preservePaths: this.preservePaths,
-          maxReadSize: this.maxReadSize,
-          strict: this.strict,
-          portable: this.portable,
-          linkCache: this.linkCache,
-          statCache: this.statCache,
-          noMtime: this.noMtime,
-          mtime: this.mtime,
-          prefix: this.prefix
-        };
-      }
-      [ENTRY](job) {
-        this[JOBS] += 1;
-        try {
-          return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job)).on("end", () => this[JOBDONE](job)).on("error", (er) => this.emit("error", er));
-        } catch (er) {
-          this.emit("error", er);
+        if (entry.absolute === this.cwd && entry.type !== "Directory" && entry.type !== "GNUDumpDir") {
+          return false;
         }
-      }
-      [ONDRAIN]() {
-        if (this[CURRENT] && this[CURRENT].entry) {
-          this[CURRENT].entry.resume();
+        if (this.win32) {
+          const { root: aRoot } = import_node_path7.default.win32.parse(String(entry.absolute));
+          entry.absolute = aRoot + encode2(String(entry.absolute).slice(aRoot.length));
+          const { root: pRoot } = import_node_path7.default.win32.parse(entry.path);
+          entry.path = pRoot + encode2(entry.path.slice(pRoot.length));
         }
+        return true;
       }
-      // like .pipe() but using super, because our write() is special
-      [PIPE](job) {
-        job.piped = true;
-        if (job.readdir) {
-          job.readdir.forEach((entry) => {
-            const p = job.path;
-            const base = p === "./" ? "" : p.replace(/\/*$/, "/");
-            this[ADDFSENTRY](base + entry);
-          });
+      [ONENTRY](entry) {
+        if (!this[CHECKPATH](entry)) {
+          return entry.resume();
         }
-        const source = job.entry;
-        const zip = this.zip;
-        if (zip) {
-          source.on("data", (chunk) => {
-            if (!zip.write(chunk)) {
-              source.pause();
-            }
-          });
-        } else {
-          source.on("data", (chunk) => {
-            if (!super.write(chunk)) {
-              source.pause();
+        import_node_assert.default.equal(typeof entry.absolute, "string");
+        switch (entry.type) {
+          case "Directory":
+          case "GNUDumpDir":
+            if (entry.mode) {
+              entry.mode = entry.mode | 448;
             }
-          });
+          case "File":
+          case "OldFile":
+          case "ContiguousFile":
+          case "Link":
+          case "SymbolicLink":
+            return this[CHECKFS](entry);
+          case "CharacterDevice":
+          case "BlockDevice":
+          case "FIFO":
+          default:
+            return this[UNSUPPORTED](entry);
         }
       }
-      pause() {
-        if (this.zip) {
-          this.zip.pause();
+      [ONERROR](er, entry) {
+        if (er.name === "CwdError") {
+          this.emit("error", er);
+        } else {
+          this.warn("TAR_ENTRY_ERROR", er, { entry });
+          this[UNPEND]();
+          entry.resume();
         }
-        return super.pause();
-      }
-    });
-    var PackSync = class extends Pack {
-      constructor(opt) {
-        super(opt);
-        this[WRITEENTRYCLASS] = WriteEntrySync;
       }
-      // pause/resume are no-ops in sync streams.
-      pause() {
+      [MKDIR](dir, mode, cb) {
+        mkdir3(normalizeWindowsPath(dir), {
+          uid: this.uid,
+          gid: this.gid,
+          processUid: this.processUid,
+          processGid: this.processGid,
+          umask: this.processUmask,
+          preserve: this.preservePaths,
+          unlink: this.unlink,
+          cache: this.dirCache,
+          cwd: this.cwd,
+          mode
+        }, cb);
       }
-      resume() {
+      [DOCHOWN](entry) {
+        return this.forceChown || this.preserveOwner && (typeof entry.uid === "number" && entry.uid !== this.processUid || typeof entry.gid === "number" && entry.gid !== this.processGid) || typeof this.uid === "number" && this.uid !== this.processUid || typeof this.gid === "number" && this.gid !== this.processGid;
       }
-      [STAT](job) {
-        const stat = this.follow ? "statSync" : "lstatSync";
-        this[ONSTAT](job, fs8[stat](job.absolute));
+      [UID](entry) {
+        return uint32(this.uid, entry.uid, this.processUid);
       }
-      [READDIR](job, stat) {
-        this[ONREADDIR](job, fs8.readdirSync(job.absolute));
+      [GID](entry) {
+        return uint32(this.gid, entry.gid, this.processGid);
       }
-      // gotta get it all in this tick
-      [PIPE](job) {
-        const source = job.entry;
-        const zip = this.zip;
-        if (job.readdir) {
-          job.readdir.forEach((entry) => {
-            const p = job.path;
-            const base = p === "./" ? "" : p.replace(/\/*$/, "/");
-            this[ADDFSENTRY](base + entry);
-          });
-        }
-        if (zip) {
-          source.on("data", (chunk) => {
-            zip.write(chunk);
-          });
-        } else {
-          source.on("data", (chunk) => {
-            super[WRITE](chunk);
+      [FILE](entry, fullyDone) {
+        const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.fmode;
+        const stream = new WriteStream(String(entry.absolute), {
+          // slight lie, but it can be numeric flags
+          flags: getWriteFlag(entry.size),
+          mode,
+          autoClose: false
+        });
+        stream.on("error", (er) => {
+          if (stream.fd) {
+            import_node_fs3.default.close(stream.fd, () => {
+            });
+          }
+          stream.write = () => true;
+          this[ONERROR](er, entry);
+          fullyDone();
+        });
+        let actions = 1;
+        const done = (er) => {
+          if (er) {
+            if (stream.fd) {
+              import_node_fs3.default.close(stream.fd, () => {
+              });
+            }
+            this[ONERROR](er, entry);
+            fullyDone();
+            return;
+          }
+          if (--actions === 0) {
+            if (stream.fd !== void 0) {
+              import_node_fs3.default.close(stream.fd, (er2) => {
+                if (er2) {
+                  this[ONERROR](er2, entry);
+                } else {
+                  this[UNPEND]();
+                }
+                fullyDone();
+              });
+            }
+          }
+        };
+        stream.on("finish", () => {
+          const abs = String(entry.absolute);
+          const fd = stream.fd;
+          if (typeof fd === "number" && entry.mtime && !this.noMtime) {
+            actions++;
+            const atime = entry.atime || /* @__PURE__ */ new Date();
+            const mtime = entry.mtime;
+            import_node_fs3.default.futimes(fd, atime, mtime, (er) => er ? import_node_fs3.default.utimes(abs, atime, mtime, (er2) => done(er2 && er)) : done());
+          }
+          if (typeof fd === "number" && this[DOCHOWN](entry)) {
+            actions++;
+            const uid = this[UID](entry);
+            const gid = this[GID](entry);
+            if (typeof uid === "number" && typeof gid === "number") {
+              import_node_fs3.default.fchown(fd, uid, gid, (er) => er ? import_node_fs3.default.chown(abs, uid, gid, (er2) => done(er2 && er)) : done());
+            }
+          }
+          done();
+        });
+        const tx = this.transform ? this.transform(entry) || entry : entry;
+        if (tx !== entry) {
+          tx.on("error", (er) => {
+            this[ONERROR](er, entry);
+            fullyDone();
           });
+          entry.pipe(tx);
         }
+        tx.pipe(stream);
       }
-    };
-    Pack.Sync = PackSync;
-    module2.exports = Pack;
-  }
-});
-
-// .yarn/cache/fs-minipass-npm-2.1.0-501ef87306-703d16522b.zip/node_modules/fs-minipass/index.js
-var require_fs_minipass = __commonJS({
-  ".yarn/cache/fs-minipass-npm-2.1.0-501ef87306-703d16522b.zip/node_modules/fs-minipass/index.js"(exports2) {
-    "use strict";
-    var MiniPass = require_minipass2();
-    var EE = require("events").EventEmitter;
-    var fs8 = require("fs");
-    var writev = fs8.writev;
-    if (!writev) {
-      const binding = process.binding("fs");
-      const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback;
-      writev = (fd, iovec, pos, cb) => {
-        const done = (er, bw) => cb(er, bw, iovec);
-        const req = new FSReqWrap();
-        req.oncomplete = done;
-        binding.writeBuffers(fd, iovec, pos, req);
-      };
-    }
-    var _autoClose = Symbol("_autoClose");
-    var _close = Symbol("_close");
-    var _ended = Symbol("_ended");
-    var _fd = Symbol("_fd");
-    var _finished = Symbol("_finished");
-    var _flags = Symbol("_flags");
-    var _flush = Symbol("_flush");
-    var _handleChunk = Symbol("_handleChunk");
-    var _makeBuf = Symbol("_makeBuf");
-    var _mode = Symbol("_mode");
-    var _needDrain = Symbol("_needDrain");
-    var _onerror = Symbol("_onerror");
-    var _onopen = Symbol("_onopen");
-    var _onread = Symbol("_onread");
-    var _onwrite = Symbol("_onwrite");
-    var _open = Symbol("_open");
-    var _path = Symbol("_path");
-    var _pos = Symbol("_pos");
-    var _queue = Symbol("_queue");
-    var _read = Symbol("_read");
-    var _readSize = Symbol("_readSize");
-    var _reading = Symbol("_reading");
-    var _remain = Symbol("_remain");
-    var _size = Symbol("_size");
-    var _write = Symbol("_write");
-    var _writing = Symbol("_writing");
-    var _defaultFlag = Symbol("_defaultFlag");
-    var _errored = Symbol("_errored");
-    var ReadStream = class extends MiniPass {
-      constructor(path10, opt) {
-        opt = opt || {};
-        super(opt);
-        this.readable = true;
-        this.writable = false;
-        if (typeof path10 !== "string")
-          throw new TypeError("path must be a string");
-        this[_errored] = false;
-        this[_fd] = typeof opt.fd === "number" ? opt.fd : null;
-        this[_path] = path10;
-        this[_readSize] = opt.readSize || 16 * 1024 * 1024;
-        this[_reading] = false;
-        this[_size] = typeof opt.size === "number" ? opt.size : Infinity;
-        this[_remain] = this[_size];
-        this[_autoClose] = typeof opt.autoClose === "boolean" ? opt.autoClose : true;
-        if (typeof this[_fd] === "number")
-          this[_read]();
-        else
-          this[_open]();
-      }
-      get fd() {
-        return this[_fd];
-      }
-      get path() {
-        return this[_path];
+      [DIRECTORY](entry, fullyDone) {
+        const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.dmode;
+        this[MKDIR](String(entry.absolute), mode, (er) => {
+          if (er) {
+            this[ONERROR](er, entry);
+            fullyDone();
+            return;
+          }
+          let actions = 1;
+          const done = () => {
+            if (--actions === 0) {
+              fullyDone();
+              this[UNPEND]();
+              entry.resume();
+            }
+          };
+          if (entry.mtime && !this.noMtime) {
+            actions++;
+            import_node_fs3.default.utimes(String(entry.absolute), entry.atime || /* @__PURE__ */ new Date(), entry.mtime, done);
+          }
+          if (this[DOCHOWN](entry)) {
+            actions++;
+            import_node_fs3.default.chown(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)), done);
+          }
+          done();
+        });
       }
-      write() {
-        throw new TypeError("this is a readable stream");
+      [UNSUPPORTED](entry) {
+        entry.unsupported = true;
+        this.warn("TAR_ENTRY_UNSUPPORTED", `unsupported entry type: ${entry.type}`, { entry });
+        entry.resume();
       }
-      end() {
-        throw new TypeError("this is a readable stream");
+      [SYMLINK](entry, done) {
+        this[LINK](entry, String(entry.linkpath), "symlink", done);
       }
-      [_open]() {
-        fs8.open(this[_path], "r", (er, fd) => this[_onopen](er, fd));
+      [HARDLINK](entry, done) {
+        const linkpath = normalizeWindowsPath(import_node_path7.default.resolve(this.cwd, String(entry.linkpath)));
+        this[LINK](entry, linkpath, "link", done);
       }
-      [_onopen](er, fd) {
-        if (er)
-          this[_onerror](er);
-        else {
-          this[_fd] = fd;
-          this.emit("open", fd);
-          this[_read]();
-        }
+      [PEND]() {
+        this[PENDING]++;
       }
-      [_makeBuf]() {
-        return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]));
+      [UNPEND]() {
+        this[PENDING]--;
+        this[MAYBECLOSE]();
       }
-      [_read]() {
-        if (!this[_reading]) {
-          this[_reading] = true;
-          const buf = this[_makeBuf]();
-          if (buf.length === 0)
-            return process.nextTick(() => this[_onread](null, 0, buf));
-          fs8.read(this[_fd], buf, 0, buf.length, null, (er, br, buf2) => this[_onread](er, br, buf2));
-        }
+      [SKIP](entry) {
+        this[UNPEND]();
+        entry.resume();
       }
-      [_onread](er, br, buf) {
-        this[_reading] = false;
-        if (er)
-          this[_onerror](er);
-        else if (this[_handleChunk](br, buf))
-          this[_read]();
+      // Check if we can reuse an existing filesystem entry safely and
+      // overwrite it, rather than unlinking and recreating
+      // Windows doesn't report a useful nlink, so we just never reuse entries
+      [ISREUSABLE](entry, st) {
+        return entry.type === "File" && !this.unlink && st.isFile() && st.nlink <= 1 && !isWindows3;
       }
-      [_close]() {
-        if (this[_autoClose] && typeof this[_fd] === "number") {
-          const fd = this[_fd];
-          this[_fd] = null;
-          fs8.close(fd, (er) => er ? this.emit("error", er) : this.emit("close"));
+      // check if a thing is there, and if so, try to clobber it
+      [CHECKFS](entry) {
+        this[PEND]();
+        const paths = [entry.path];
+        if (entry.linkpath) {
+          paths.push(entry.linkpath);
         }
+        this.reservations.reserve(paths, (done) => this[CHECKFS2](entry, done));
       }
-      [_onerror](er) {
-        this[_reading] = true;
-        this[_close]();
-        this.emit("error", er);
-      }
-      [_handleChunk](br, buf) {
-        let ret = false;
-        this[_remain] -= br;
-        if (br > 0)
-          ret = super.write(br < buf.length ? buf.slice(0, br) : buf);
-        if (br === 0 || this[_remain] <= 0) {
-          ret = false;
-          this[_close]();
-          super.end();
+      [PRUNECACHE](entry) {
+        if (entry.type === "SymbolicLink") {
+          dropCache(this.dirCache);
+        } else if (entry.type !== "Directory") {
+          pruneCache(this.dirCache, String(entry.absolute));
         }
-        return ret;
       }
-      emit(ev, data) {
-        switch (ev) {
-          case "prefinish":
-          case "finish":
-            break;
-          case "drain":
-            if (typeof this[_fd] === "number")
-              this[_read]();
-            break;
-          case "error":
-            if (this[_errored])
+      [CHECKFS2](entry, fullyDone) {
+        this[PRUNECACHE](entry);
+        const done = (er) => {
+          this[PRUNECACHE](entry);
+          fullyDone(er);
+        };
+        const checkCwd2 = () => {
+          this[MKDIR](this.cwd, this.dmode, (er) => {
+            if (er) {
+              this[ONERROR](er, entry);
+              done();
               return;
-            this[_errored] = true;
-            return super.emit(ev, data);
-          default:
-            return super.emit(ev, data);
-        }
-      }
-    };
-    var ReadStreamSync = class extends ReadStream {
-      [_open]() {
-        let threw = true;
-        try {
-          this[_onopen](null, fs8.openSync(this[_path], "r"));
-          threw = false;
-        } finally {
-          if (threw)
-            this[_close]();
-        }
-      }
-      [_read]() {
-        let threw = true;
-        try {
-          if (!this[_reading]) {
-            this[_reading] = true;
-            do {
-              const buf = this[_makeBuf]();
-              const br = buf.length === 0 ? 0 : fs8.readSync(this[_fd], buf, 0, buf.length, null);
-              if (!this[_handleChunk](br, buf))
-                break;
-            } while (true);
-            this[_reading] = false;
+            }
+            this[CHECKED_CWD] = true;
+            start();
+          });
+        };
+        const start = () => {
+          if (entry.absolute !== this.cwd) {
+            const parent = normalizeWindowsPath(import_node_path7.default.dirname(String(entry.absolute)));
+            if (parent !== this.cwd) {
+              return this[MKDIR](parent, this.dmode, (er) => {
+                if (er) {
+                  this[ONERROR](er, entry);
+                  done();
+                  return;
+                }
+                afterMakeParent();
+              });
+            }
           }
-          threw = false;
-        } finally {
-          if (threw)
-            this[_close]();
+          afterMakeParent();
+        };
+        const afterMakeParent = () => {
+          import_node_fs3.default.lstat(String(entry.absolute), (lstatEr, st) => {
+            if (st && (this.keep || /* c8 ignore next */
+            this.newer && st.mtime > (entry.mtime ?? st.mtime))) {
+              this[SKIP](entry);
+              done();
+              return;
+            }
+            if (lstatEr || this[ISREUSABLE](entry, st)) {
+              return this[MAKEFS](null, entry, done);
+            }
+            if (st.isDirectory()) {
+              if (entry.type === "Directory") {
+                const needChmod = this.chmod && entry.mode && (st.mode & 4095) !== entry.mode;
+                const afterChmod = (er) => this[MAKEFS](er ?? null, entry, done);
+                if (!needChmod) {
+                  return afterChmod();
+                }
+                return import_node_fs3.default.chmod(String(entry.absolute), Number(entry.mode), afterChmod);
+              }
+              if (entry.absolute !== this.cwd) {
+                return import_node_fs3.default.rmdir(String(entry.absolute), (er) => this[MAKEFS](er ?? null, entry, done));
+              }
+            }
+            if (entry.absolute === this.cwd) {
+              return this[MAKEFS](null, entry, done);
+            }
+            unlinkFile(String(entry.absolute), (er) => this[MAKEFS](er ?? null, entry, done));
+          });
+        };
+        if (this[CHECKED_CWD]) {
+          start();
+        } else {
+          checkCwd2();
         }
       }
-      [_close]() {
-        if (this[_autoClose] && typeof this[_fd] === "number") {
-          const fd = this[_fd];
-          this[_fd] = null;
-          fs8.closeSync(fd);
-          this.emit("close");
+      [MAKEFS](er, entry, done) {
+        if (er) {
+          this[ONERROR](er, entry);
+          done();
+          return;
         }
-      }
-    };
-    var WriteStream = class extends EE {
-      constructor(path10, opt) {
-        opt = opt || {};
-        super(opt);
-        this.readable = false;
-        this.writable = true;
-        this[_errored] = false;
-        this[_writing] = false;
-        this[_ended] = false;
-        this[_needDrain] = false;
-        this[_queue] = [];
-        this[_path] = path10;
-        this[_fd] = typeof opt.fd === "number" ? opt.fd : null;
-        this[_mode] = opt.mode === void 0 ? 438 : opt.mode;
-        this[_pos] = typeof opt.start === "number" ? opt.start : null;
-        this[_autoClose] = typeof opt.autoClose === "boolean" ? opt.autoClose : true;
-        const defaultFlag = this[_pos] !== null ? "r+" : "w";
-        this[_defaultFlag] = opt.flags === void 0;
-        this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags;
-        if (this[_fd] === null)
-          this[_open]();
-      }
-      emit(ev, data) {
-        if (ev === "error") {
-          if (this[_errored])
-            return;
-          this[_errored] = true;
+        switch (entry.type) {
+          case "File":
+          case "OldFile":
+          case "ContiguousFile":
+            return this[FILE](entry, done);
+          case "Link":
+            return this[HARDLINK](entry, done);
+          case "SymbolicLink":
+            return this[SYMLINK](entry, done);
+          case "Directory":
+          case "GNUDumpDir":
+            return this[DIRECTORY](entry, done);
         }
-        return super.emit(ev, data);
-      }
-      get fd() {
-        return this[_fd];
-      }
-      get path() {
-        return this[_path];
-      }
-      [_onerror](er) {
-        this[_close]();
-        this[_writing] = true;
-        this.emit("error", er);
       }
-      [_open]() {
-        fs8.open(
-          this[_path],
-          this[_flags],
-          this[_mode],
-          (er, fd) => this[_onopen](er, fd)
-        );
+      [LINK](entry, linkpath, link, done) {
+        import_node_fs3.default[link](linkpath, String(entry.absolute), (er) => {
+          if (er) {
+            this[ONERROR](er, entry);
+          } else {
+            this[UNPEND]();
+            entry.resume();
+          }
+          done();
+        });
       }
-      [_onopen](er, fd) {
-        if (this[_defaultFlag] && this[_flags] === "r+" && er && er.code === "ENOENT") {
-          this[_flags] = "w";
-          this[_open]();
-        } else if (er)
-          this[_onerror](er);
-        else {
-          this[_fd] = fd;
-          this.emit("open", fd);
-          this[_flush]();
-        }
+    };
+    callSync = (fn2) => {
+      try {
+        return [null, fn2()];
+      } catch (er) {
+        return [er, null];
       }
-      end(buf, enc) {
-        if (buf)
-          this.write(buf, enc);
-        this[_ended] = true;
-        if (!this[_writing] && !this[_queue].length && typeof this[_fd] === "number")
-          this[_onwrite](null, 0);
-        return this;
+    };
+    UnpackSync = class extends Unpack {
+      sync = true;
+      [MAKEFS](er, entry) {
+        return super[MAKEFS](er, entry, () => {
+        });
       }
-      write(buf, enc) {
-        if (typeof buf === "string")
-          buf = Buffer.from(buf, enc);
-        if (this[_ended]) {
-          this.emit("error", new Error("write() after end()"));
-          return false;
-        }
-        if (this[_fd] === null || this[_writing] || this[_queue].length) {
-          this[_queue].push(buf);
-          this[_needDrain] = true;
-          return false;
+      [CHECKFS](entry) {
+        this[PRUNECACHE](entry);
+        if (!this[CHECKED_CWD]) {
+          const er2 = this[MKDIR](this.cwd, this.dmode);
+          if (er2) {
+            return this[ONERROR](er2, entry);
+          }
+          this[CHECKED_CWD] = true;
         }
-        this[_writing] = true;
-        this[_write](buf);
-        return true;
-      }
-      [_write](buf) {
-        fs8.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) => this[_onwrite](er, bw));
-      }
-      [_onwrite](er, bw) {
-        if (er)
-          this[_onerror](er);
-        else {
-          if (this[_pos] !== null)
-            this[_pos] += bw;
-          if (this[_queue].length)
-            this[_flush]();
-          else {
-            this[_writing] = false;
-            if (this[_ended] && !this[_finished]) {
-              this[_finished] = true;
-              this[_close]();
-              this.emit("finish");
-            } else if (this[_needDrain]) {
-              this[_needDrain] = false;
-              this.emit("drain");
+        if (entry.absolute !== this.cwd) {
+          const parent = normalizeWindowsPath(import_node_path7.default.dirname(String(entry.absolute)));
+          if (parent !== this.cwd) {
+            const mkParent = this[MKDIR](parent, this.dmode);
+            if (mkParent) {
+              return this[ONERROR](mkParent, entry);
             }
           }
         }
-      }
-      [_flush]() {
-        if (this[_queue].length === 0) {
-          if (this[_ended])
-            this[_onwrite](null, 0);
-        } else if (this[_queue].length === 1)
-          this[_write](this[_queue].pop());
-        else {
-          const iovec = this[_queue];
-          this[_queue] = [];
-          writev(
-            this[_fd],
-            iovec,
-            this[_pos],
-            (er, bw) => this[_onwrite](er, bw)
-          );
+        const [lstatEr, st] = callSync(() => import_node_fs3.default.lstatSync(String(entry.absolute)));
+        if (st && (this.keep || /* c8 ignore next */
+        this.newer && st.mtime > (entry.mtime ?? st.mtime))) {
+          return this[SKIP](entry);
         }
-      }
-      [_close]() {
-        if (this[_autoClose] && typeof this[_fd] === "number") {
-          const fd = this[_fd];
-          this[_fd] = null;
-          fs8.close(fd, (er) => er ? this.emit("error", er) : this.emit("close"));
+        if (lstatEr || this[ISREUSABLE](entry, st)) {
+          return this[MAKEFS](null, entry);
         }
+        if (st.isDirectory()) {
+          if (entry.type === "Directory") {
+            const needChmod = this.chmod && entry.mode && (st.mode & 4095) !== entry.mode;
+            const [er3] = needChmod ? callSync(() => {
+              import_node_fs3.default.chmodSync(String(entry.absolute), Number(entry.mode));
+            }) : [];
+            return this[MAKEFS](er3, entry);
+          }
+          const [er2] = callSync(() => import_node_fs3.default.rmdirSync(String(entry.absolute)));
+          this[MAKEFS](er2, entry);
+        }
+        const [er] = entry.absolute === this.cwd ? [] : callSync(() => unlinkFileSync(String(entry.absolute)));
+        this[MAKEFS](er, entry);
       }
-    };
-    var WriteStreamSync = class extends WriteStream {
-      [_open]() {
+      [FILE](entry, done) {
+        const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.fmode;
+        const oner = (er) => {
+          let closeError;
+          try {
+            import_node_fs3.default.closeSync(fd);
+          } catch (e) {
+            closeError = e;
+          }
+          if (er || closeError) {
+            this[ONERROR](er || closeError, entry);
+          }
+          done();
+        };
         let fd;
-        if (this[_defaultFlag] && this[_flags] === "r+") {
+        try {
+          fd = import_node_fs3.default.openSync(String(entry.absolute), getWriteFlag(entry.size), mode);
+        } catch (er) {
+          return oner(er);
+        }
+        const tx = this.transform ? this.transform(entry) || entry : entry;
+        if (tx !== entry) {
+          tx.on("error", (er) => this[ONERROR](er, entry));
+          entry.pipe(tx);
+        }
+        tx.on("data", (chunk) => {
           try {
-            fd = fs8.openSync(this[_path], this[_flags], this[_mode]);
+            import_node_fs3.default.writeSync(fd, chunk, 0, chunk.length);
           } catch (er) {
-            if (er.code === "ENOENT") {
-              this[_flags] = "w";
-              return this[_open]();
-            } else
-              throw er;
+            oner(er);
           }
-        } else
-          fd = fs8.openSync(this[_path], this[_flags], this[_mode]);
-        this[_onopen](null, fd);
-      }
-      [_close]() {
-        if (this[_autoClose] && typeof this[_fd] === "number") {
-          const fd = this[_fd];
-          this[_fd] = null;
-          fs8.closeSync(fd);
-          this.emit("close");
-        }
-      }
-      [_write](buf) {
-        let threw = true;
-        try {
-          this[_onwrite](
-            null,
-            fs8.writeSync(this[_fd], buf, 0, buf.length, this[_pos])
-          );
-          threw = false;
-        } finally {
-          if (threw)
+        });
+        tx.on("end", () => {
+          let er = null;
+          if (entry.mtime && !this.noMtime) {
+            const atime = entry.atime || /* @__PURE__ */ new Date();
+            const mtime = entry.mtime;
             try {
-              this[_close]();
-            } catch (_) {
+              import_node_fs3.default.futimesSync(fd, atime, mtime);
+            } catch (futimeser) {
+              try {
+                import_node_fs3.default.utimesSync(String(entry.absolute), atime, mtime);
+              } catch (utimeser) {
+                er = futimeser;
+              }
+            }
+          }
+          if (this[DOCHOWN](entry)) {
+            const uid = this[UID](entry);
+            const gid = this[GID](entry);
+            try {
+              import_node_fs3.default.fchownSync(fd, Number(uid), Number(gid));
+            } catch (fchowner) {
+              try {
+                import_node_fs3.default.chownSync(String(entry.absolute), Number(uid), Number(gid));
+              } catch (chowner) {
+                er = er || fchowner;
+              }
             }
-        }
-      }
-    };
-    exports2.ReadStream = ReadStream;
-    exports2.ReadStreamSync = ReadStreamSync;
-    exports2.WriteStream = WriteStream;
-    exports2.WriteStreamSync = WriteStreamSync;
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/parse.js
-var require_parse2 = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/parse.js"(exports2, module2) {
-    "use strict";
-    var warner = require_warn_mixin();
-    var Header = require_header();
-    var EE = require("events");
-    var Yallist = require_yallist();
-    var maxMetaEntrySize = 1024 * 1024;
-    var Entry = require_read_entry();
-    var Pax = require_pax();
-    var zlib = require_minizlib();
-    var { nextTick } = require("process");
-    var gzipHeader = Buffer.from([31, 139]);
-    var STATE = Symbol("state");
-    var WRITEENTRY = Symbol("writeEntry");
-    var READENTRY = Symbol("readEntry");
-    var NEXTENTRY = Symbol("nextEntry");
-    var PROCESSENTRY = Symbol("processEntry");
-    var EX = Symbol("extendedHeader");
-    var GEX = Symbol("globalExtendedHeader");
-    var META = Symbol("meta");
-    var EMITMETA = Symbol("emitMeta");
-    var BUFFER = Symbol("buffer");
-    var QUEUE = Symbol("queue");
-    var ENDED = Symbol("ended");
-    var EMITTEDEND = Symbol("emittedEnd");
-    var EMIT = Symbol("emit");
-    var UNZIP = Symbol("unzip");
-    var CONSUMECHUNK = Symbol("consumeChunk");
-    var CONSUMECHUNKSUB = Symbol("consumeChunkSub");
-    var CONSUMEBODY = Symbol("consumeBody");
-    var CONSUMEMETA = Symbol("consumeMeta");
-    var CONSUMEHEADER = Symbol("consumeHeader");
-    var CONSUMING = Symbol("consuming");
-    var BUFFERCONCAT = Symbol("bufferConcat");
-    var MAYBEEND = Symbol("maybeEnd");
-    var WRITING = Symbol("writing");
-    var ABORTED = Symbol("aborted");
-    var DONE = Symbol("onDone");
-    var SAW_VALID_ENTRY = Symbol("sawValidEntry");
-    var SAW_NULL_BLOCK = Symbol("sawNullBlock");
-    var SAW_EOF = Symbol("sawEOF");
-    var CLOSESTREAM = Symbol("closeStream");
-    var noop = (_) => true;
-    module2.exports = warner(class Parser extends EE {
-      constructor(opt) {
-        opt = opt || {};
-        super(opt);
-        this.file = opt.file || "";
-        this[SAW_VALID_ENTRY] = null;
-        this.on(DONE, (_) => {
-          if (this[STATE] === "begin" || this[SAW_VALID_ENTRY] === false) {
-            this.warn("TAR_BAD_ARCHIVE", "Unrecognized archive format");
           }
+          oner(er);
         });
-        if (opt.ondone) {
-          this.on(DONE, opt.ondone);
-        } else {
-          this.on(DONE, (_) => {
-            this.emit("prefinish");
-            this.emit("finish");
-            this.emit("end");
-          });
+      }
+      [DIRECTORY](entry, done) {
+        const mode = typeof entry.mode === "number" ? entry.mode & 4095 : this.dmode;
+        const er = this[MKDIR](String(entry.absolute), mode);
+        if (er) {
+          this[ONERROR](er, entry);
+          done();
+          return;
         }
-        this.strict = !!opt.strict;
-        this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize;
-        this.filter = typeof opt.filter === "function" ? opt.filter : noop;
-        const isTBR = opt.file && (opt.file.endsWith(".tar.br") || opt.file.endsWith(".tbr"));
-        this.brotli = !opt.gzip && opt.brotli !== void 0 ? opt.brotli : isTBR ? void 0 : false;
-        this.writable = true;
-        this.readable = false;
-        this[QUEUE] = new Yallist();
-        this[BUFFER] = null;
-        this[READENTRY] = null;
-        this[WRITEENTRY] = null;
-        this[STATE] = "begin";
-        this[META] = "";
-        this[EX] = null;
-        this[GEX] = null;
-        this[ENDED] = false;
-        this[UNZIP] = null;
-        this[ABORTED] = false;
-        this[SAW_NULL_BLOCK] = false;
-        this[SAW_EOF] = false;
-        this.on("end", () => this[CLOSESTREAM]());
-        if (typeof opt.onwarn === "function") {
-          this.on("warn", opt.onwarn);
+        if (entry.mtime && !this.noMtime) {
+          try {
+            import_node_fs3.default.utimesSync(String(entry.absolute), entry.atime || /* @__PURE__ */ new Date(), entry.mtime);
+          } catch (er2) {
+          }
         }
-        if (typeof opt.onentry === "function") {
-          this.on("entry", opt.onentry);
+        if (this[DOCHOWN](entry)) {
+          try {
+            import_node_fs3.default.chownSync(String(entry.absolute), Number(this[UID](entry)), Number(this[GID](entry)));
+          } catch (er2) {
+          }
         }
+        done();
+        entry.resume();
       }
-      [CONSUMEHEADER](chunk, position) {
-        if (this[SAW_VALID_ENTRY] === null) {
-          this[SAW_VALID_ENTRY] = false;
+      [MKDIR](dir, mode) {
+        try {
+          return mkdirSync4(normalizeWindowsPath(dir), {
+            uid: this.uid,
+            gid: this.gid,
+            processUid: this.processUid,
+            processGid: this.processGid,
+            umask: this.processUmask,
+            preserve: this.preservePaths,
+            unlink: this.unlink,
+            cache: this.dirCache,
+            cwd: this.cwd,
+            mode
+          });
+        } catch (er) {
+          return er;
         }
-        let header;
+      }
+      [LINK](entry, linkpath, link, done) {
+        const ls = `${link}Sync`;
         try {
-          header = new Header(chunk, position, this[EX], this[GEX]);
+          import_node_fs3.default[ls](linkpath, String(entry.absolute));
+          done();
+          entry.resume();
         } catch (er) {
-          return this.warn("TAR_ENTRY_INVALID", er);
+          return this[ONERROR](er, entry);
         }
-        if (header.nullBlock) {
-          if (this[SAW_NULL_BLOCK]) {
-            this[SAW_EOF] = true;
-            if (this[STATE] === "begin") {
-              this[STATE] = "header";
-            }
-            this[EMIT]("eof");
-          } else {
-            this[SAW_NULL_BLOCK] = true;
-            this[EMIT]("nullBlock");
-          }
-        } else {
-          this[SAW_NULL_BLOCK] = false;
-          if (!header.cksumValid) {
-            this.warn("TAR_ENTRY_INVALID", "checksum failure", { header });
-          } else if (!header.path) {
-            this.warn("TAR_ENTRY_INVALID", "path is required", { header });
+      }
+    };
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/extract.js
+var extract_exports = {};
+__export(extract_exports, {
+  extract: () => extract
+});
+var import_node_fs4, extractFileSync, extractFile, extract;
+var init_extract = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/extract.js"() {
+    init_esm2();
+    import_node_fs4 = __toESM(require("node:fs"), 1);
+    init_list();
+    init_make_command();
+    init_unpack();
+    extractFileSync = (opt) => {
+      const u = new UnpackSync(opt);
+      const file = opt.file;
+      const stat2 = import_node_fs4.default.statSync(file);
+      const readSize = opt.maxReadSize || 16 * 1024 * 1024;
+      const stream = new ReadStreamSync(file, {
+        readSize,
+        size: stat2.size
+      });
+      stream.pipe(u);
+    };
+    extractFile = (opt, _) => {
+      const u = new Unpack(opt);
+      const readSize = opt.maxReadSize || 16 * 1024 * 1024;
+      const file = opt.file;
+      const p = new Promise((resolve2, reject) => {
+        u.on("error", reject);
+        u.on("close", resolve2);
+        import_node_fs4.default.stat(file, (er, stat2) => {
+          if (er) {
+            reject(er);
           } else {
-            const type = header.type;
-            if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {
-              this.warn("TAR_ENTRY_INVALID", "linkpath required", { header });
-            } else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath) {
-              this.warn("TAR_ENTRY_INVALID", "linkpath forbidden", { header });
-            } else {
-              const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX]);
-              if (!this[SAW_VALID_ENTRY]) {
-                if (entry.remain) {
-                  const onend = () => {
-                    if (!entry.invalid) {
-                      this[SAW_VALID_ENTRY] = true;
-                    }
-                  };
-                  entry.on("end", onend);
-                } else {
-                  this[SAW_VALID_ENTRY] = true;
-                }
-              }
-              if (entry.meta) {
-                if (entry.size > this.maxMetaEntrySize) {
-                  entry.ignore = true;
-                  this[EMIT]("ignoredEntry", entry);
-                  this[STATE] = "ignore";
-                  entry.resume();
-                } else if (entry.size > 0) {
-                  this[META] = "";
-                  entry.on("data", (c) => this[META] += c);
-                  this[STATE] = "meta";
-                }
-              } else {
-                this[EX] = null;
-                entry.ignore = entry.ignore || !this.filter(entry.path, entry);
-                if (entry.ignore) {
-                  this[EMIT]("ignoredEntry", entry);
-                  this[STATE] = entry.remain ? "ignore" : "header";
-                  entry.resume();
-                } else {
-                  if (entry.remain) {
-                    this[STATE] = "body";
-                  } else {
-                    this[STATE] = "header";
-                    entry.end();
-                  }
-                  if (!this[READENTRY]) {
-                    this[QUEUE].push(entry);
-                    this[NEXTENTRY]();
-                  } else {
-                    this[QUEUE].push(entry);
-                  }
-                }
-              }
-            }
+            const stream = new ReadStream(file, {
+              readSize,
+              size: stat2.size
+            });
+            stream.on("error", reject);
+            stream.pipe(u);
           }
-        }
-      }
-      [CLOSESTREAM]() {
-        nextTick(() => this.emit("close"));
+        });
+      });
+      return p;
+    };
+    extract = makeCommand(extractFileSync, extractFile, (opt) => new UnpackSync(opt), (opt) => new Unpack(opt), (opt, files) => {
+      if (files?.length)
+        filesFilter(opt, files);
+    });
+  }
+});
+
+// .yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js
+var require_v8_compile_cache = __commonJS({
+  ".yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js"(exports2, module2) {
+    "use strict";
+    var Module2 = require("module");
+    var crypto = require("crypto");
+    var fs17 = require("fs");
+    var path16 = require("path");
+    var vm = require("vm");
+    var os3 = require("os");
+    var hasOwnProperty2 = Object.prototype.hasOwnProperty;
+    var FileSystemBlobStore = class {
+      constructor(directory, prefix) {
+        const name2 = prefix ? slashEscape(prefix + ".") : "";
+        this._blobFilename = path16.join(directory, name2 + "BLOB");
+        this._mapFilename = path16.join(directory, name2 + "MAP");
+        this._lockFilename = path16.join(directory, name2 + "LOCK");
+        this._directory = directory;
+        this._load();
       }
-      [PROCESSENTRY](entry) {
-        let go = true;
-        if (!entry) {
-          this[READENTRY] = null;
-          go = false;
-        } else if (Array.isArray(entry)) {
-          this.emit.apply(this, entry);
-        } else {
-          this[READENTRY] = entry;
-          this.emit("entry", entry);
-          if (!entry.emittedEnd) {
-            entry.on("end", (_) => this[NEXTENTRY]());
-            go = false;
-          }
+      has(key, invalidationKey) {
+        if (hasOwnProperty2.call(this._memoryBlobs, key)) {
+          return this._invalidationKeys[key] === invalidationKey;
+        } else if (hasOwnProperty2.call(this._storedMap, key)) {
+          return this._storedMap[key][0] === invalidationKey;
         }
-        return go;
+        return false;
       }
-      [NEXTENTRY]() {
-        do {
-        } while (this[PROCESSENTRY](this[QUEUE].shift()));
-        if (!this[QUEUE].length) {
-          const re = this[READENTRY];
-          const drainNow = !re || re.flowing || re.size === re.remain;
-          if (drainNow) {
-            if (!this[WRITING]) {
-              this.emit("drain");
-            }
-          } else {
-            re.once("drain", (_) => this.emit("drain"));
+      get(key, invalidationKey) {
+        if (hasOwnProperty2.call(this._memoryBlobs, key)) {
+          if (this._invalidationKeys[key] === invalidationKey) {
+            return this._memoryBlobs[key];
+          }
+        } else if (hasOwnProperty2.call(this._storedMap, key)) {
+          const mapping = this._storedMap[key];
+          if (mapping[0] === invalidationKey) {
+            return this._storedBlob.slice(mapping[1], mapping[2]);
           }
         }
       }
-      [CONSUMEBODY](chunk, position) {
-        const entry = this[WRITEENTRY];
-        const br = entry.blockRemain;
-        const c = br >= chunk.length && position === 0 ? chunk : chunk.slice(position, position + br);
-        entry.write(c);
-        if (!entry.blockRemain) {
-          this[STATE] = "header";
-          this[WRITEENTRY] = null;
-          entry.end();
-        }
-        return c.length;
+      set(key, invalidationKey, buffer) {
+        this._invalidationKeys[key] = invalidationKey;
+        this._memoryBlobs[key] = buffer;
+        this._dirty = true;
       }
-      [CONSUMEMETA](chunk, position) {
-        const entry = this[WRITEENTRY];
-        const ret = this[CONSUMEBODY](chunk, position);
-        if (!this[WRITEENTRY]) {
-          this[EMITMETA](entry);
+      delete(key) {
+        if (hasOwnProperty2.call(this._memoryBlobs, key)) {
+          this._dirty = true;
+          delete this._memoryBlobs[key];
         }
-        return ret;
-      }
-      [EMIT](ev, data, extra) {
-        if (!this[QUEUE].length && !this[READENTRY]) {
-          this.emit(ev, data, extra);
-        } else {
-          this[QUEUE].push([ev, data, extra]);
+        if (hasOwnProperty2.call(this._invalidationKeys, key)) {
+          this._dirty = true;
+          delete this._invalidationKeys[key];
         }
-      }
-      [EMITMETA](entry) {
-        this[EMIT]("meta", this[META]);
-        switch (entry.type) {
-          case "ExtendedHeader":
-          case "OldExtendedHeader":
-            this[EX] = Pax.parse(this[META], this[EX], false);
-            break;
-          case "GlobalExtendedHeader":
-            this[GEX] = Pax.parse(this[META], this[GEX], true);
-            break;
-          case "NextFileHasLongPath":
-          case "OldGnuLongPath":
-            this[EX] = this[EX] || /* @__PURE__ */ Object.create(null);
-            this[EX].path = this[META].replace(/\0.*/, "");
-            break;
-          case "NextFileHasLongLinkpath":
-            this[EX] = this[EX] || /* @__PURE__ */ Object.create(null);
-            this[EX].linkpath = this[META].replace(/\0.*/, "");
-            break;
-          default:
-            throw new Error("unknown meta: " + entry.type);
+        if (hasOwnProperty2.call(this._storedMap, key)) {
+          this._dirty = true;
+          delete this._storedMap[key];
         }
       }
-      abort(error) {
-        this[ABORTED] = true;
-        this.emit("abort", error);
-        this.warn("TAR_ABORT", error, { recoverable: false });
+      isDirty() {
+        return this._dirty;
       }
-      write(chunk) {
-        if (this[ABORTED]) {
-          return;
-        }
-        const needSniff = this[UNZIP] === null || this.brotli === void 0 && this[UNZIP] === false;
-        if (needSniff && chunk) {
-          if (this[BUFFER]) {
-            chunk = Buffer.concat([this[BUFFER], chunk]);
-            this[BUFFER] = null;
-          }
-          if (chunk.length < gzipHeader.length) {
-            this[BUFFER] = chunk;
-            return true;
-          }
-          for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {
-            if (chunk[i] !== gzipHeader[i]) {
-              this[UNZIP] = false;
-            }
-          }
-          const maybeBrotli = this.brotli === void 0;
-          if (this[UNZIP] === false && maybeBrotli) {
-            if (chunk.length < 512) {
-              if (this[ENDED]) {
-                this.brotli = true;
-              } else {
-                this[BUFFER] = chunk;
-                return true;
-              }
-            } else {
-              try {
-                new Header(chunk.slice(0, 512));
-                this.brotli = false;
-              } catch (_) {
-                this.brotli = true;
-              }
-            }
-          }
-          if (this[UNZIP] === null || this[UNZIP] === false && this.brotli) {
-            const ended = this[ENDED];
-            this[ENDED] = false;
-            this[UNZIP] = this[UNZIP] === null ? new zlib.Unzip() : new zlib.BrotliDecompress();
-            this[UNZIP].on("data", (chunk2) => this[CONSUMECHUNK](chunk2));
-            this[UNZIP].on("error", (er) => this.abort(er));
-            this[UNZIP].on("end", (_) => {
-              this[ENDED] = true;
-              this[CONSUMECHUNK]();
-            });
-            this[WRITING] = true;
-            const ret2 = this[UNZIP][ended ? "end" : "write"](chunk);
-            this[WRITING] = false;
-            return ret2;
-          }
-        }
-        this[WRITING] = true;
-        if (this[UNZIP]) {
-          this[UNZIP].write(chunk);
-        } else {
-          this[CONSUMECHUNK](chunk);
+      save() {
+        const dump = this._getDump();
+        const blobToStore = Buffer.concat(dump[0]);
+        const mapToStore = JSON.stringify(dump[1]);
+        try {
+          mkdirpSync2(this._directory);
+          fs17.writeFileSync(this._lockFilename, "LOCK", { flag: "wx" });
+        } catch (error) {
+          return false;
         }
-        this[WRITING] = false;
-        const ret = this[QUEUE].length ? false : this[READENTRY] ? this[READENTRY].flowing : true;
-        if (!ret && !this[QUEUE].length) {
-          this[READENTRY].once("drain", (_) => this.emit("drain"));
+        try {
+          fs17.writeFileSync(this._blobFilename, blobToStore);
+          fs17.writeFileSync(this._mapFilename, mapToStore);
+        } finally {
+          fs17.unlinkSync(this._lockFilename);
         }
-        return ret;
+        return true;
       }
-      [BUFFERCONCAT](c) {
-        if (c && !this[ABORTED]) {
-          this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c;
+      _load() {
+        try {
+          this._storedBlob = fs17.readFileSync(this._blobFilename);
+          this._storedMap = JSON.parse(fs17.readFileSync(this._mapFilename));
+        } catch (e) {
+          this._storedBlob = Buffer.alloc(0);
+          this._storedMap = {};
         }
+        this._dirty = false;
+        this._memoryBlobs = {};
+        this._invalidationKeys = {};
       }
-      [MAYBEEND]() {
-        if (this[ENDED] && !this[EMITTEDEND] && !this[ABORTED] && !this[CONSUMING]) {
-          this[EMITTEDEND] = true;
-          const entry = this[WRITEENTRY];
-          if (entry && entry.blockRemain) {
-            const have = this[BUFFER] ? this[BUFFER].length : 0;
-            this.warn("TAR_BAD_ARCHIVE", `Truncated input (needed ${entry.blockRemain} more bytes, only ${have} available)`, { entry });
-            if (this[BUFFER]) {
-              entry.write(this[BUFFER]);
-            }
-            entry.end();
-          }
-          this[EMIT](DONE);
+      _getDump() {
+        const buffers = [];
+        const newMap = {};
+        let offset = 0;
+        function push2(key, invalidationKey, buffer) {
+          buffers.push(buffer);
+          newMap[key] = [invalidationKey, offset, offset + buffer.length];
+          offset += buffer.length;
         }
-      }
-      [CONSUMECHUNK](chunk) {
-        if (this[CONSUMING]) {
-          this[BUFFERCONCAT](chunk);
-        } else if (!chunk && !this[BUFFER]) {
-          this[MAYBEEND]();
-        } else {
-          this[CONSUMING] = true;
-          if (this[BUFFER]) {
-            this[BUFFERCONCAT](chunk);
-            const c = this[BUFFER];
-            this[BUFFER] = null;
-            this[CONSUMECHUNKSUB](c);
-          } else {
-            this[CONSUMECHUNKSUB](chunk);
-          }
-          while (this[BUFFER] && this[BUFFER].length >= 512 && !this[ABORTED] && !this[SAW_EOF]) {
-            const c = this[BUFFER];
-            this[BUFFER] = null;
-            this[CONSUMECHUNKSUB](c);
-          }
-          this[CONSUMING] = false;
+        for (const key of Object.keys(this._memoryBlobs)) {
+          const buffer = this._memoryBlobs[key];
+          const invalidationKey = this._invalidationKeys[key];
+          push2(key, invalidationKey, buffer);
         }
-        if (!this[BUFFER] || this[ENDED]) {
-          this[MAYBEEND]();
+        for (const key of Object.keys(this._storedMap)) {
+          if (hasOwnProperty2.call(newMap, key)) continue;
+          const mapping = this._storedMap[key];
+          const buffer = this._storedBlob.slice(mapping[1], mapping[2]);
+          push2(key, mapping[0], buffer);
         }
+        return [buffers, newMap];
       }
-      [CONSUMECHUNKSUB](chunk) {
-        let position = 0;
-        const length = chunk.length;
-        while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {
-          switch (this[STATE]) {
-            case "begin":
-            case "header":
-              this[CONSUMEHEADER](chunk, position);
-              position += 512;
-              break;
-            case "ignore":
-            case "body":
-              position += this[CONSUMEBODY](chunk, position);
-              break;
-            case "meta":
-              position += this[CONSUMEMETA](chunk, position);
-              break;
-            default:
-              throw new Error("invalid state: " + this[STATE]);
+    };
+    var NativeCompileCache = class {
+      constructor() {
+        this._cacheStore = null;
+        this._previousModuleCompile = null;
+      }
+      setCacheStore(cacheStore) {
+        this._cacheStore = cacheStore;
+      }
+      install() {
+        const self2 = this;
+        const hasRequireResolvePaths = typeof require.resolve.paths === "function";
+        this._previousModuleCompile = Module2.prototype._compile;
+        Module2.prototype._compile = function(content, filename) {
+          const mod = this;
+          function require2(id) {
+            return mod.require(id);
           }
-        }
-        if (position < length) {
-          if (this[BUFFER]) {
-            this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]]);
-          } else {
-            this[BUFFER] = chunk.slice(position);
+          function resolve2(request, options) {
+            return Module2._resolveFilename(request, mod, false, options);
           }
-        }
-      }
-      end(chunk) {
-        if (!this[ABORTED]) {
-          if (this[UNZIP]) {
-            this[UNZIP].end(chunk);
-          } else {
-            this[ENDED] = true;
-            if (this.brotli === void 0) chunk = chunk || Buffer.alloc(0);
-            this.write(chunk);
+          require2.resolve = resolve2;
+          if (hasRequireResolvePaths) {
+            resolve2.paths = function paths(request) {
+              return Module2._resolveLookupPaths(request, mod, true);
+            };
           }
-        }
-      }
-    });
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/list.js
-var require_list = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/list.js"(exports2, module2) {
-    "use strict";
-    var hlo = require_high_level_opt();
-    var Parser = require_parse2();
-    var fs8 = require("fs");
-    var fsm = require_fs_minipass();
-    var path10 = require("path");
-    var stripSlash = require_strip_trailing_slashes();
-    module2.exports = (opt_, files, cb) => {
-      if (typeof opt_ === "function") {
-        cb = opt_, files = null, opt_ = {};
-      } else if (Array.isArray(opt_)) {
-        files = opt_, opt_ = {};
-      }
-      if (typeof files === "function") {
-        cb = files, files = null;
-      }
-      if (!files) {
-        files = [];
-      } else {
-        files = Array.from(files);
-      }
-      const opt = hlo(opt_);
-      if (opt.sync && typeof cb === "function") {
-        throw new TypeError("callback not supported for sync tar functions");
-      }
-      if (!opt.file && typeof cb === "function") {
-        throw new TypeError("callback only supported with file option");
+          require2.main = process.mainModule;
+          require2.extensions = Module2._extensions;
+          require2.cache = Module2._cache;
+          const dirname5 = path16.dirname(filename);
+          const compiledWrapper = self2._moduleCompile(filename, content);
+          const args = [mod.exports, require2, mod, filename, dirname5, process, global, Buffer];
+          return compiledWrapper.apply(mod.exports, args);
+        };
       }
-      if (files.length) {
-        filesFilter(opt, files);
+      uninstall() {
+        Module2.prototype._compile = this._previousModuleCompile;
       }
-      if (!opt.noResume) {
-        onentryFunction(opt);
+      _moduleCompile(filename, content) {
+        var contLen = content.length;
+        if (contLen >= 2) {
+          if (content.charCodeAt(0) === 35 && content.charCodeAt(1) === 33) {
+            if (contLen === 2) {
+              content = "";
+            } else {
+              var i = 2;
+              for (; i < contLen; ++i) {
+                var code2 = content.charCodeAt(i);
+                if (code2 === 10 || code2 === 13) break;
+              }
+              if (i === contLen) {
+                content = "";
+              } else {
+                content = content.slice(i);
+              }
+            }
+          }
+        }
+        var wrapper = Module2.wrap(content);
+        var invalidationKey = crypto.createHash("sha1").update(content, "utf8").digest("hex");
+        var buffer = this._cacheStore.get(filename, invalidationKey);
+        var script = new vm.Script(wrapper, {
+          filename,
+          lineOffset: 0,
+          displayErrors: true,
+          cachedData: buffer,
+          produceCachedData: true
+        });
+        if (script.cachedDataProduced) {
+          this._cacheStore.set(filename, invalidationKey, script.cachedData);
+        } else if (script.cachedDataRejected) {
+          this._cacheStore.delete(filename);
+        }
+        var compiledWrapper = script.runInThisContext({
+          filename,
+          lineOffset: 0,
+          columnOffset: 0,
+          displayErrors: true
+        });
+        return compiledWrapper;
       }
-      return opt.file && opt.sync ? listFileSync(opt) : opt.file ? listFile(opt, cb) : list(opt);
-    };
-    var onentryFunction = (opt) => {
-      const onentry = opt.onentry;
-      opt.onentry = onentry ? (e) => {
-        onentry(e);
-        e.resume();
-      } : (e) => e.resume();
-    };
-    var filesFilter = (opt, files) => {
-      const map = new Map(files.map((f) => [stripSlash(f), true]));
-      const filter = opt.filter;
-      const mapHas = (file, r) => {
-        const root = r || path10.parse(file).root || ".";
-        const ret = file === root ? false : map.has(file) ? map.get(file) : mapHas(path10.dirname(file), root);
-        map.set(file, ret);
-        return ret;
-      };
-      opt.filter = filter ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file)) : (file) => mapHas(stripSlash(file));
     };
-    var listFileSync = (opt) => {
-      const p = list(opt);
-      const file = opt.file;
-      let threw = true;
-      let fd;
+    function mkdirpSync2(p_) {
+      _mkdirpSync(path16.resolve(p_), 511);
+    }
+    function _mkdirpSync(p, mode) {
       try {
-        const stat = fs8.statSync(file);
-        const readSize = opt.maxReadSize || 16 * 1024 * 1024;
-        if (stat.size < readSize) {
-          p.end(fs8.readFileSync(file));
+        fs17.mkdirSync(p, mode);
+      } catch (err0) {
+        if (err0.code === "ENOENT") {
+          _mkdirpSync(path16.dirname(p));
+          _mkdirpSync(p);
         } else {
-          let pos = 0;
-          const buf = Buffer.allocUnsafe(readSize);
-          fd = fs8.openSync(file, "r");
-          while (pos < stat.size) {
-            const bytesRead = fs8.readSync(fd, buf, 0, readSize, pos);
-            pos += bytesRead;
-            p.write(buf.slice(0, bytesRead));
-          }
-          p.end();
-        }
-        threw = false;
-      } finally {
-        if (threw && fd) {
           try {
-            fs8.closeSync(fd);
-          } catch (er) {
+            const stat2 = fs17.statSync(p);
+            if (!stat2.isDirectory()) {
+              throw err0;
+            }
+          } catch (err1) {
+            throw err0;
           }
         }
       }
-    };
-    var listFile = (opt, cb) => {
-      const parse = new Parser(opt);
-      const readSize = opt.maxReadSize || 16 * 1024 * 1024;
-      const file = opt.file;
-      const p = new Promise((resolve, reject) => {
-        parse.on("error", reject);
-        parse.on("end", resolve);
-        fs8.stat(file, (er, stat) => {
-          if (er) {
-            reject(er);
-          } else {
-            const stream = new fsm.ReadStream(file, {
-              readSize,
-              size: stat.size
-            });
-            stream.on("error", reject);
-            stream.pipe(parse);
-          }
-        });
+    }
+    function slashEscape(str) {
+      const ESCAPE_LOOKUP = {
+        "\\": "zB",
+        ":": "zC",
+        "/": "zS",
+        "\0": "z0",
+        "z": "zZ"
+      };
+      const ESCAPE_REGEX = /[\\:/\x00z]/g;
+      return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
+    }
+    function supportsCachedData() {
+      const script = new vm.Script('""', { produceCachedData: true });
+      return script.cachedDataProduced === true;
+    }
+    function getCacheDir() {
+      const v8_compile_cache_cache_dir = process.env.V8_COMPILE_CACHE_CACHE_DIR;
+      if (v8_compile_cache_cache_dir) {
+        return v8_compile_cache_cache_dir;
+      }
+      const dirname5 = typeof process.getuid === "function" ? "v8-compile-cache-" + process.getuid() : "v8-compile-cache";
+      const arch = process.arch;
+      const version3 = typeof process.versions.v8 === "string" ? process.versions.v8 : typeof process.versions.chakracore === "string" ? "chakracore-" + process.versions.chakracore : "node-" + process.version;
+      const cacheDir = path16.join(os3.tmpdir(), dirname5, arch, version3);
+      return cacheDir;
+    }
+    function getMainName() {
+      const mainName = require.main && typeof require.main.filename === "string" ? require.main.filename : process.cwd();
+      return mainName;
+    }
+    if (!process.env.DISABLE_V8_COMPILE_CACHE && supportsCachedData()) {
+      const cacheDir = getCacheDir();
+      const prefix = getMainName();
+      const blobStore = new FileSystemBlobStore(cacheDir, prefix);
+      const nativeCompileCache = new NativeCompileCache();
+      nativeCompileCache.setCacheStore(blobStore);
+      nativeCompileCache.install();
+      process.once("exit", () => {
+        if (blobStore.isDirty()) {
+          blobStore.save();
+        }
+        nativeCompileCache.uninstall();
       });
-      return cb ? p.then(cb, cb) : p;
+    }
+    module2.exports.__TEST__ = {
+      FileSystemBlobStore,
+      NativeCompileCache,
+      mkdirpSync: mkdirpSync2,
+      slashEscape,
+      supportsCachedData,
+      getCacheDir,
+      getMainName
     };
-    var list = (opt) => new Parser(opt);
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/create.js
-var require_create = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/create.js"(exports2, module2) {
+// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js
+var require_posix = __commonJS({
+  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js"(exports2) {
     "use strict";
-    var hlo = require_high_level_opt();
-    var Pack = require_pack();
-    var fsm = require_fs_minipass();
-    var t = require_list();
-    var path10 = require("path");
-    module2.exports = (opt_, files, cb) => {
-      if (typeof files === "function") {
-        cb = files;
-      }
-      if (Array.isArray(opt_)) {
-        files = opt_, opt_ = {};
-      }
-      if (!files || !Array.isArray(files) || !files.length) {
-        throw new TypeError("no files or directories specified");
-      }
-      files = Array.from(files);
-      const opt = hlo(opt_);
-      if (opt.sync && typeof cb === "function") {
-        throw new TypeError("callback not supported for sync tar functions");
-      }
-      if (!opt.file && typeof cb === "function") {
-        throw new TypeError("callback only supported with file option");
-      }
-      return opt.file && opt.sync ? createFileSync(opt, files) : opt.file ? createFile(opt, files, cb) : opt.sync ? createSync(opt, files) : create(opt, files);
-    };
-    var createFileSync = (opt, files) => {
-      const p = new Pack.Sync(opt);
-      const stream = new fsm.WriteStreamSync(opt.file, {
-        mode: opt.mode || 438
-      });
-      p.pipe(stream);
-      addFilesSync(p, files);
-    };
-    var createFile = (opt, files, cb) => {
-      const p = new Pack(opt);
-      const stream = new fsm.WriteStream(opt.file, {
-        mode: opt.mode || 438
-      });
-      p.pipe(stream);
-      const promise = new Promise((res, rej) => {
-        stream.on("error", rej);
-        stream.on("close", res);
-        p.on("error", rej);
-      });
-      addFilesAsync(p, files);
-      return cb ? promise.then(cb, cb) : promise;
-    };
-    var addFilesSync = (p, files) => {
-      files.forEach((file) => {
-        if (file.charAt(0) === "@") {
-          t({
-            file: path10.resolve(p.cwd, file.slice(1)),
-            sync: true,
-            noResume: true,
-            onentry: (entry) => p.add(entry)
-          });
-        } else {
-          p.add(file);
-        }
-      });
-      p.end();
-    };
-    var addFilesAsync = (p, files) => {
-      while (files.length) {
-        const file = files.shift();
-        if (file.charAt(0) === "@") {
-          return t({
-            file: path10.resolve(p.cwd, file.slice(1)),
-            noResume: true,
-            onentry: (entry) => p.add(entry)
-          }).then((_) => addFilesAsync(p, files));
-        } else {
-          p.add(file);
-        }
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.sync = exports2.isexe = void 0;
+    var fs_1 = require("fs");
+    var promises_1 = require("fs/promises");
+    var isexe = async (path16, options = {}) => {
+      const { ignoreErrors = false } = options;
+      try {
+        return checkStat(await (0, promises_1.stat)(path16), options);
+      } catch (e) {
+        const er = e;
+        if (ignoreErrors || er.code === "EACCES")
+          return false;
+        throw er;
       }
-      p.end();
     };
-    var createSync = (opt, files) => {
-      const p = new Pack.Sync(opt);
-      addFilesSync(p, files);
-      return p;
+    exports2.isexe = isexe;
+    var sync = (path16, options = {}) => {
+      const { ignoreErrors = false } = options;
+      try {
+        return checkStat((0, fs_1.statSync)(path16), options);
+      } catch (e) {
+        const er = e;
+        if (ignoreErrors || er.code === "EACCES")
+          return false;
+        throw er;
+      }
     };
-    var create = (opt, files) => {
-      const p = new Pack(opt);
-      addFilesAsync(p, files);
-      return p;
+    exports2.sync = sync;
+    var checkStat = (stat2, options) => stat2.isFile() && checkMode(stat2, options);
+    var checkMode = (stat2, options) => {
+      const myUid = options.uid ?? process.getuid?.();
+      const myGroups = options.groups ?? process.getgroups?.() ?? [];
+      const myGid = options.gid ?? process.getgid?.() ?? myGroups[0];
+      if (myUid === void 0 || myGid === void 0) {
+        throw new Error("cannot get uid or gid");
+      }
+      const groups = /* @__PURE__ */ new Set([myGid, ...myGroups]);
+      const mod = stat2.mode;
+      const uid = stat2.uid;
+      const gid = stat2.gid;
+      const u = parseInt("100", 8);
+      const g = parseInt("010", 8);
+      const o = parseInt("001", 8);
+      const ug = u | g;
+      return !!(mod & o || mod & g && groups.has(gid) || mod & u && uid === myUid || mod & ug && myUid === 0);
     };
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/replace.js
-var require_replace = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/replace.js"(exports2, module2) {
+// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js
+var require_win32 = __commonJS({
+  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js"(exports2) {
     "use strict";
-    var hlo = require_high_level_opt();
-    var Pack = require_pack();
-    var fs8 = require("fs");
-    var fsm = require_fs_minipass();
-    var t = require_list();
-    var path10 = require("path");
-    var Header = require_header();
-    module2.exports = (opt_, files, cb) => {
-      const opt = hlo(opt_);
-      if (!opt.file) {
-        throw new TypeError("file is required");
-      }
-      if (opt.gzip || opt.brotli || opt.file.endsWith(".br") || opt.file.endsWith(".tbr")) {
-        throw new TypeError("cannot append to compressed archives");
-      }
-      if (!files || !Array.isArray(files) || !files.length) {
-        throw new TypeError("no files or directories specified");
-      }
-      files = Array.from(files);
-      return opt.sync ? replaceSync(opt, files) : replace(opt, files, cb);
-    };
-    var replaceSync = (opt, files) => {
-      const p = new Pack.Sync(opt);
-      let threw = true;
-      let fd;
-      let position;
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.sync = exports2.isexe = void 0;
+    var fs_1 = require("fs");
+    var promises_1 = require("fs/promises");
+    var isexe = async (path16, options = {}) => {
+      const { ignoreErrors = false } = options;
       try {
-        try {
-          fd = fs8.openSync(opt.file, "r+");
-        } catch (er) {
-          if (er.code === "ENOENT") {
-            fd = fs8.openSync(opt.file, "w+");
-          } else {
-            throw er;
-          }
-        }
-        const st = fs8.fstatSync(fd);
-        const headBuf = Buffer.alloc(512);
-        POSITION: for (position = 0; position < st.size; position += 512) {
-          for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {
-            bytes = fs8.readSync(
-              fd,
-              headBuf,
-              bufPos,
-              headBuf.length - bufPos,
-              position + bufPos
-            );
-            if (position === 0 && headBuf[0] === 31 && headBuf[1] === 139) {
-              throw new Error("cannot append to compressed archives");
-            }
-            if (!bytes) {
-              break POSITION;
-            }
-          }
-          const h = new Header(headBuf);
-          if (!h.cksumValid) {
-            break;
-          }
-          const entryBlockSize = 512 * Math.ceil(h.size / 512);
-          if (position + entryBlockSize + 512 > st.size) {
-            break;
-          }
-          position += entryBlockSize;
-          if (opt.mtimeCache) {
-            opt.mtimeCache.set(h.path, h.mtime);
-          }
-        }
-        threw = false;
-        streamSync(opt, p, position, fd, files);
-      } finally {
-        if (threw) {
-          try {
-            fs8.closeSync(fd);
-          } catch (er) {
-          }
-        }
+        return checkStat(await (0, promises_1.stat)(path16), path16, options);
+      } catch (e) {
+        const er = e;
+        if (ignoreErrors || er.code === "EACCES")
+          return false;
+        throw er;
       }
     };
-    var streamSync = (opt, p, position, fd, files) => {
-      const stream = new fsm.WriteStreamSync(opt.file, {
-        fd,
-        start: position
-      });
-      p.pipe(stream);
-      addFilesSync(p, files);
-    };
-    var replace = (opt, files, cb) => {
-      files = Array.from(files);
-      const p = new Pack(opt);
-      const getPos = (fd, size, cb_) => {
-        const cb2 = (er, pos) => {
-          if (er) {
-            fs8.close(fd, (_) => cb_(er));
-          } else {
-            cb_(null, pos);
-          }
-        };
-        let position = 0;
-        if (size === 0) {
-          return cb2(null, 0);
-        }
-        let bufPos = 0;
-        const headBuf = Buffer.alloc(512);
-        const onread = (er, bytes) => {
-          if (er) {
-            return cb2(er);
-          }
-          bufPos += bytes;
-          if (bufPos < 512 && bytes) {
-            return fs8.read(
-              fd,
-              headBuf,
-              bufPos,
-              headBuf.length - bufPos,
-              position + bufPos,
-              onread
-            );
-          }
-          if (position === 0 && headBuf[0] === 31 && headBuf[1] === 139) {
-            return cb2(new Error("cannot append to compressed archives"));
-          }
-          if (bufPos < 512) {
-            return cb2(null, position);
-          }
-          const h = new Header(headBuf);
-          if (!h.cksumValid) {
-            return cb2(null, position);
-          }
-          const entryBlockSize = 512 * Math.ceil(h.size / 512);
-          if (position + entryBlockSize + 512 > size) {
-            return cb2(null, position);
-          }
-          position += entryBlockSize + 512;
-          if (position >= size) {
-            return cb2(null, position);
-          }
-          if (opt.mtimeCache) {
-            opt.mtimeCache.set(h.path, h.mtime);
-          }
-          bufPos = 0;
-          fs8.read(fd, headBuf, 0, 512, position, onread);
-        };
-        fs8.read(fd, headBuf, 0, 512, position, onread);
-      };
-      const promise = new Promise((resolve, reject) => {
-        p.on("error", reject);
-        let flag = "r+";
-        const onopen = (er, fd) => {
-          if (er && er.code === "ENOENT" && flag === "r+") {
-            flag = "w+";
-            return fs8.open(opt.file, flag, onopen);
-          }
-          if (er) {
-            return reject(er);
-          }
-          fs8.fstat(fd, (er2, st) => {
-            if (er2) {
-              return fs8.close(fd, () => reject(er2));
-            }
-            getPos(fd, st.size, (er3, position) => {
-              if (er3) {
-                return reject(er3);
-              }
-              const stream = new fsm.WriteStream(opt.file, {
-                fd,
-                start: position
-              });
-              p.pipe(stream);
-              stream.on("error", reject);
-              stream.on("close", resolve);
-              addFilesAsync(p, files);
-            });
-          });
-        };
-        fs8.open(opt.file, flag, onopen);
-      });
-      return cb ? promise.then(cb, cb) : promise;
-    };
-    var addFilesSync = (p, files) => {
-      files.forEach((file) => {
-        if (file.charAt(0) === "@") {
-          t({
-            file: path10.resolve(p.cwd, file.slice(1)),
-            sync: true,
-            noResume: true,
-            onentry: (entry) => p.add(entry)
-          });
-        } else {
-          p.add(file);
-        }
-      });
-      p.end();
+    exports2.isexe = isexe;
+    var sync = (path16, options = {}) => {
+      const { ignoreErrors = false } = options;
+      try {
+        return checkStat((0, fs_1.statSync)(path16), path16, options);
+      } catch (e) {
+        const er = e;
+        if (ignoreErrors || er.code === "EACCES")
+          return false;
+        throw er;
+      }
     };
-    var addFilesAsync = (p, files) => {
-      while (files.length) {
-        const file = files.shift();
-        if (file.charAt(0) === "@") {
-          return t({
-            file: path10.resolve(p.cwd, file.slice(1)),
-            noResume: true,
-            onentry: (entry) => p.add(entry)
-          }).then((_) => addFilesAsync(p, files));
-        } else {
-          p.add(file);
+    exports2.sync = sync;
+    var checkPathExt = (path16, options) => {
+      const { pathExt = process.env.PATHEXT || "" } = options;
+      const peSplit = pathExt.split(";");
+      if (peSplit.indexOf("") !== -1) {
+        return true;
+      }
+      for (let i = 0; i < peSplit.length; i++) {
+        const p = peSplit[i].toLowerCase();
+        const ext = path16.substring(path16.length - p.length).toLowerCase();
+        if (p && ext === p) {
+          return true;
         }
       }
-      p.end();
+      return false;
     };
+    var checkStat = (stat2, path16, options) => stat2.isFile() && checkPathExt(path16, options);
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/update.js
-var require_update = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/update.js"(exports2, module2) {
+// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js
+var require_options = __commonJS({
+  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js"(exports2) {
     "use strict";
-    var hlo = require_high_level_opt();
-    var r = require_replace();
-    module2.exports = (opt_, files, cb) => {
-      const opt = hlo(opt_);
-      if (!opt.file) {
-        throw new TypeError("file is required");
-      }
-      if (opt.gzip || opt.brotli || opt.file.endsWith(".br") || opt.file.endsWith(".tbr")) {
-        throw new TypeError("cannot append to compressed archives");
-      }
-      if (!files || !Array.isArray(files) || !files.length) {
-        throw new TypeError("no files or directories specified");
-      }
-      files = Array.from(files);
-      mtimeFilter(opt);
-      return r(opt, files, cb);
-    };
-    var mtimeFilter = (opt) => {
-      const filter = opt.filter;
-      if (!opt.mtimeCache) {
-        opt.mtimeCache = /* @__PURE__ */ new Map();
-      }
-      opt.filter = filter ? (path10, stat) => filter(path10, stat) && !(opt.mtimeCache.get(path10) > stat.mtime) : (path10, stat) => !(opt.mtimeCache.get(path10) > stat.mtime);
-    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
   }
 });
 
-// .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/opts-arg.js
-var require_opts_arg = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/opts-arg.js"(exports2, module2) {
-    var { promisify } = require("util");
-    var fs8 = require("fs");
-    var optsArg = (opts) => {
-      if (!opts)
-        opts = { mode: 511, fs: fs8 };
-      else if (typeof opts === "object")
-        opts = { mode: 511, fs: fs8, ...opts };
-      else if (typeof opts === "number")
-        opts = { mode: opts, fs: fs8 };
-      else if (typeof opts === "string")
-        opts = { mode: parseInt(opts, 8), fs: fs8 };
-      else
-        throw new TypeError("invalid options argument");
-      opts.mkdir = opts.mkdir || opts.fs.mkdir || fs8.mkdir;
-      opts.mkdirAsync = promisify(opts.mkdir);
-      opts.stat = opts.stat || opts.fs.stat || fs8.stat;
-      opts.statAsync = promisify(opts.stat);
-      opts.statSync = opts.statSync || opts.fs.statSync || fs8.statSync;
-      opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs8.mkdirSync;
-      return opts;
+// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js
+var require_cjs = __commonJS({
+  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js"(exports2) {
+    "use strict";
+    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
+      if (k2 === void 0) k2 = k;
+      var desc = Object.getOwnPropertyDescriptor(m, k);
+      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+        desc = { enumerable: true, get: function() {
+          return m[k];
+        } };
+      }
+      Object.defineProperty(o, k2, desc);
+    } : function(o, m, k, k2) {
+      if (k2 === void 0) k2 = k;
+      o[k2] = m[k];
+    });
+    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
+      Object.defineProperty(o, "default", { enumerable: true, value: v });
+    } : function(o, v) {
+      o["default"] = v;
+    });
+    var __importStar = exports2 && exports2.__importStar || function(mod) {
+      if (mod && mod.__esModule) return mod;
+      var result = {};
+      if (mod != null) {
+        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+      }
+      __setModuleDefault(result, mod);
+      return result;
     };
-    module2.exports = optsArg;
+    var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
+      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
+    };
+    Object.defineProperty(exports2, "__esModule", { value: true });
+    exports2.sync = exports2.isexe = exports2.posix = exports2.win32 = void 0;
+    var posix = __importStar(require_posix());
+    exports2.posix = posix;
+    var win322 = __importStar(require_win32());
+    exports2.win32 = win322;
+    __exportStar(require_options(), exports2);
+    var platform6 = process.env._ISEXE_TEST_PLATFORM_ || process.platform;
+    var impl = platform6 === "win32" ? win322 : posix;
+    exports2.isexe = impl.isexe;
+    exports2.sync = impl.sync;
   }
 });
 
-// .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/path-arg.js
-var require_path_arg = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/path-arg.js"(exports2, module2) {
-    var platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform;
-    var { resolve, parse } = require("path");
-    var pathArg = (path10) => {
-      if (/\0/.test(path10)) {
-        throw Object.assign(
-          new TypeError("path must be a string without null bytes"),
-          {
-            path: path10,
-            code: "ERR_INVALID_ARG_VALUE"
-          }
-        );
-      }
-      path10 = resolve(path10);
-      if (platform === "win32") {
-        const badWinChars = /[*|"<>?:]/;
-        const { root } = parse(path10);
-        if (badWinChars.test(path10.substr(root.length))) {
-          throw Object.assign(new Error("Illegal characters in path."), {
-            path: path10,
-            code: "EINVAL"
-          });
+// .yarn/cache/which-npm-4.0.0-dd31cd4928-449fa5c44e.zip/node_modules/which/lib/index.js
+var require_lib = __commonJS({
+  ".yarn/cache/which-npm-4.0.0-dd31cd4928-449fa5c44e.zip/node_modules/which/lib/index.js"(exports2, module2) {
+    var { isexe, sync: isexeSync } = require_cjs();
+    var { join: join3, delimiter, sep, posix } = require("path");
+    var isWindows4 = process.platform === "win32";
+    var rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? "" : sep}]`.replace(/(\\)/g, "\\$1"));
+    var rRel = new RegExp(`^\\.${rSlash.source}`);
+    var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
+    var getPathInfo = (cmd, {
+      path: optPath = process.env.PATH,
+      pathExt: optPathExt = process.env.PATHEXT,
+      delimiter: optDelimiter = delimiter
+    }) => {
+      const pathEnv = cmd.match(rSlash) ? [""] : [
+        // windows always checks the cwd first
+        ...isWindows4 ? [process.cwd()] : [],
+        ...(optPath || /* istanbul ignore next: very unusual */
+        "").split(optDelimiter)
+      ];
+      if (isWindows4) {
+        const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter);
+        const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]);
+        if (cmd.includes(".") && pathExt[0] !== "") {
+          pathExt.unshift("");
         }
+        return { pathEnv, pathExt, pathExtExe };
       }
-      return path10;
+      return { pathEnv, pathExt: [""] };
     };
-    module2.exports = pathArg;
-  }
-});
-
-// .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/find-made.js
-var require_find_made = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/find-made.js"(exports2, module2) {
-    var { dirname } = require("path");
-    var findMade = (opts, parent, path10 = void 0) => {
-      if (path10 === parent)
-        return Promise.resolve();
-      return opts.statAsync(parent).then(
-        (st) => st.isDirectory() ? path10 : void 0,
-        // will fail later
-        (er) => er.code === "ENOENT" ? findMade(opts, dirname(parent), parent) : void 0
-      );
+    var getPathPart = (raw2, cmd) => {
+      const pathPart = /^".*"$/.test(raw2) ? raw2.slice(1, -1) : raw2;
+      const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
+      return prefix + join3(pathPart, cmd);
     };
-    var findMadeSync = (opts, parent, path10 = void 0) => {
-      if (path10 === parent)
-        return void 0;
-      try {
-        return opts.statSync(parent).isDirectory() ? path10 : void 0;
-      } catch (er) {
-        return er.code === "ENOENT" ? findMadeSync(opts, dirname(parent), parent) : void 0;
+    var which3 = async (cmd, opt = {}) => {
+      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
+      const found = [];
+      for (const envPart of pathEnv) {
+        const p = getPathPart(envPart, cmd);
+        for (const ext of pathExt) {
+          const withExt = p + ext;
+          const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });
+          if (is) {
+            if (!opt.all) {
+              return withExt;
+            }
+            found.push(withExt);
+          }
+        }
       }
-    };
-    module2.exports = { findMade, findMadeSync };
-  }
-});
-
-// .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-manual.js
-var require_mkdirp_manual = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-manual.js"(exports2, module2) {
-    var { dirname } = require("path");
-    var mkdirpManual = (path10, opts, made) => {
-      opts.recursive = false;
-      const parent = dirname(path10);
-      if (parent === path10) {
-        return opts.mkdirAsync(path10, opts).catch((er) => {
-          if (er.code !== "EISDIR")
-            throw er;
-        });
+      if (opt.all && found.length) {
+        return found;
       }
-      return opts.mkdirAsync(path10, opts).then(() => made || path10, (er) => {
-        if (er.code === "ENOENT")
-          return mkdirpManual(parent, opts).then((made2) => mkdirpManual(path10, opts, made2));
-        if (er.code !== "EEXIST" && er.code !== "EROFS")
-          throw er;
-        return opts.statAsync(path10).then((st) => {
-          if (st.isDirectory())
-            return made;
-          else
-            throw er;
-        }, () => {
-          throw er;
-        });
-      });
+      if (opt.nothrow) {
+        return null;
+      }
+      throw getNotFoundError(cmd);
     };
-    var mkdirpManualSync = (path10, opts, made) => {
-      const parent = dirname(path10);
-      opts.recursive = false;
-      if (parent === path10) {
-        try {
-          return opts.mkdirSync(path10, opts);
-        } catch (er) {
-          if (er.code !== "EISDIR")
-            throw er;
-          else
-            return;
+    var whichSync = (cmd, opt = {}) => {
+      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
+      const found = [];
+      for (const pathEnvPart of pathEnv) {
+        const p = getPathPart(pathEnvPart, cmd);
+        for (const ext of pathExt) {
+          const withExt = p + ext;
+          const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true });
+          if (is) {
+            if (!opt.all) {
+              return withExt;
+            }
+            found.push(withExt);
+          }
         }
       }
-      try {
-        opts.mkdirSync(path10, opts);
-        return made || path10;
-      } catch (er) {
-        if (er.code === "ENOENT")
-          return mkdirpManualSync(path10, opts, mkdirpManualSync(parent, opts, made));
-        if (er.code !== "EEXIST" && er.code !== "EROFS")
-          throw er;
-        try {
-          if (!opts.statSync(path10).isDirectory())
-            throw er;
-        } catch (_) {
-          throw er;
-        }
+      if (opt.all && found.length) {
+        return found;
       }
-    };
-    module2.exports = { mkdirpManual, mkdirpManualSync };
-  }
-});
-
-// .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-native.js
-var require_mkdirp_native = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/mkdirp-native.js"(exports2, module2) {
-    var { dirname } = require("path");
-    var { findMade, findMadeSync } = require_find_made();
-    var { mkdirpManual, mkdirpManualSync } = require_mkdirp_manual();
-    var mkdirpNative = (path10, opts) => {
-      opts.recursive = true;
-      const parent = dirname(path10);
-      if (parent === path10)
-        return opts.mkdirAsync(path10, opts);
-      return findMade(opts, path10).then((made) => opts.mkdirAsync(path10, opts).then(() => made).catch((er) => {
-        if (er.code === "ENOENT")
-          return mkdirpManual(path10, opts);
-        else
-          throw er;
-      }));
-    };
-    var mkdirpNativeSync = (path10, opts) => {
-      opts.recursive = true;
-      const parent = dirname(path10);
-      if (parent === path10)
-        return opts.mkdirSync(path10, opts);
-      const made = findMadeSync(opts, path10);
-      try {
-        opts.mkdirSync(path10, opts);
-        return made;
-      } catch (er) {
-        if (er.code === "ENOENT")
-          return mkdirpManualSync(path10, opts);
-        else
-          throw er;
+      if (opt.nothrow) {
+        return null;
       }
+      throw getNotFoundError(cmd);
     };
-    module2.exports = { mkdirpNative, mkdirpNativeSync };
+    module2.exports = which3;
+    which3.sync = whichSync;
   }
 });
 
-// .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/use-native.js
-var require_use_native = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/lib/use-native.js"(exports2, module2) {
-    var fs8 = require("fs");
-    var version2 = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version;
-    var versArr = version2.replace(/^v/, "").split(".");
-    var hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12;
-    var useNative = !hasNative ? () => false : (opts) => opts.mkdir === fs8.mkdir;
-    var useNativeSync = !hasNative ? () => false : (opts) => opts.mkdirSync === fs8.mkdirSync;
-    module2.exports = { useNative, useNativeSync };
+// .yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js
+var require_is_windows = __commonJS({
+  ".yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js"(exports2, module2) {
+    (function(factory) {
+      if (exports2 && typeof exports2 === "object" && typeof module2 !== "undefined") {
+        module2.exports = factory();
+      } else if (typeof define === "function" && define.amd) {
+        define([], factory);
+      } else if (typeof window !== "undefined") {
+        window.isWindows = factory();
+      } else if (typeof global !== "undefined") {
+        global.isWindows = factory();
+      } else if (typeof self !== "undefined") {
+        self.isWindows = factory();
+      } else {
+        this.isWindows = factory();
+      }
+    })(function() {
+      "use strict";
+      return function isWindows4() {
+        return process && (process.platform === "win32" || /^(msys|cygwin)$/.test(process.env.OSTYPE));
+      };
+    });
   }
 });
 
-// .yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/index.js
-var require_mkdirp = __commonJS({
-  ".yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-46ea0f3ffa.zip/node_modules/mkdirp/index.js"(exports2, module2) {
-    var optsArg = require_opts_arg();
-    var pathArg = require_path_arg();
-    var { mkdirpNative, mkdirpNativeSync } = require_mkdirp_native();
-    var { mkdirpManual, mkdirpManualSync } = require_mkdirp_manual();
-    var { useNative, useNativeSync } = require_use_native();
-    var mkdirp = (path10, opts) => {
-      path10 = pathArg(path10);
-      opts = optsArg(opts);
-      return useNative(opts) ? mkdirpNative(path10, opts) : mkdirpManual(path10, opts);
-    };
-    var mkdirpSync = (path10, opts) => {
-      path10 = pathArg(path10);
-      opts = optsArg(opts);
-      return useNativeSync(opts) ? mkdirpNativeSync(path10, opts) : mkdirpManualSync(path10, opts);
-    };
-    mkdirp.sync = mkdirpSync;
-    mkdirp.native = (path10, opts) => mkdirpNative(pathArg(path10), optsArg(opts));
-    mkdirp.manual = (path10, opts) => mkdirpManual(pathArg(path10), optsArg(opts));
-    mkdirp.nativeSync = (path10, opts) => mkdirpNativeSync(pathArg(path10), optsArg(opts));
-    mkdirp.manualSync = (path10, opts) => mkdirpManualSync(pathArg(path10), optsArg(opts));
-    module2.exports = mkdirp;
+// .yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js
+var require_cmd_extension = __commonJS({
+  ".yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js"(exports2, module2) {
+    "use strict";
+    var path16 = require("path");
+    var cmdExtension;
+    if (process.env.PATHEXT) {
+      cmdExtension = process.env.PATHEXT.split(path16.delimiter).find((ext) => ext.toUpperCase() === ".CMD");
+    }
+    module2.exports = cmdExtension || ".cmd";
   }
 });
 
-// .yarn/cache/chownr-npm-2.0.0-638f1c9c61-594754e130.zip/node_modules/chownr/chownr.js
-var require_chownr = __commonJS({
-  ".yarn/cache/chownr-npm-2.0.0-638f1c9c61-594754e130.zip/node_modules/chownr/chownr.js"(exports2, module2) {
-    "use strict";
-    var fs8 = require("fs");
-    var path10 = require("path");
-    var LCHOWN = fs8.lchown ? "lchown" : "chown";
-    var LCHOWNSYNC = fs8.lchownSync ? "lchownSync" : "chownSync";
-    var needEISDIRHandled = fs8.lchown && !process.version.match(/v1[1-9]+\./) && !process.version.match(/v10\.[6-9]/);
-    var lchownSync = (path11, uid, gid) => {
-      try {
-        return fs8[LCHOWNSYNC](path11, uid, gid);
-      } catch (er) {
-        if (er.code !== "ENOENT")
-          throw er;
-      }
+// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js
+var require_polyfills = __commonJS({
+  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js"(exports2, module2) {
+    var constants2 = require("constants");
+    var origCwd = process.cwd;
+    var cwd = null;
+    var platform6 = process.env.GRACEFUL_FS_PLATFORM || process.platform;
+    process.cwd = function() {
+      if (!cwd)
+        cwd = origCwd.call(process);
+      return cwd;
     };
-    var chownSync = (path11, uid, gid) => {
-      try {
-        return fs8.chownSync(path11, uid, gid);
-      } catch (er) {
-        if (er.code !== "ENOENT")
-          throw er;
+    try {
+      process.cwd();
+    } catch (er) {
+    }
+    if (typeof process.chdir === "function") {
+      chdir = process.chdir;
+      process.chdir = function(d) {
+        cwd = null;
+        chdir.call(process, d);
+      };
+      if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir);
+    }
+    var chdir;
+    module2.exports = patch;
+    function patch(fs17) {
+      if (constants2.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
+        patchLchmod(fs17);
+      }
+      if (!fs17.lutimes) {
+        patchLutimes(fs17);
+      }
+      fs17.chown = chownFix(fs17.chown);
+      fs17.fchown = chownFix(fs17.fchown);
+      fs17.lchown = chownFix(fs17.lchown);
+      fs17.chmod = chmodFix(fs17.chmod);
+      fs17.fchmod = chmodFix(fs17.fchmod);
+      fs17.lchmod = chmodFix(fs17.lchmod);
+      fs17.chownSync = chownFixSync(fs17.chownSync);
+      fs17.fchownSync = chownFixSync(fs17.fchownSync);
+      fs17.lchownSync = chownFixSync(fs17.lchownSync);
+      fs17.chmodSync = chmodFixSync(fs17.chmodSync);
+      fs17.fchmodSync = chmodFixSync(fs17.fchmodSync);
+      fs17.lchmodSync = chmodFixSync(fs17.lchmodSync);
+      fs17.stat = statFix(fs17.stat);
+      fs17.fstat = statFix(fs17.fstat);
+      fs17.lstat = statFix(fs17.lstat);
+      fs17.statSync = statFixSync(fs17.statSync);
+      fs17.fstatSync = statFixSync(fs17.fstatSync);
+      fs17.lstatSync = statFixSync(fs17.lstatSync);
+      if (fs17.chmod && !fs17.lchmod) {
+        fs17.lchmod = function(path16, mode, cb) {
+          if (cb) process.nextTick(cb);
+        };
+        fs17.lchmodSync = function() {
+        };
       }
-    };
-    var handleEISDIR = needEISDIRHandled ? (path11, uid, gid, cb) => (er) => {
-      if (!er || er.code !== "EISDIR")
-        cb(er);
-      else
-        fs8.chown(path11, uid, gid, cb);
-    } : (_, __, ___, cb) => cb;
-    var handleEISDirSync = needEISDIRHandled ? (path11, uid, gid) => {
-      try {
-        return lchownSync(path11, uid, gid);
-      } catch (er) {
-        if (er.code !== "EISDIR")
-          throw er;
-        chownSync(path11, uid, gid);
-      }
-    } : (path11, uid, gid) => lchownSync(path11, uid, gid);
-    var nodeVersion = process.version;
-    var readdir = (path11, options, cb) => fs8.readdir(path11, options, cb);
-    var readdirSync = (path11, options) => fs8.readdirSync(path11, options);
-    if (/^v4\./.test(nodeVersion))
-      readdir = (path11, options, cb) => fs8.readdir(path11, cb);
-    var chown = (cpath, uid, gid, cb) => {
-      fs8[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, (er) => {
-        cb(er && er.code !== "ENOENT" ? er : null);
-      }));
-    };
-    var chownrKid = (p, child, uid, gid, cb) => {
-      if (typeof child === "string")
-        return fs8.lstat(path10.resolve(p, child), (er, stats) => {
-          if (er)
-            return cb(er.code !== "ENOENT" ? er : null);
-          stats.name = child;
-          chownrKid(p, stats, uid, gid, cb);
-        });
-      if (child.isDirectory()) {
-        chownr(path10.resolve(p, child.name), uid, gid, (er) => {
-          if (er)
-            return cb(er);
-          const cpath = path10.resolve(p, child.name);
-          chown(cpath, uid, gid, cb);
-        });
-      } else {
-        const cpath = path10.resolve(p, child.name);
-        chown(cpath, uid, gid, cb);
+      if (fs17.chown && !fs17.lchown) {
+        fs17.lchown = function(path16, uid, gid, cb) {
+          if (cb) process.nextTick(cb);
+        };
+        fs17.lchownSync = function() {
+        };
       }
-    };
-    var chownr = (p, uid, gid, cb) => {
-      readdir(p, { withFileTypes: true }, (er, children) => {
-        if (er) {
-          if (er.code === "ENOENT")
-            return cb();
-          else if (er.code !== "ENOTDIR" && er.code !== "ENOTSUP")
-            return cb(er);
+      if (platform6 === "win32") {
+        fs17.rename = typeof fs17.rename !== "function" ? fs17.rename : function(fs$rename) {
+          function rename(from, to, cb) {
+            var start = Date.now();
+            var backoff = 0;
+            fs$rename(from, to, function CB(er) {
+              if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 6e4) {
+                setTimeout(function() {
+                  fs17.stat(to, function(stater, st) {
+                    if (stater && stater.code === "ENOENT")
+                      fs$rename(from, to, CB);
+                    else
+                      cb(er);
+                  });
+                }, backoff);
+                if (backoff < 100)
+                  backoff += 10;
+                return;
+              }
+              if (cb) cb(er);
+            });
+          }
+          if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename);
+          return rename;
+        }(fs17.rename);
+      }
+      fs17.read = typeof fs17.read !== "function" ? fs17.read : function(fs$read) {
+        function read(fd, buffer, offset, length, position, callback_) {
+          var callback;
+          if (callback_ && typeof callback_ === "function") {
+            var eagCounter = 0;
+            callback = function(er, _, __) {
+              if (er && er.code === "EAGAIN" && eagCounter < 10) {
+                eagCounter++;
+                return fs$read.call(fs17, fd, buffer, offset, length, position, callback);
+              }
+              callback_.apply(this, arguments);
+            };
+          }
+          return fs$read.call(fs17, fd, buffer, offset, length, position, callback);
         }
-        if (er || !children.length)
-          return chown(p, uid, gid, cb);
-        let len = children.length;
-        let errState = null;
-        const then = (er2) => {
-          if (errState)
-            return;
-          if (er2)
-            return cb(errState = er2);
-          if (--len === 0)
-            return chown(p, uid, gid, cb);
+        if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read);
+        return read;
+      }(fs17.read);
+      fs17.readSync = typeof fs17.readSync !== "function" ? fs17.readSync : /* @__PURE__ */ function(fs$readSync) {
+        return function(fd, buffer, offset, length, position) {
+          var eagCounter = 0;
+          while (true) {
+            try {
+              return fs$readSync.call(fs17, fd, buffer, offset, length, position);
+            } catch (er) {
+              if (er.code === "EAGAIN" && eagCounter < 10) {
+                eagCounter++;
+                continue;
+              }
+              throw er;
+            }
+          }
+        };
+      }(fs17.readSync);
+      function patchLchmod(fs18) {
+        fs18.lchmod = function(path16, mode, callback) {
+          fs18.open(
+            path16,
+            constants2.O_WRONLY | constants2.O_SYMLINK,
+            mode,
+            function(err, fd) {
+              if (err) {
+                if (callback) callback(err);
+                return;
+              }
+              fs18.fchmod(fd, mode, function(err2) {
+                fs18.close(fd, function(err22) {
+                  if (callback) callback(err2 || err22);
+                });
+              });
+            }
+          );
+        };
+        fs18.lchmodSync = function(path16, mode) {
+          var fd = fs18.openSync(path16, constants2.O_WRONLY | constants2.O_SYMLINK, mode);
+          var threw = true;
+          var ret;
+          try {
+            ret = fs18.fchmodSync(fd, mode);
+            threw = false;
+          } finally {
+            if (threw) {
+              try {
+                fs18.closeSync(fd);
+              } catch (er) {
+              }
+            } else {
+              fs18.closeSync(fd);
+            }
+          }
+          return ret;
         };
-        children.forEach((child) => chownrKid(p, child, uid, gid, then));
-      });
-    };
-    var chownrKidSync = (p, child, uid, gid) => {
-      if (typeof child === "string") {
-        try {
-          const stats = fs8.lstatSync(path10.resolve(p, child));
-          stats.name = child;
-          child = stats;
-        } catch (er) {
-          if (er.code === "ENOENT")
-            return;
-          else
-            throw er;
-        }
-      }
-      if (child.isDirectory())
-        chownrSync(path10.resolve(p, child.name), uid, gid);
-      handleEISDirSync(path10.resolve(p, child.name), uid, gid);
-    };
-    var chownrSync = (p, uid, gid) => {
-      let children;
-      try {
-        children = readdirSync(p, { withFileTypes: true });
-      } catch (er) {
-        if (er.code === "ENOENT")
-          return;
-        else if (er.code === "ENOTDIR" || er.code === "ENOTSUP")
-          return handleEISDirSync(p, uid, gid);
-        else
-          throw er;
-      }
-      if (children && children.length)
-        children.forEach((child) => chownrKidSync(p, child, uid, gid));
-      return handleEISDirSync(p, uid, gid);
-    };
-    module2.exports = chownr;
-    chownr.sync = chownrSync;
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mkdir.js
-var require_mkdir = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/mkdir.js"(exports2, module2) {
-    "use strict";
-    var mkdirp = require_mkdirp();
-    var fs8 = require("fs");
-    var path10 = require("path");
-    var chownr = require_chownr();
-    var normPath = require_normalize_windows_path();
-    var SymlinkError = class extends Error {
-      constructor(symlink, path11) {
-        super("Cannot extract through symbolic link");
-        this.path = path11;
-        this.symlink = symlink;
-      }
-      get name() {
-        return "SylinkError";
       }
-    };
-    var CwdError = class extends Error {
-      constructor(path11, code) {
-        super(code + ": Cannot cd into '" + path11 + "'");
-        this.path = path11;
-        this.code = code;
+      function patchLutimes(fs18) {
+        if (constants2.hasOwnProperty("O_SYMLINK") && fs18.futimes) {
+          fs18.lutimes = function(path16, at, mt, cb) {
+            fs18.open(path16, constants2.O_SYMLINK, function(er, fd) {
+              if (er) {
+                if (cb) cb(er);
+                return;
+              }
+              fs18.futimes(fd, at, mt, function(er2) {
+                fs18.close(fd, function(er22) {
+                  if (cb) cb(er2 || er22);
+                });
+              });
+            });
+          };
+          fs18.lutimesSync = function(path16, at, mt) {
+            var fd = fs18.openSync(path16, constants2.O_SYMLINK);
+            var ret;
+            var threw = true;
+            try {
+              ret = fs18.futimesSync(fd, at, mt);
+              threw = false;
+            } finally {
+              if (threw) {
+                try {
+                  fs18.closeSync(fd);
+                } catch (er) {
+                }
+              } else {
+                fs18.closeSync(fd);
+              }
+            }
+            return ret;
+          };
+        } else if (fs18.futimes) {
+          fs18.lutimes = function(_a, _b, _c, cb) {
+            if (cb) process.nextTick(cb);
+          };
+          fs18.lutimesSync = function() {
+          };
+        }
       }
-      get name() {
-        return "CwdError";
+      function chmodFix(orig) {
+        if (!orig) return orig;
+        return function(target, mode, cb) {
+          return orig.call(fs17, target, mode, function(er) {
+            if (chownErOk(er)) er = null;
+            if (cb) cb.apply(this, arguments);
+          });
+        };
       }
-    };
-    var cGet = (cache, key) => cache.get(normPath(key));
-    var cSet = (cache, key, val) => cache.set(normPath(key), val);
-    var checkCwd = (dir, cb) => {
-      fs8.stat(dir, (er, st) => {
-        if (er || !st.isDirectory()) {
-          er = new CwdError(dir, er && er.code || "ENOTDIR");
-        }
-        cb(er);
-      });
-    };
-    module2.exports = (dir, opt, cb) => {
-      dir = normPath(dir);
-      const umask = opt.umask;
-      const mode = opt.mode | 448;
-      const needChmod = (mode & umask) !== 0;
-      const uid = opt.uid;
-      const gid = opt.gid;
-      const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid);
-      const preserve = opt.preserve;
-      const unlink = opt.unlink;
-      const cache = opt.cache;
-      const cwd = normPath(opt.cwd);
-      const done = (er, created) => {
-        if (er) {
-          cb(er);
-        } else {
-          cSet(cache, dir, true);
-          if (created && doChown) {
-            chownr(created, uid, gid, (er2) => done(er2));
-          } else if (needChmod) {
-            fs8.chmod(dir, mode, cb);
-          } else {
-            cb();
+      function chmodFixSync(orig) {
+        if (!orig) return orig;
+        return function(target, mode) {
+          try {
+            return orig.call(fs17, target, mode);
+          } catch (er) {
+            if (!chownErOk(er)) throw er;
           }
-        }
-      };
-      if (cache && cGet(cache, dir) === true) {
-        return done();
-      }
-      if (dir === cwd) {
-        return checkCwd(dir, done);
+        };
       }
-      if (preserve) {
-        return mkdirp(dir, { mode }).then((made) => done(null, made), done);
+      function chownFix(orig) {
+        if (!orig) return orig;
+        return function(target, uid, gid, cb) {
+          return orig.call(fs17, target, uid, gid, function(er) {
+            if (chownErOk(er)) er = null;
+            if (cb) cb.apply(this, arguments);
+          });
+        };
       }
-      const sub = normPath(path10.relative(cwd, dir));
-      const parts = sub.split("/");
-      mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done);
-    };
-    var mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {
-      if (!parts.length) {
-        return cb(null, created);
+      function chownFixSync(orig) {
+        if (!orig) return orig;
+        return function(target, uid, gid) {
+          try {
+            return orig.call(fs17, target, uid, gid);
+          } catch (er) {
+            if (!chownErOk(er)) throw er;
+          }
+        };
       }
-      const p = parts.shift();
-      const part = normPath(path10.resolve(base + "/" + p));
-      if (cGet(cache, part)) {
-        return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb);
+      function statFix(orig) {
+        if (!orig) return orig;
+        return function(target, options, cb) {
+          if (typeof options === "function") {
+            cb = options;
+            options = null;
+          }
+          function callback(er, stats) {
+            if (stats) {
+              if (stats.uid < 0) stats.uid += 4294967296;
+              if (stats.gid < 0) stats.gid += 4294967296;
+            }
+            if (cb) cb.apply(this, arguments);
+          }
+          return options ? orig.call(fs17, target, options, callback) : orig.call(fs17, target, callback);
+        };
       }
-      fs8.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb));
-    };
-    var onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => (er) => {
-      if (er) {
-        fs8.lstat(part, (statEr, st) => {
-          if (statEr) {
-            statEr.path = statEr.path && normPath(statEr.path);
-            cb(statEr);
-          } else if (st.isDirectory()) {
-            mkdir_(part, parts, mode, cache, unlink, cwd, created, cb);
-          } else if (unlink) {
-            fs8.unlink(part, (er2) => {
-              if (er2) {
-                return cb(er2);
-              }
-              fs8.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb));
-            });
-          } else if (st.isSymbolicLink()) {
-            return cb(new SymlinkError(part, part + "/" + parts.join("/")));
-          } else {
-            cb(er);
+      function statFixSync(orig) {
+        if (!orig) return orig;
+        return function(target, options) {
+          var stats = options ? orig.call(fs17, target, options) : orig.call(fs17, target);
+          if (stats) {
+            if (stats.uid < 0) stats.uid += 4294967296;
+            if (stats.gid < 0) stats.gid += 4294967296;
           }
-        });
-      } else {
-        created = created || part;
-        mkdir_(part, parts, mode, cache, unlink, cwd, created, cb);
+          return stats;
+        };
       }
-    };
-    var checkCwdSync = (dir) => {
-      let ok = false;
-      let code = "ENOTDIR";
-      try {
-        ok = fs8.statSync(dir).isDirectory();
-      } catch (er) {
-        code = er.code;
-      } finally {
-        if (!ok) {
-          throw new CwdError(dir, code);
-        }
-      }
-    };
-    module2.exports.sync = (dir, opt) => {
-      dir = normPath(dir);
-      const umask = opt.umask;
-      const mode = opt.mode | 448;
-      const needChmod = (mode & umask) !== 0;
-      const uid = opt.uid;
-      const gid = opt.gid;
-      const doChown = typeof uid === "number" && typeof gid === "number" && (uid !== opt.processUid || gid !== opt.processGid);
-      const preserve = opt.preserve;
-      const unlink = opt.unlink;
-      const cache = opt.cache;
-      const cwd = normPath(opt.cwd);
-      const done = (created2) => {
-        cSet(cache, dir, true);
-        if (created2 && doChown) {
-          chownr.sync(created2, uid, gid);
-        }
-        if (needChmod) {
-          fs8.chmodSync(dir, mode);
-        }
-      };
-      if (cache && cGet(cache, dir) === true) {
-        return done();
-      }
-      if (dir === cwd) {
-        checkCwdSync(cwd);
-        return done();
-      }
-      if (preserve) {
-        return done(mkdirp.sync(dir, mode));
-      }
-      const sub = normPath(path10.relative(cwd, dir));
-      const parts = sub.split("/");
-      let created = null;
-      for (let p = parts.shift(), part = cwd; p && (part += "/" + p); p = parts.shift()) {
-        part = normPath(path10.resolve(part));
-        if (cGet(cache, part)) {
-          continue;
-        }
-        try {
-          fs8.mkdirSync(part, mode);
-          created = created || part;
-          cSet(cache, part, true);
-        } catch (er) {
-          const st = fs8.lstatSync(part);
-          if (st.isDirectory()) {
-            cSet(cache, part, true);
-            continue;
-          } else if (unlink) {
-            fs8.unlinkSync(part);
-            fs8.mkdirSync(part, mode);
-            created = created || part;
-            cSet(cache, part, true);
-            continue;
-          } else if (st.isSymbolicLink()) {
-            return new SymlinkError(part, part + "/" + parts.join("/"));
-          }
+      function chownErOk(er) {
+        if (!er)
+          return true;
+        if (er.code === "ENOSYS")
+          return true;
+        var nonroot = !process.getuid || process.getuid() !== 0;
+        if (nonroot) {
+          if (er.code === "EINVAL" || er.code === "EPERM")
+            return true;
         }
+        return false;
       }
-      return done(created);
-    };
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-unicode.js
-var require_normalize_unicode = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/normalize-unicode.js"(exports2, module2) {
-    var normalizeCache = /* @__PURE__ */ Object.create(null);
-    var { hasOwnProperty } = Object.prototype;
-    module2.exports = (s) => {
-      if (!hasOwnProperty.call(normalizeCache, s)) {
-        normalizeCache[s] = s.normalize("NFD");
-      }
-      return normalizeCache[s];
-    };
+    }
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/path-reservations.js
-var require_path_reservations = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/path-reservations.js"(exports2, module2) {
-    var assert3 = require("assert");
-    var normalize = require_normalize_unicode();
-    var stripSlashes = require_strip_trailing_slashes();
-    var { join: join2 } = require("path");
-    var platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
-    var isWindows = platform === "win32";
-    module2.exports = () => {
-      const queues = /* @__PURE__ */ new Map();
-      const reservations = /* @__PURE__ */ new Map();
-      const getDirs = (path10) => {
-        const dirs = path10.split("/").slice(0, -1).reduce((set, path11) => {
-          if (set.length) {
-            path11 = join2(set[set.length - 1], path11);
-          }
-          set.push(path11 || "/");
-          return set;
-        }, []);
-        return dirs;
+// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js
+var require_legacy_streams = __commonJS({
+  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
+    var Stream2 = require("stream").Stream;
+    module2.exports = legacy;
+    function legacy(fs17) {
+      return {
+        ReadStream: ReadStream2,
+        WriteStream: WriteStream2
       };
-      const running = /* @__PURE__ */ new Set();
-      const getQueues = (fn2) => {
-        const res = reservations.get(fn2);
-        if (!res) {
-          throw new Error("function does not have any path reservations");
+      function ReadStream2(path16, options) {
+        if (!(this instanceof ReadStream2)) return new ReadStream2(path16, options);
+        Stream2.call(this);
+        var self2 = this;
+        this.path = path16;
+        this.fd = null;
+        this.readable = true;
+        this.paused = false;
+        this.flags = "r";
+        this.mode = 438;
+        this.bufferSize = 64 * 1024;
+        options = options || {};
+        var keys = Object.keys(options);
+        for (var index = 0, length = keys.length; index < length; index++) {
+          var key = keys[index];
+          this[key] = options[key];
         }
-        return {
-          paths: res.paths.map((path10) => queues.get(path10)),
-          dirs: [...res.dirs].map((path10) => queues.get(path10))
-        };
-      };
-      const check = (fn2) => {
-        const { paths, dirs } = getQueues(fn2);
-        return paths.every((q) => q[0] === fn2) && dirs.every((q) => q[0] instanceof Set && q[0].has(fn2));
-      };
-      const run2 = (fn2) => {
-        if (running.has(fn2) || !check(fn2)) {
-          return false;
+        if (this.encoding) this.setEncoding(this.encoding);
+        if (this.start !== void 0) {
+          if ("number" !== typeof this.start) {
+            throw TypeError("start must be a Number");
+          }
+          if (this.end === void 0) {
+            this.end = Infinity;
+          } else if ("number" !== typeof this.end) {
+            throw TypeError("end must be a Number");
+          }
+          if (this.start > this.end) {
+            throw new Error("start must be <= end");
+          }
+          this.pos = this.start;
         }
-        running.add(fn2);
-        fn2(() => clear(fn2));
-        return true;
-      };
-      const clear = (fn2) => {
-        if (!running.has(fn2)) {
-          return false;
+        if (this.fd !== null) {
+          process.nextTick(function() {
+            self2._read();
+          });
+          return;
         }
-        const { paths, dirs } = reservations.get(fn2);
-        const next = /* @__PURE__ */ new Set();
-        paths.forEach((path10) => {
-          const q = queues.get(path10);
-          assert3.equal(q[0], fn2);
-          if (q.length === 1) {
-            queues.delete(path10);
-          } else {
-            q.shift();
-            if (typeof q[0] === "function") {
-              next.add(q[0]);
-            } else {
-              q[0].forEach((fn3) => next.add(fn3));
-            }
-          }
-        });
-        dirs.forEach((dir) => {
-          const q = queues.get(dir);
-          assert3(q[0] instanceof Set);
-          if (q[0].size === 1 && q.length === 1) {
-            queues.delete(dir);
-          } else if (q[0].size === 1) {
-            q.shift();
-            next.add(q[0]);
-          } else {
-            q[0].delete(fn2);
+        fs17.open(this.path, this.flags, this.mode, function(err, fd) {
+          if (err) {
+            self2.emit("error", err);
+            self2.readable = false;
+            return;
           }
+          self2.fd = fd;
+          self2.emit("open", fd);
+          self2._read();
         });
-        running.delete(fn2);
-        next.forEach((fn3) => run2(fn3));
-        return true;
-      };
-      const reserve = (paths, fn2) => {
-        paths = isWindows ? ["win32 parallelization disabled"] : paths.map((p) => {
-          return stripSlashes(join2(normalize(p))).toLowerCase();
-        });
-        const dirs = new Set(
-          paths.map((path10) => getDirs(path10)).reduce((a, b) => a.concat(b))
-        );
-        reservations.set(fn2, { dirs, paths });
-        paths.forEach((path10) => {
-          const q = queues.get(path10);
-          if (!q) {
-            queues.set(path10, [fn2]);
-          } else {
-            q.push(fn2);
+      }
+      function WriteStream2(path16, options) {
+        if (!(this instanceof WriteStream2)) return new WriteStream2(path16, options);
+        Stream2.call(this);
+        this.path = path16;
+        this.fd = null;
+        this.writable = true;
+        this.flags = "w";
+        this.encoding = "binary";
+        this.mode = 438;
+        this.bytesWritten = 0;
+        options = options || {};
+        var keys = Object.keys(options);
+        for (var index = 0, length = keys.length; index < length; index++) {
+          var key = keys[index];
+          this[key] = options[key];
+        }
+        if (this.start !== void 0) {
+          if ("number" !== typeof this.start) {
+            throw TypeError("start must be a Number");
           }
-        });
-        dirs.forEach((dir) => {
-          const q = queues.get(dir);
-          if (!q) {
-            queues.set(dir, [/* @__PURE__ */ new Set([fn2])]);
-          } else if (q[q.length - 1] instanceof Set) {
-            q[q.length - 1].add(fn2);
-          } else {
-            q.push(/* @__PURE__ */ new Set([fn2]));
+          if (this.start < 0) {
+            throw new Error("start must be >= zero");
           }
-        });
-        return run2(fn2);
-      };
-      return { check, reserve };
-    };
+          this.pos = this.start;
+        }
+        this.busy = false;
+        this._queue = [];
+        if (this.fd === null) {
+          this._open = fs17.open;
+          this._queue.push([this._open, this.path, this.flags, this.mode, void 0]);
+          this.flush();
+        }
+      }
+    }
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/get-write-flag.js
-var require_get_write_flag = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/get-write-flag.js"(exports2, module2) {
-    var platform = process.env.__FAKE_PLATFORM__ || process.platform;
-    var isWindows = platform === "win32";
-    var fs8 = global.__FAKE_TESTING_FS__ || require("fs");
-    var { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs8.constants;
-    var fMapEnabled = isWindows && !!UV_FS_O_FILEMAP;
-    var fMapLimit = 512 * 1024;
-    var fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY;
-    module2.exports = !fMapEnabled ? () => "w" : (size) => size < fMapLimit ? fMapFlag : "w";
+// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js
+var require_clone = __commonJS({
+  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js"(exports2, module2) {
+    "use strict";
+    module2.exports = clone;
+    var getPrototypeOf = Object.getPrototypeOf || function(obj) {
+      return obj.__proto__;
+    };
+    function clone(obj) {
+      if (obj === null || typeof obj !== "object")
+        return obj;
+      if (obj instanceof Object)
+        var copy = { __proto__: getPrototypeOf(obj) };
+      else
+        var copy = /* @__PURE__ */ Object.create(null);
+      Object.getOwnPropertyNames(obj).forEach(function(key) {
+        Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key));
+      });
+      return copy;
+    }
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/unpack.js
-var require_unpack = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/unpack.js"(exports2, module2) {
-    "use strict";
-    var assert3 = require("assert");
-    var Parser = require_parse2();
-    var fs8 = require("fs");
-    var fsm = require_fs_minipass();
-    var path10 = require("path");
-    var mkdir4 = require_mkdir();
-    var wc = require_winchars();
-    var pathReservations = require_path_reservations();
-    var stripAbsolutePath = require_strip_absolute_path();
-    var normPath = require_normalize_windows_path();
-    var stripSlash = require_strip_trailing_slashes();
-    var normalize = require_normalize_unicode();
-    var ONENTRY = Symbol("onEntry");
-    var CHECKFS = Symbol("checkFs");
-    var CHECKFS2 = Symbol("checkFs2");
-    var PRUNECACHE = Symbol("pruneCache");
-    var ISREUSABLE = Symbol("isReusable");
-    var MAKEFS = Symbol("makeFs");
-    var FILE = Symbol("file");
-    var DIRECTORY = Symbol("directory");
-    var LINK = Symbol("link");
-    var SYMLINK = Symbol("symlink");
-    var HARDLINK = Symbol("hardlink");
-    var UNSUPPORTED = Symbol("unsupported");
-    var CHECKPATH = Symbol("checkPath");
-    var MKDIR = Symbol("mkdir");
-    var ONERROR = Symbol("onError");
-    var PENDING = Symbol("pending");
-    var PEND = Symbol("pend");
-    var UNPEND = Symbol("unpend");
-    var ENDED = Symbol("ended");
-    var MAYBECLOSE = Symbol("maybeClose");
-    var SKIP = Symbol("skip");
-    var DOCHOWN = Symbol("doChown");
-    var UID = Symbol("uid");
-    var GID = Symbol("gid");
-    var CHECKED_CWD = Symbol("checkedCwd");
-    var crypto = require("crypto");
-    var getFlag = require_get_write_flag();
-    var platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform;
-    var isWindows = platform === "win32";
-    var DEFAULT_MAX_DEPTH = 1024;
-    var unlinkFile = (path11, cb) => {
-      if (!isWindows) {
-        return fs8.unlink(path11, cb);
-      }
-      const name = path11 + ".DELETE." + crypto.randomBytes(16).toString("hex");
-      fs8.rename(path11, name, (er) => {
-        if (er) {
-          return cb(er);
+// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js
+var require_graceful_fs = __commonJS({
+  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
+    var fs17 = require("fs");
+    var polyfills = require_polyfills();
+    var legacy = require_legacy_streams();
+    var clone = require_clone();
+    var util = require("util");
+    var gracefulQueue;
+    var previousSymbol;
+    if (typeof Symbol === "function" && typeof Symbol.for === "function") {
+      gracefulQueue = Symbol.for("graceful-fs.queue");
+      previousSymbol = Symbol.for("graceful-fs.previous");
+    } else {
+      gracefulQueue = "___graceful-fs.queue";
+      previousSymbol = "___graceful-fs.previous";
+    }
+    function noop2() {
+    }
+    function publishQueue(context, queue2) {
+      Object.defineProperty(context, gracefulQueue, {
+        get: function() {
+          return queue2;
         }
-        fs8.unlink(name, cb);
       });
-    };
-    var unlinkFileSync = (path11) => {
-      if (!isWindows) {
-        return fs8.unlinkSync(path11);
-      }
-      const name = path11 + ".DELETE." + crypto.randomBytes(16).toString("hex");
-      fs8.renameSync(path11, name);
-      fs8.unlinkSync(name);
-    };
-    var uint32 = (a, b, c) => a === a >>> 0 ? a : b === b >>> 0 ? b : c;
-    var cacheKeyNormalize = (path11) => stripSlash(normPath(normalize(path11))).toLowerCase();
-    var pruneCache = (cache, abs) => {
-      abs = cacheKeyNormalize(abs);
-      for (const path11 of cache.keys()) {
-        const pnorm = cacheKeyNormalize(path11);
-        if (pnorm === abs || pnorm.indexOf(abs + "/") === 0) {
-          cache.delete(path11);
+    }
+    var debug2 = noop2;
+    if (util.debuglog)
+      debug2 = util.debuglog("gfs4");
+    else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
+      debug2 = function() {
+        var m = util.format.apply(util, arguments);
+        m = "GFS4: " + m.split(/\n/).join("\nGFS4: ");
+        console.error(m);
+      };
+    if (!fs17[gracefulQueue]) {
+      queue = global[gracefulQueue] || [];
+      publishQueue(fs17, queue);
+      fs17.close = function(fs$close) {
+        function close(fd, cb) {
+          return fs$close.call(fs17, fd, function(err) {
+            if (!err) {
+              resetQueue();
+            }
+            if (typeof cb === "function")
+              cb.apply(this, arguments);
+          });
         }
-      }
-    };
-    var dropCache = (cache) => {
-      for (const key of cache.keys()) {
-        cache.delete(key);
-      }
-    };
-    var Unpack = class extends Parser {
-      constructor(opt) {
-        if (!opt) {
-          opt = {};
+        Object.defineProperty(close, previousSymbol, {
+          value: fs$close
+        });
+        return close;
+      }(fs17.close);
+      fs17.closeSync = function(fs$closeSync) {
+        function closeSync(fd) {
+          fs$closeSync.apply(fs17, arguments);
+          resetQueue();
         }
-        opt.ondone = (_) => {
-          this[ENDED] = true;
-          this[MAYBECLOSE]();
-        };
-        super(opt);
-        this[CHECKED_CWD] = false;
-        this.reservations = pathReservations();
-        this.transform = typeof opt.transform === "function" ? opt.transform : null;
-        this.writable = true;
-        this.readable = false;
-        this[PENDING] = 0;
-        this[ENDED] = false;
-        this.dirCache = opt.dirCache || /* @__PURE__ */ new Map();
-        if (typeof opt.uid === "number" || typeof opt.gid === "number") {
-          if (typeof opt.uid !== "number" || typeof opt.gid !== "number") {
-            throw new TypeError("cannot set owner without number uid and gid");
-          }
-          if (opt.preserveOwner) {
-            throw new TypeError(
-              "cannot preserve owner in archive and also set owner explicitly"
-            );
-          }
-          this.uid = opt.uid;
-          this.gid = opt.gid;
-          this.setOwner = true;
-        } else {
-          this.uid = null;
-          this.gid = null;
-          this.setOwner = false;
-        }
-        if (opt.preserveOwner === void 0 && typeof opt.uid !== "number") {
-          this.preserveOwner = process.getuid && process.getuid() === 0;
-        } else {
-          this.preserveOwner = !!opt.preserveOwner;
-        }
-        this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ? process.getuid() : null;
-        this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ? process.getgid() : null;
-        this.maxDepth = typeof opt.maxDepth === "number" ? opt.maxDepth : DEFAULT_MAX_DEPTH;
-        this.forceChown = opt.forceChown === true;
-        this.win32 = !!opt.win32 || isWindows;
-        this.newer = !!opt.newer;
-        this.keep = !!opt.keep;
-        this.noMtime = !!opt.noMtime;
-        this.preservePaths = !!opt.preservePaths;
-        this.unlink = !!opt.unlink;
-        this.cwd = normPath(path10.resolve(opt.cwd || process.cwd()));
-        this.strip = +opt.strip || 0;
-        this.processUmask = opt.noChmod ? 0 : process.umask();
-        this.umask = typeof opt.umask === "number" ? opt.umask : this.processUmask;
-        this.dmode = opt.dmode || 511 & ~this.umask;
-        this.fmode = opt.fmode || 438 & ~this.umask;
-        this.on("entry", (entry) => this[ONENTRY](entry));
-      }
-      // a bad or damaged archive is a warning for Parser, but an error
-      // when extracting.  Mark those errors as unrecoverable, because
-      // the Unpack contract cannot be met.
-      warn(code, msg, data = {}) {
-        if (code === "TAR_BAD_ARCHIVE" || code === "TAR_ABORT") {
-          data.recoverable = false;
-        }
-        return super.warn(code, msg, data);
+        Object.defineProperty(closeSync, previousSymbol, {
+          value: fs$closeSync
+        });
+        return closeSync;
+      }(fs17.closeSync);
+      if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) {
+        process.on("exit", function() {
+          debug2(fs17[gracefulQueue]);
+          require("assert").equal(fs17[gracefulQueue].length, 0);
+        });
       }
-      [MAYBECLOSE]() {
-        if (this[ENDED] && this[PENDING] === 0) {
-          this.emit("prefinish");
-          this.emit("finish");
-          this.emit("end");
+    }
+    var queue;
+    if (!global[gracefulQueue]) {
+      publishQueue(global, fs17[gracefulQueue]);
+    }
+    module2.exports = patch(clone(fs17));
+    if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs17.__patched) {
+      module2.exports = patch(fs17);
+      fs17.__patched = true;
+    }
+    function patch(fs18) {
+      polyfills(fs18);
+      fs18.gracefulify = patch;
+      fs18.createReadStream = createReadStream;
+      fs18.createWriteStream = createWriteStream;
+      var fs$readFile = fs18.readFile;
+      fs18.readFile = readFile;
+      function readFile(path16, options, cb) {
+        if (typeof options === "function")
+          cb = options, options = null;
+        return go$readFile(path16, options, cb);
+        function go$readFile(path17, options2, cb2, startTime) {
+          return fs$readFile(path17, options2, function(err) {
+            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+              enqueue([go$readFile, [path17, options2, cb2], err, startTime || Date.now(), Date.now()]);
+            else {
+              if (typeof cb2 === "function")
+                cb2.apply(this, arguments);
+            }
+          });
         }
       }
-      [CHECKPATH](entry) {
-        const p = normPath(entry.path);
-        const parts = p.split("/");
-        if (this.strip) {
-          if (parts.length < this.strip) {
-            return false;
-          }
-          if (entry.type === "Link") {
-            const linkparts = normPath(entry.linkpath).split("/");
-            if (linkparts.length >= this.strip) {
-              entry.linkpath = linkparts.slice(this.strip).join("/");
-            } else {
-              return false;
+      var fs$writeFile = fs18.writeFile;
+      fs18.writeFile = writeFile;
+      function writeFile(path16, data, options, cb) {
+        if (typeof options === "function")
+          cb = options, options = null;
+        return go$writeFile(path16, data, options, cb);
+        function go$writeFile(path17, data2, options2, cb2, startTime) {
+          return fs$writeFile(path17, data2, options2, function(err) {
+            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+              enqueue([go$writeFile, [path17, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
+            else {
+              if (typeof cb2 === "function")
+                cb2.apply(this, arguments);
             }
-          }
-          parts.splice(0, this.strip);
-          entry.path = parts.join("/");
-        }
-        if (isFinite(this.maxDepth) && parts.length > this.maxDepth) {
-          this.warn("TAR_ENTRY_ERROR", "path excessively deep", {
-            entry,
-            path: p,
-            depth: parts.length,
-            maxDepth: this.maxDepth
           });
-          return false;
-        }
-        if (!this.preservePaths) {
-          if (parts.includes("..") || isWindows && /^[a-z]:\.\.$/i.test(parts[0])) {
-            this.warn("TAR_ENTRY_ERROR", `path contains '..'`, {
-              entry,
-              path: p
-            });
-            return false;
-          }
-          const [root, stripped] = stripAbsolutePath(p);
-          if (root) {
-            entry.path = stripped;
-            this.warn("TAR_ENTRY_INFO", `stripping ${root} from absolute path`, {
-              entry,
-              path: p
-            });
-          }
         }
-        if (path10.isAbsolute(entry.path)) {
-          entry.absolute = normPath(path10.resolve(entry.path));
-        } else {
-          entry.absolute = normPath(path10.resolve(this.cwd, entry.path));
-        }
-        if (!this.preservePaths && entry.absolute.indexOf(this.cwd + "/") !== 0 && entry.absolute !== this.cwd) {
-          this.warn("TAR_ENTRY_ERROR", "path escaped extraction target", {
-            entry,
-            path: normPath(entry.path),
-            resolvedPath: entry.absolute,
-            cwd: this.cwd
+      }
+      var fs$appendFile = fs18.appendFile;
+      if (fs$appendFile)
+        fs18.appendFile = appendFile;
+      function appendFile(path16, data, options, cb) {
+        if (typeof options === "function")
+          cb = options, options = null;
+        return go$appendFile(path16, data, options, cb);
+        function go$appendFile(path17, data2, options2, cb2, startTime) {
+          return fs$appendFile(path17, data2, options2, function(err) {
+            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+              enqueue([go$appendFile, [path17, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
+            else {
+              if (typeof cb2 === "function")
+                cb2.apply(this, arguments);
+            }
           });
-          return false;
         }
-        if (entry.absolute === this.cwd && entry.type !== "Directory" && entry.type !== "GNUDumpDir") {
-          return false;
-        }
-        if (this.win32) {
-          const { root: aRoot } = path10.win32.parse(entry.absolute);
-          entry.absolute = aRoot + wc.encode(entry.absolute.slice(aRoot.length));
-          const { root: pRoot } = path10.win32.parse(entry.path);
-          entry.path = pRoot + wc.encode(entry.path.slice(pRoot.length));
-        }
-        return true;
       }
-      [ONENTRY](entry) {
-        if (!this[CHECKPATH](entry)) {
-          return entry.resume();
+      var fs$copyFile = fs18.copyFile;
+      if (fs$copyFile)
+        fs18.copyFile = copyFile;
+      function copyFile(src, dest, flags, cb) {
+        if (typeof flags === "function") {
+          cb = flags;
+          flags = 0;
         }
-        assert3.equal(typeof entry.absolute, "string");
-        switch (entry.type) {
-          case "Directory":
-          case "GNUDumpDir":
-            if (entry.mode) {
-              entry.mode = entry.mode | 448;
+        return go$copyFile(src, dest, flags, cb);
+        function go$copyFile(src2, dest2, flags2, cb2, startTime) {
+          return fs$copyFile(src2, dest2, flags2, function(err) {
+            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+              enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]);
+            else {
+              if (typeof cb2 === "function")
+                cb2.apply(this, arguments);
             }
-          case "File":
-          case "OldFile":
-          case "ContiguousFile":
-          case "Link":
-          case "SymbolicLink":
-            return this[CHECKFS](entry);
-          case "CharacterDevice":
-          case "BlockDevice":
-          case "FIFO":
-          default:
-            return this[UNSUPPORTED](entry);
+          });
         }
       }
-      [ONERROR](er, entry) {
-        if (er.name === "CwdError") {
-          this.emit("error", er);
-        } else {
-          this.warn("TAR_ENTRY_ERROR", er, { entry });
-          this[UNPEND]();
-          entry.resume();
+      var fs$readdir = fs18.readdir;
+      fs18.readdir = readdir;
+      var noReaddirOptionVersions = /^v[0-5]\./;
+      function readdir(path16, options, cb) {
+        if (typeof options === "function")
+          cb = options, options = null;
+        var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path17, options2, cb2, startTime) {
+          return fs$readdir(path17, fs$readdirCallback(
+            path17,
+            options2,
+            cb2,
+            startTime
+          ));
+        } : function go$readdir2(path17, options2, cb2, startTime) {
+          return fs$readdir(path17, options2, fs$readdirCallback(
+            path17,
+            options2,
+            cb2,
+            startTime
+          ));
+        };
+        return go$readdir(path16, options, cb);
+        function fs$readdirCallback(path17, options2, cb2, startTime) {
+          return function(err, files) {
+            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+              enqueue([
+                go$readdir,
+                [path17, options2, cb2],
+                err,
+                startTime || Date.now(),
+                Date.now()
+              ]);
+            else {
+              if (files && files.sort)
+                files.sort();
+              if (typeof cb2 === "function")
+                cb2.call(this, err, files);
+            }
+          };
         }
       }
-      [MKDIR](dir, mode, cb) {
-        mkdir4(normPath(dir), {
-          uid: this.uid,
-          gid: this.gid,
-          processUid: this.processUid,
-          processGid: this.processGid,
-          umask: this.processUmask,
-          preserve: this.preservePaths,
-          unlink: this.unlink,
-          cache: this.dirCache,
-          cwd: this.cwd,
-          mode,
-          noChmod: this.noChmod
-        }, cb);
+      if (process.version.substr(0, 4) === "v0.8") {
+        var legStreams = legacy(fs18);
+        ReadStream2 = legStreams.ReadStream;
+        WriteStream2 = legStreams.WriteStream;
       }
-      [DOCHOWN](entry) {
-        return this.forceChown || this.preserveOwner && (typeof entry.uid === "number" && entry.uid !== this.processUid || typeof entry.gid === "number" && entry.gid !== this.processGid) || (typeof this.uid === "number" && this.uid !== this.processUid || typeof this.gid === "number" && this.gid !== this.processGid);
+      var fs$ReadStream = fs18.ReadStream;
+      if (fs$ReadStream) {
+        ReadStream2.prototype = Object.create(fs$ReadStream.prototype);
+        ReadStream2.prototype.open = ReadStream$open;
       }
-      [UID](entry) {
-        return uint32(this.uid, entry.uid, this.processUid);
+      var fs$WriteStream = fs18.WriteStream;
+      if (fs$WriteStream) {
+        WriteStream2.prototype = Object.create(fs$WriteStream.prototype);
+        WriteStream2.prototype.open = WriteStream$open;
       }
-      [GID](entry) {
-        return uint32(this.gid, entry.gid, this.processGid);
+      Object.defineProperty(fs18, "ReadStream", {
+        get: function() {
+          return ReadStream2;
+        },
+        set: function(val) {
+          ReadStream2 = val;
+        },
+        enumerable: true,
+        configurable: true
+      });
+      Object.defineProperty(fs18, "WriteStream", {
+        get: function() {
+          return WriteStream2;
+        },
+        set: function(val) {
+          WriteStream2 = val;
+        },
+        enumerable: true,
+        configurable: true
+      });
+      var FileReadStream = ReadStream2;
+      Object.defineProperty(fs18, "FileReadStream", {
+        get: function() {
+          return FileReadStream;
+        },
+        set: function(val) {
+          FileReadStream = val;
+        },
+        enumerable: true,
+        configurable: true
+      });
+      var FileWriteStream = WriteStream2;
+      Object.defineProperty(fs18, "FileWriteStream", {
+        get: function() {
+          return FileWriteStream;
+        },
+        set: function(val) {
+          FileWriteStream = val;
+        },
+        enumerable: true,
+        configurable: true
+      });
+      function ReadStream2(path16, options) {
+        if (this instanceof ReadStream2)
+          return fs$ReadStream.apply(this, arguments), this;
+        else
+          return ReadStream2.apply(Object.create(ReadStream2.prototype), arguments);
       }
-      [FILE](entry, fullyDone) {
-        const mode = entry.mode & 4095 || this.fmode;
-        const stream = new fsm.WriteStream(entry.absolute, {
-          flags: getFlag(entry.size),
-          mode,
-          autoClose: false
-        });
-        stream.on("error", (er) => {
-          if (stream.fd) {
-            fs8.close(stream.fd, () => {
-            });
-          }
-          stream.write = () => true;
-          this[ONERROR](er, entry);
-          fullyDone();
-        });
-        let actions = 1;
-        const done = (er) => {
-          if (er) {
-            if (stream.fd) {
-              fs8.close(stream.fd, () => {
-              });
-            }
-            this[ONERROR](er, entry);
-            fullyDone();
-            return;
-          }
-          if (--actions === 0) {
-            fs8.close(stream.fd, (er2) => {
-              if (er2) {
-                this[ONERROR](er2, entry);
-              } else {
-                this[UNPEND]();
-              }
-              fullyDone();
-            });
-          }
-        };
-        stream.on("finish", (_) => {
-          const abs = entry.absolute;
-          const fd = stream.fd;
-          if (entry.mtime && !this.noMtime) {
-            actions++;
-            const atime = entry.atime || /* @__PURE__ */ new Date();
-            const mtime = entry.mtime;
-            fs8.futimes(fd, atime, mtime, (er) => er ? fs8.utimes(abs, atime, mtime, (er2) => done(er2 && er)) : done());
-          }
-          if (this[DOCHOWN](entry)) {
-            actions++;
-            const uid = this[UID](entry);
-            const gid = this[GID](entry);
-            fs8.fchown(fd, uid, gid, (er) => er ? fs8.chown(abs, uid, gid, (er2) => done(er2 && er)) : done());
+      function ReadStream$open() {
+        var that = this;
+        open(that.path, that.flags, that.mode, function(err, fd) {
+          if (err) {
+            if (that.autoClose)
+              that.destroy();
+            that.emit("error", err);
+          } else {
+            that.fd = fd;
+            that.emit("open", fd);
+            that.read();
           }
-          done();
         });
-        const tx = this.transform ? this.transform(entry) || entry : entry;
-        if (tx !== entry) {
-          tx.on("error", (er) => {
-            this[ONERROR](er, entry);
-            fullyDone();
-          });
-          entry.pipe(tx);
-        }
-        tx.pipe(stream);
       }
-      [DIRECTORY](entry, fullyDone) {
-        const mode = entry.mode & 4095 || this.dmode;
-        this[MKDIR](entry.absolute, mode, (er) => {
-          if (er) {
-            this[ONERROR](er, entry);
-            fullyDone();
-            return;
-          }
-          let actions = 1;
-          const done = (_) => {
-            if (--actions === 0) {
-              fullyDone();
-              this[UNPEND]();
-              entry.resume();
-            }
-          };
-          if (entry.mtime && !this.noMtime) {
-            actions++;
-            fs8.utimes(entry.absolute, entry.atime || /* @__PURE__ */ new Date(), entry.mtime, done);
-          }
-          if (this[DOCHOWN](entry)) {
-            actions++;
-            fs8.chown(entry.absolute, this[UID](entry), this[GID](entry), done);
+      function WriteStream2(path16, options) {
+        if (this instanceof WriteStream2)
+          return fs$WriteStream.apply(this, arguments), this;
+        else
+          return WriteStream2.apply(Object.create(WriteStream2.prototype), arguments);
+      }
+      function WriteStream$open() {
+        var that = this;
+        open(that.path, that.flags, that.mode, function(err, fd) {
+          if (err) {
+            that.destroy();
+            that.emit("error", err);
+          } else {
+            that.fd = fd;
+            that.emit("open", fd);
           }
-          done();
         });
       }
-      [UNSUPPORTED](entry) {
-        entry.unsupported = true;
-        this.warn(
-          "TAR_ENTRY_UNSUPPORTED",
-          `unsupported entry type: ${entry.type}`,
-          { entry }
-        );
-        entry.resume();
-      }
-      [SYMLINK](entry, done) {
-        this[LINK](entry, entry.linkpath, "symlink", done);
-      }
-      [HARDLINK](entry, done) {
-        const linkpath = normPath(path10.resolve(this.cwd, entry.linkpath));
-        this[LINK](entry, linkpath, "link", done);
-      }
-      [PEND]() {
-        this[PENDING]++;
-      }
-      [UNPEND]() {
-        this[PENDING]--;
-        this[MAYBECLOSE]();
-      }
-      [SKIP](entry) {
-        this[UNPEND]();
-        entry.resume();
-      }
-      // Check if we can reuse an existing filesystem entry safely and
-      // overwrite it, rather than unlinking and recreating
-      // Windows doesn't report a useful nlink, so we just never reuse entries
-      [ISREUSABLE](entry, st) {
-        return entry.type === "File" && !this.unlink && st.isFile() && st.nlink <= 1 && !isWindows;
-      }
-      // check if a thing is there, and if so, try to clobber it
-      [CHECKFS](entry) {
-        this[PEND]();
-        const paths = [entry.path];
-        if (entry.linkpath) {
-          paths.push(entry.linkpath);
-        }
-        this.reservations.reserve(paths, (done) => this[CHECKFS2](entry, done));
+      function createReadStream(path16, options) {
+        return new fs18.ReadStream(path16, options);
       }
-      [PRUNECACHE](entry) {
-        if (entry.type === "SymbolicLink") {
-          dropCache(this.dirCache);
-        } else if (entry.type !== "Directory") {
-          pruneCache(this.dirCache, entry.absolute);
-        }
+      function createWriteStream(path16, options) {
+        return new fs18.WriteStream(path16, options);
       }
-      [CHECKFS2](entry, fullyDone) {
-        this[PRUNECACHE](entry);
-        const done = (er) => {
-          this[PRUNECACHE](entry);
-          fullyDone(er);
-        };
-        const checkCwd = () => {
-          this[MKDIR](this.cwd, this.dmode, (er) => {
-            if (er) {
-              this[ONERROR](er, entry);
-              done();
-              return;
-            }
-            this[CHECKED_CWD] = true;
-            start();
-          });
-        };
-        const start = () => {
-          if (entry.absolute !== this.cwd) {
-            const parent = normPath(path10.dirname(entry.absolute));
-            if (parent !== this.cwd) {
-              return this[MKDIR](parent, this.dmode, (er) => {
-                if (er) {
-                  this[ONERROR](er, entry);
-                  done();
-                  return;
-                }
-                afterMakeParent();
-              });
-            }
-          }
-          afterMakeParent();
-        };
-        const afterMakeParent = () => {
-          fs8.lstat(entry.absolute, (lstatEr, st) => {
-            if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {
-              this[SKIP](entry);
-              done();
-              return;
-            }
-            if (lstatEr || this[ISREUSABLE](entry, st)) {
-              return this[MAKEFS](null, entry, done);
-            }
-            if (st.isDirectory()) {
-              if (entry.type === "Directory") {
-                const needChmod = !this.noChmod && entry.mode && (st.mode & 4095) !== entry.mode;
-                const afterChmod = (er) => this[MAKEFS](er, entry, done);
-                if (!needChmod) {
-                  return afterChmod();
-                }
-                return fs8.chmod(entry.absolute, entry.mode, afterChmod);
-              }
-              if (entry.absolute !== this.cwd) {
-                return fs8.rmdir(entry.absolute, (er) => this[MAKEFS](er, entry, done));
-              }
-            }
-            if (entry.absolute === this.cwd) {
-              return this[MAKEFS](null, entry, done);
+      var fs$open = fs18.open;
+      fs18.open = open;
+      function open(path16, flags, mode, cb) {
+        if (typeof mode === "function")
+          cb = mode, mode = null;
+        return go$open(path16, flags, mode, cb);
+        function go$open(path17, flags2, mode2, cb2, startTime) {
+          return fs$open(path17, flags2, mode2, function(err, fd) {
+            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
+              enqueue([go$open, [path17, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]);
+            else {
+              if (typeof cb2 === "function")
+                cb2.apply(this, arguments);
             }
-            unlinkFile(entry.absolute, (er) => this[MAKEFS](er, entry, done));
           });
-        };
-        if (this[CHECKED_CWD]) {
-          start();
-        } else {
-          checkCwd();
         }
       }
-      [MAKEFS](er, entry, done) {
-        if (er) {
-          this[ONERROR](er, entry);
-          done();
-          return;
-        }
-        switch (entry.type) {
-          case "File":
-          case "OldFile":
-          case "ContiguousFile":
-            return this[FILE](entry, done);
-          case "Link":
-            return this[HARDLINK](entry, done);
-          case "SymbolicLink":
-            return this[SYMLINK](entry, done);
-          case "Directory":
-          case "GNUDumpDir":
-            return this[DIRECTORY](entry, done);
+      return fs18;
+    }
+    function enqueue(elem) {
+      debug2("ENQUEUE", elem[0].name, elem[1]);
+      fs17[gracefulQueue].push(elem);
+      retry();
+    }
+    var retryTimer;
+    function resetQueue() {
+      var now = Date.now();
+      for (var i = 0; i < fs17[gracefulQueue].length; ++i) {
+        if (fs17[gracefulQueue][i].length > 2) {
+          fs17[gracefulQueue][i][3] = now;
+          fs17[gracefulQueue][i][4] = now;
         }
       }
-      [LINK](entry, linkpath, link, done) {
-        fs8[link](linkpath, entry.absolute, (er) => {
-          if (er) {
-            this[ONERROR](er, entry);
-          } else {
-            this[UNPEND]();
-            entry.resume();
-          }
-          done();
-        });
+      retry();
+    }
+    function retry() {
+      clearTimeout(retryTimer);
+      retryTimer = void 0;
+      if (fs17[gracefulQueue].length === 0)
+        return;
+      var elem = fs17[gracefulQueue].shift();
+      var fn2 = elem[0];
+      var args = elem[1];
+      var err = elem[2];
+      var startTime = elem[3];
+      var lastTime = elem[4];
+      if (startTime === void 0) {
+        debug2("RETRY", fn2.name, args);
+        fn2.apply(null, args);
+      } else if (Date.now() - startTime >= 6e4) {
+        debug2("TIMEOUT", fn2.name, args);
+        var cb = args.pop();
+        if (typeof cb === "function")
+          cb.call(null, err);
+      } else {
+        var sinceAttempt = Date.now() - lastTime;
+        var sinceStart = Math.max(lastTime - startTime, 1);
+        var desiredDelay = Math.min(sinceStart * 1.2, 100);
+        if (sinceAttempt >= desiredDelay) {
+          debug2("RETRY", fn2.name, args);
+          fn2.apply(null, args.concat([startTime]));
+        } else {
+          fs17[gracefulQueue].push(elem);
+        }
       }
-    };
-    var callSync = (fn2) => {
-      try {
-        return [null, fn2()];
-      } catch (er) {
-        return [er, null];
+      if (retryTimer === void 0) {
+        retryTimer = setTimeout(retry, 0);
       }
-    };
-    var UnpackSync = class extends Unpack {
-      [MAKEFS](er, entry) {
-        return super[MAKEFS](er, entry, () => {
-        });
-      }
-      [CHECKFS](entry) {
-        this[PRUNECACHE](entry);
-        if (!this[CHECKED_CWD]) {
-          const er2 = this[MKDIR](this.cwd, this.dmode);
-          if (er2) {
-            return this[ONERROR](er2, entry);
-          }
-          this[CHECKED_CWD] = true;
-        }
-        if (entry.absolute !== this.cwd) {
-          const parent = normPath(path10.dirname(entry.absolute));
-          if (parent !== this.cwd) {
-            const mkParent = this[MKDIR](parent, this.dmode);
-            if (mkParent) {
-              return this[ONERROR](mkParent, entry);
-            }
-          }
-        }
-        const [lstatEr, st] = callSync(() => fs8.lstatSync(entry.absolute));
-        if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {
-          return this[SKIP](entry);
-        }
-        if (lstatEr || this[ISREUSABLE](entry, st)) {
-          return this[MAKEFS](null, entry);
-        }
-        if (st.isDirectory()) {
-          if (entry.type === "Directory") {
-            const needChmod = !this.noChmod && entry.mode && (st.mode & 4095) !== entry.mode;
-            const [er3] = needChmod ? callSync(() => {
-              fs8.chmodSync(entry.absolute, entry.mode);
-            }) : [];
-            return this[MAKEFS](er3, entry);
-          }
-          const [er2] = callSync(() => fs8.rmdirSync(entry.absolute));
-          this[MAKEFS](er2, entry);
-        }
-        const [er] = entry.absolute === this.cwd ? [] : callSync(() => unlinkFileSync(entry.absolute));
-        this[MAKEFS](er, entry);
-      }
-      [FILE](entry, done) {
-        const mode = entry.mode & 4095 || this.fmode;
-        const oner = (er) => {
-          let closeError;
-          try {
-            fs8.closeSync(fd);
-          } catch (e) {
-            closeError = e;
-          }
-          if (er || closeError) {
-            this[ONERROR](er || closeError, entry);
-          }
-          done();
-        };
-        let fd;
-        try {
-          fd = fs8.openSync(entry.absolute, getFlag(entry.size), mode);
-        } catch (er) {
-          return oner(er);
-        }
-        const tx = this.transform ? this.transform(entry) || entry : entry;
-        if (tx !== entry) {
-          tx.on("error", (er) => this[ONERROR](er, entry));
-          entry.pipe(tx);
-        }
-        tx.on("data", (chunk) => {
-          try {
-            fs8.writeSync(fd, chunk, 0, chunk.length);
-          } catch (er) {
-            oner(er);
-          }
-        });
-        tx.on("end", (_) => {
-          let er = null;
-          if (entry.mtime && !this.noMtime) {
-            const atime = entry.atime || /* @__PURE__ */ new Date();
-            const mtime = entry.mtime;
-            try {
-              fs8.futimesSync(fd, atime, mtime);
-            } catch (futimeser) {
-              try {
-                fs8.utimesSync(entry.absolute, atime, mtime);
-              } catch (utimeser) {
-                er = futimeser;
-              }
-            }
-          }
-          if (this[DOCHOWN](entry)) {
-            const uid = this[UID](entry);
-            const gid = this[GID](entry);
-            try {
-              fs8.fchownSync(fd, uid, gid);
-            } catch (fchowner) {
-              try {
-                fs8.chownSync(entry.absolute, uid, gid);
-              } catch (chowner) {
-                er = er || fchowner;
-              }
-            }
-          }
-          oner(er);
-        });
-      }
-      [DIRECTORY](entry, done) {
-        const mode = entry.mode & 4095 || this.dmode;
-        const er = this[MKDIR](entry.absolute, mode);
-        if (er) {
-          this[ONERROR](er, entry);
-          done();
-          return;
-        }
-        if (entry.mtime && !this.noMtime) {
-          try {
-            fs8.utimesSync(entry.absolute, entry.atime || /* @__PURE__ */ new Date(), entry.mtime);
-          } catch (er2) {
-          }
-        }
-        if (this[DOCHOWN](entry)) {
-          try {
-            fs8.chownSync(entry.absolute, this[UID](entry), this[GID](entry));
-          } catch (er2) {
-          }
-        }
-        done();
-        entry.resume();
-      }
-      [MKDIR](dir, mode) {
-        try {
-          return mkdir4.sync(normPath(dir), {
-            uid: this.uid,
-            gid: this.gid,
-            processUid: this.processUid,
-            processGid: this.processGid,
-            umask: this.processUmask,
-            preserve: this.preservePaths,
-            unlink: this.unlink,
-            cache: this.dirCache,
-            cwd: this.cwd,
-            mode
-          });
-        } catch (er) {
-          return er;
-        }
-      }
-      [LINK](entry, linkpath, link, done) {
-        try {
-          fs8[link + "Sync"](linkpath, entry.absolute);
-          done();
-          entry.resume();
-        } catch (er) {
-          return this[ONERROR](er, entry);
-        }
-      }
-    };
-    Unpack.Sync = UnpackSync;
-    module2.exports = Unpack;
+    }
   }
 });
 
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/extract.js
-var require_extract = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/lib/extract.js"(exports2, module2) {
+// .yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js
+var require_cmd_shim = __commonJS({
+  ".yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js"(exports2, module2) {
     "use strict";
-    var hlo = require_high_level_opt();
-    var Unpack = require_unpack();
-    var fs8 = require("fs");
-    var fsm = require_fs_minipass();
-    var path10 = require("path");
-    var stripSlash = require_strip_trailing_slashes();
-    module2.exports = (opt_, files, cb) => {
-      if (typeof opt_ === "function") {
-        cb = opt_, files = null, opt_ = {};
-      } else if (Array.isArray(opt_)) {
-        files = opt_, opt_ = {};
-      }
-      if (typeof files === "function") {
-        cb = files, files = null;
-      }
-      if (!files) {
-        files = [];
-      } else {
-        files = Array.from(files);
-      }
-      const opt = hlo(opt_);
-      if (opt.sync && typeof cb === "function") {
-        throw new TypeError("callback not supported for sync tar functions");
-      }
-      if (!opt.file && typeof cb === "function") {
-        throw new TypeError("callback only supported with file option");
-      }
-      if (files.length) {
-        filesFilter(opt, files);
-      }
-      return opt.file && opt.sync ? extractFileSync(opt) : opt.file ? extractFile(opt, cb) : opt.sync ? extractSync(opt) : extract(opt);
+    cmdShim2.ifExists = cmdShimIfExists;
+    var util_1 = require("util");
+    var path16 = require("path");
+    var isWindows4 = require_is_windows();
+    var CMD_EXTENSION = require_cmd_extension();
+    var shebangExpr = /^#!\s*(?:\/usr\/bin\/env(?:\s+-S\s*)?)?\s*([^ \t]+)(.*)$/;
+    var DEFAULT_OPTIONS = {
+      // Create PowerShell file by default if the option hasn't been specified
+      createPwshFile: true,
+      createCmdFile: isWindows4(),
+      fs: require_graceful_fs()
     };
-    var filesFilter = (opt, files) => {
-      const map = new Map(files.map((f) => [stripSlash(f), true]));
-      const filter = opt.filter;
-      const mapHas = (file, r) => {
-        const root = r || path10.parse(file).root || ".";
-        const ret = file === root ? false : map.has(file) ? map.get(file) : mapHas(path10.dirname(file), root);
-        map.set(file, ret);
-        return ret;
+    var extensionToProgramMap = /* @__PURE__ */ new Map([
+      [".js", "node"],
+      [".cjs", "node"],
+      [".mjs", "node"],
+      [".cmd", "cmd"],
+      [".bat", "cmd"],
+      [".ps1", "pwsh"],
+      [".sh", "sh"]
+    ]);
+    function ingestOptions(opts) {
+      const opts_ = { ...DEFAULT_OPTIONS, ...opts };
+      const fs17 = opts_.fs;
+      opts_.fs_ = {
+        chmod: fs17.chmod ? (0, util_1.promisify)(fs17.chmod) : async () => {
+        },
+        mkdir: (0, util_1.promisify)(fs17.mkdir),
+        readFile: (0, util_1.promisify)(fs17.readFile),
+        stat: (0, util_1.promisify)(fs17.stat),
+        unlink: (0, util_1.promisify)(fs17.unlink),
+        writeFile: (0, util_1.promisify)(fs17.writeFile)
       };
-      opt.filter = filter ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file)) : (file) => mapHas(stripSlash(file));
-    };
-    var extractFileSync = (opt) => {
-      const u = new Unpack.Sync(opt);
-      const file = opt.file;
-      const stat = fs8.statSync(file);
-      const readSize = opt.maxReadSize || 16 * 1024 * 1024;
-      const stream = new fsm.ReadStreamSync(file, {
-        readSize,
-        size: stat.size
+      return opts_;
+    }
+    async function cmdShim2(src, to, opts) {
+      const opts_ = ingestOptions(opts);
+      await cmdShim_(src, to, opts_);
+    }
+    function cmdShimIfExists(src, to, opts) {
+      return cmdShim2(src, to, opts).catch(() => {
       });
-      stream.pipe(u);
-    };
-    var extractFile = (opt, cb) => {
-      const u = new Unpack(opt);
-      const readSize = opt.maxReadSize || 16 * 1024 * 1024;
-      const file = opt.file;
-      const p = new Promise((resolve, reject) => {
-        u.on("error", reject);
-        u.on("close", resolve);
-        fs8.stat(file, (er, stat) => {
-          if (er) {
-            reject(er);
-          } else {
-            const stream = new fsm.ReadStream(file, {
-              readSize,
-              size: stat.size
-            });
-            stream.on("error", reject);
-            stream.pipe(u);
-          }
-        });
+    }
+    function rm(path17, opts) {
+      return opts.fs_.unlink(path17).catch(() => {
       });
-      return cb ? p.then(cb, cb) : p;
-    };
-    var extractSync = (opt) => new Unpack.Sync(opt);
-    var extract = (opt) => new Unpack(opt);
-  }
-});
-
-// .yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/index.js
-var require_tar = __commonJS({
-  ".yarn/cache/tar-npm-6.2.1-237800bb20-a5eca3eb50.zip/node_modules/tar/index.js"(exports2) {
-    "use strict";
-    exports2.c = exports2.create = require_create();
-    exports2.r = exports2.replace = require_replace();
-    exports2.t = exports2.list = require_list();
-    exports2.u = exports2.update = require_update();
-    exports2.x = exports2.extract = require_extract();
-    exports2.Pack = require_pack();
-    exports2.Unpack = require_unpack();
-    exports2.Parse = require_parse2();
-    exports2.ReadEntry = require_read_entry();
-    exports2.WriteEntry = require_write_entry();
-    exports2.Header = require_header();
-    exports2.Pax = require_pax();
-    exports2.types = require_types();
-  }
-});
-
-// .yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js
-var require_v8_compile_cache = __commonJS({
-  ".yarn/cache/v8-compile-cache-npm-2.4.0-5979f8e405-3878511925.zip/node_modules/v8-compile-cache/v8-compile-cache.js"(exports2, module2) {
-    "use strict";
-    var Module2 = require("module");
-    var crypto = require("crypto");
-    var fs8 = require("fs");
-    var path10 = require("path");
-    var vm = require("vm");
-    var os3 = require("os");
-    var hasOwnProperty = Object.prototype.hasOwnProperty;
-    var FileSystemBlobStore = class {
-      constructor(directory, prefix) {
-        const name = prefix ? slashEscape(prefix + ".") : "";
-        this._blobFilename = path10.join(directory, name + "BLOB");
-        this._mapFilename = path10.join(directory, name + "MAP");
-        this._lockFilename = path10.join(directory, name + "LOCK");
-        this._directory = directory;
-        this._load();
-      }
-      has(key, invalidationKey) {
-        if (hasOwnProperty.call(this._memoryBlobs, key)) {
-          return this._invalidationKeys[key] === invalidationKey;
-        } else if (hasOwnProperty.call(this._storedMap, key)) {
-          return this._storedMap[key][0] === invalidationKey;
-        }
-        return false;
-      }
-      get(key, invalidationKey) {
-        if (hasOwnProperty.call(this._memoryBlobs, key)) {
-          if (this._invalidationKeys[key] === invalidationKey) {
-            return this._memoryBlobs[key];
-          }
-        } else if (hasOwnProperty.call(this._storedMap, key)) {
-          const mapping = this._storedMap[key];
-          if (mapping[0] === invalidationKey) {
-            return this._storedBlob.slice(mapping[1], mapping[2]);
-          }
-        }
-      }
-      set(key, invalidationKey, buffer) {
-        this._invalidationKeys[key] = invalidationKey;
-        this._memoryBlobs[key] = buffer;
-        this._dirty = true;
-      }
-      delete(key) {
-        if (hasOwnProperty.call(this._memoryBlobs, key)) {
-          this._dirty = true;
-          delete this._memoryBlobs[key];
-        }
-        if (hasOwnProperty.call(this._invalidationKeys, key)) {
-          this._dirty = true;
-          delete this._invalidationKeys[key];
-        }
-        if (hasOwnProperty.call(this._storedMap, key)) {
-          this._dirty = true;
-          delete this._storedMap[key];
-        }
+    }
+    async function cmdShim_(src, to, opts) {
+      const srcRuntimeInfo = await searchScriptRuntime(src, opts);
+      await writeShimsPreCommon(to, opts);
+      return writeAllShims(src, to, srcRuntimeInfo, opts);
+    }
+    function writeShimsPreCommon(target, opts) {
+      return opts.fs_.mkdir(path16.dirname(target), { recursive: true });
+    }
+    function writeAllShims(src, to, srcRuntimeInfo, opts) {
+      const opts_ = ingestOptions(opts);
+      const generatorAndExts = [{ generator: generateShShim, extension: "" }];
+      if (opts_.createCmdFile) {
+        generatorAndExts.push({ generator: generateCmdShim, extension: CMD_EXTENSION });
       }
-      isDirty() {
-        return this._dirty;
+      if (opts_.createPwshFile) {
+        generatorAndExts.push({ generator: generatePwshShim, extension: ".ps1" });
       }
-      save() {
-        const dump = this._getDump();
-        const blobToStore = Buffer.concat(dump[0]);
-        const mapToStore = JSON.stringify(dump[1]);
-        try {
-          mkdirpSync(this._directory);
-          fs8.writeFileSync(this._lockFilename, "LOCK", { flag: "wx" });
-        } catch (error) {
-          return false;
+      return Promise.all(generatorAndExts.map((generatorAndExt) => writeShim(src, to + generatorAndExt.extension, srcRuntimeInfo, generatorAndExt.generator, opts_)));
+    }
+    function writeShimPre(target, opts) {
+      return rm(target, opts);
+    }
+    function writeShimPost(target, opts) {
+      return chmodShim(target, opts);
+    }
+    async function searchScriptRuntime(target, opts) {
+      try {
+        const data = await opts.fs_.readFile(target, "utf8");
+        const firstLine = data.trim().split(/\r*\n/)[0];
+        const shebang = firstLine.match(shebangExpr);
+        if (!shebang) {
+          const targetExtension = path16.extname(target).toLowerCase();
+          return {
+            // undefined if extension is unknown but it's converted to null.
+            program: extensionToProgramMap.get(targetExtension) || null,
+            additionalArgs: ""
+          };
         }
-        try {
-          fs8.writeFileSync(this._blobFilename, blobToStore);
-          fs8.writeFileSync(this._mapFilename, mapToStore);
-        } finally {
-          fs8.unlinkSync(this._lockFilename);
+        return {
+          program: shebang[1],
+          additionalArgs: shebang[2]
+        };
+      } catch (err) {
+        if (!isWindows4() || err.code !== "ENOENT")
+          throw err;
+        if (await opts.fs_.stat(`${target}${getExeExtension()}`)) {
+          return {
+            program: null,
+            additionalArgs: ""
+          };
         }
-        return true;
+        throw err;
       }
-      _load() {
-        try {
-          this._storedBlob = fs8.readFileSync(this._blobFilename);
-          this._storedMap = JSON.parse(fs8.readFileSync(this._mapFilename));
-        } catch (e) {
-          this._storedBlob = Buffer.alloc(0);
-          this._storedMap = {};
-        }
-        this._dirty = false;
-        this._memoryBlobs = {};
-        this._invalidationKeys = {};
+    }
+    function getExeExtension() {
+      let cmdExtension;
+      if (process.env.PATHEXT) {
+        cmdExtension = process.env.PATHEXT.split(path16.delimiter).find((ext) => ext.toLowerCase() === ".exe");
       }
-      _getDump() {
-        const buffers = [];
-        const newMap = {};
-        let offset = 0;
-        function push(key, invalidationKey, buffer) {
-          buffers.push(buffer);
-          newMap[key] = [invalidationKey, offset, offset + buffer.length];
-          offset += buffer.length;
-        }
-        for (const key of Object.keys(this._memoryBlobs)) {
-          const buffer = this._memoryBlobs[key];
-          const invalidationKey = this._invalidationKeys[key];
-          push(key, invalidationKey, buffer);
-        }
-        for (const key of Object.keys(this._storedMap)) {
-          if (hasOwnProperty.call(newMap, key)) continue;
-          const mapping = this._storedMap[key];
-          const buffer = this._storedBlob.slice(mapping[1], mapping[2]);
-          push(key, mapping[0], buffer);
-        }
-        return [buffers, newMap];
+      return cmdExtension || ".exe";
+    }
+    async function writeShim(src, to, srcRuntimeInfo, generateShimScript, opts) {
+      const defaultArgs = opts.preserveSymlinks ? "--preserve-symlinks" : "";
+      const args = [srcRuntimeInfo.additionalArgs, defaultArgs].filter((arg) => arg).join(" ");
+      opts = Object.assign({}, opts, {
+        prog: srcRuntimeInfo.program,
+        args
+      });
+      await writeShimPre(to, opts);
+      await opts.fs_.writeFile(to, generateShimScript(src, to, opts), "utf8");
+      return writeShimPost(to, opts);
+    }
+    function generateCmdShim(src, to, opts) {
+      const shTarget = path16.relative(path16.dirname(to), src);
+      let target = shTarget.split("/").join("\\");
+      const quotedPathToTarget = path16.isAbsolute(target) ? `"${target}"` : `"%~dp0\\${target}"`;
+      let longProg;
+      let prog = opts.prog;
+      let args = opts.args || "";
+      const nodePath = normalizePathEnvVar(opts.nodePath).win32;
+      const prependToPath = normalizePathEnvVar(opts.prependToPath).win32;
+      if (!prog) {
+        prog = quotedPathToTarget;
+        args = "";
+        target = "";
+      } else if (prog === "node" && opts.nodeExecPath) {
+        prog = `"${opts.nodeExecPath}"`;
+        target = quotedPathToTarget;
+      } else {
+        longProg = `"%~dp0\\${prog}.exe"`;
+        target = quotedPathToTarget;
       }
-    };
-    var NativeCompileCache = class {
-      constructor() {
-        this._cacheStore = null;
-        this._previousModuleCompile = null;
+      let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
+      let cmd = "@SETLOCAL\r\n";
+      if (prependToPath) {
+        cmd += `@SET "PATH=${prependToPath}:%PATH%"\r
+`;
       }
-      setCacheStore(cacheStore) {
-        this._cacheStore = cacheStore;
+      if (nodePath) {
+        cmd += `@IF NOT DEFINED NODE_PATH (\r
+  @SET "NODE_PATH=${nodePath}"\r
+) ELSE (\r
+  @SET "NODE_PATH=${nodePath};%NODE_PATH%"\r
+)\r
+`;
       }
-      install() {
-        const self2 = this;
-        const hasRequireResolvePaths = typeof require.resolve.paths === "function";
-        this._previousModuleCompile = Module2.prototype._compile;
-        Module2.prototype._compile = function(content, filename) {
-          const mod = this;
-          function require2(id) {
-            return mod.require(id);
-          }
-          function resolve(request, options) {
-            return Module2._resolveFilename(request, mod, false, options);
-          }
-          require2.resolve = resolve;
-          if (hasRequireResolvePaths) {
-            resolve.paths = function paths(request) {
-              return Module2._resolveLookupPaths(request, mod, true);
-            };
-          }
-          require2.main = process.mainModule;
-          require2.extensions = Module2._extensions;
-          require2.cache = Module2._cache;
-          const dirname = path10.dirname(filename);
-          const compiledWrapper = self2._moduleCompile(filename, content);
-          const args = [mod.exports, require2, mod, filename, dirname, process, global, Buffer];
-          return compiledWrapper.apply(mod.exports, args);
-        };
+      if (longProg) {
+        cmd += `@IF EXIST ${longProg} (\r
+  ${longProg} ${args} ${target} ${progArgs}%*\r
+) ELSE (\r
+  @SET PATHEXT=%PATHEXT:;.JS;=;%\r
+  ${prog} ${args} ${target} ${progArgs}%*\r
+)\r
+`;
+      } else {
+        cmd += `@${prog} ${args} ${target} ${progArgs}%*\r
+`;
       }
-      uninstall() {
-        Module2.prototype._compile = this._previousModuleCompile;
+      return cmd;
+    }
+    function generateShShim(src, to, opts) {
+      let shTarget = path16.relative(path16.dirname(to), src);
+      let shProg = opts.prog && opts.prog.split("\\").join("/");
+      let shLongProg;
+      shTarget = shTarget.split("\\").join("/");
+      const quotedPathToTarget = path16.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`;
+      let args = opts.args || "";
+      const shNodePath = normalizePathEnvVar(opts.nodePath).posix;
+      if (!shProg) {
+        shProg = quotedPathToTarget;
+        args = "";
+        shTarget = "";
+      } else if (opts.prog === "node" && opts.nodeExecPath) {
+        shProg = `"${opts.nodeExecPath}"`;
+        shTarget = quotedPathToTarget;
+      } else {
+        shLongProg = `"$basedir/${opts.prog}"`;
+        shTarget = quotedPathToTarget;
       }
-      _moduleCompile(filename, content) {
-        var contLen = content.length;
-        if (contLen >= 2) {
-          if (content.charCodeAt(0) === 35 && content.charCodeAt(1) === 33) {
-            if (contLen === 2) {
-              content = "";
-            } else {
-              var i = 2;
-              for (; i < contLen; ++i) {
-                var code = content.charCodeAt(i);
-                if (code === 10 || code === 13) break;
-              }
-              if (i === contLen) {
-                content = "";
-              } else {
-                content = content.slice(i);
-              }
-            }
-          }
-        }
-        var wrapper = Module2.wrap(content);
-        var invalidationKey = crypto.createHash("sha1").update(content, "utf8").digest("hex");
-        var buffer = this._cacheStore.get(filename, invalidationKey);
-        var script = new vm.Script(wrapper, {
-          filename,
-          lineOffset: 0,
-          displayErrors: true,
-          cachedData: buffer,
-          produceCachedData: true
-        });
-        if (script.cachedDataProduced) {
-          this._cacheStore.set(filename, invalidationKey, script.cachedData);
-        } else if (script.cachedDataRejected) {
-          this._cacheStore.delete(filename);
-        }
-        var compiledWrapper = script.runInThisContext({
-          filename,
-          lineOffset: 0,
-          columnOffset: 0,
-          displayErrors: true
-        });
-        return compiledWrapper;
+      let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
+      let sh = `#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
+
+case \`uname\` in
+    *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
+esac
+
+`;
+      if (opts.prependToPath) {
+        sh += `export PATH="${opts.prependToPath}:$PATH"
+`;
       }
-    };
-    function mkdirpSync(p_) {
-      _mkdirpSync(path10.resolve(p_), 511);
-    }
-    function _mkdirpSync(p, mode) {
-      try {
-        fs8.mkdirSync(p, mode);
-      } catch (err0) {
-        if (err0.code === "ENOENT") {
-          _mkdirpSync(path10.dirname(p));
-          _mkdirpSync(p);
-        } else {
-          try {
-            const stat = fs8.statSync(p);
-            if (!stat.isDirectory()) {
-              throw err0;
-            }
-          } catch (err1) {
-            throw err0;
-          }
-        }
+      if (shNodePath) {
+        sh += `if [ -z "$NODE_PATH" ]; then
+  export NODE_PATH="${shNodePath}"
+else
+  export NODE_PATH="${shNodePath}:$NODE_PATH"
+fi
+`;
       }
-    }
-    function slashEscape(str) {
-      const ESCAPE_LOOKUP = {
-        "\\": "zB",
-        ":": "zC",
-        "/": "zS",
-        "\0": "z0",
-        "z": "zZ"
-      };
-      const ESCAPE_REGEX = /[\\:/\x00z]/g;
-      return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);
-    }
-    function supportsCachedData() {
-      const script = new vm.Script('""', { produceCachedData: true });
-      return script.cachedDataProduced === true;
-    }
-    function getCacheDir() {
-      const v8_compile_cache_cache_dir = process.env.V8_COMPILE_CACHE_CACHE_DIR;
-      if (v8_compile_cache_cache_dir) {
-        return v8_compile_cache_cache_dir;
+      if (shLongProg) {
+        sh += `if [ -x ${shLongProg} ]; then
+  exec ${shLongProg} ${args} ${shTarget} ${progArgs}"$@"
+else
+  exec ${shProg} ${args} ${shTarget} ${progArgs}"$@"
+fi
+`;
+      } else {
+        sh += `${shProg} ${args} ${shTarget} ${progArgs}"$@"
+exit $?
+`;
       }
-      const dirname = typeof process.getuid === "function" ? "v8-compile-cache-" + process.getuid() : "v8-compile-cache";
-      const arch = process.arch;
-      const version2 = typeof process.versions.v8 === "string" ? process.versions.v8 : typeof process.versions.chakracore === "string" ? "chakracore-" + process.versions.chakracore : "node-" + process.version;
-      const cacheDir = path10.join(os3.tmpdir(), dirname, arch, version2);
-      return cacheDir;
-    }
-    function getMainName() {
-      const mainName = require.main && typeof require.main.filename === "string" ? require.main.filename : process.cwd();
-      return mainName;
-    }
-    if (!process.env.DISABLE_V8_COMPILE_CACHE && supportsCachedData()) {
-      const cacheDir = getCacheDir();
-      const prefix = getMainName();
-      const blobStore = new FileSystemBlobStore(cacheDir, prefix);
-      const nativeCompileCache = new NativeCompileCache();
-      nativeCompileCache.setCacheStore(blobStore);
-      nativeCompileCache.install();
-      process.once("exit", () => {
-        if (blobStore.isDirty()) {
-          blobStore.save();
-        }
-        nativeCompileCache.uninstall();
-      });
+      return sh;
     }
-    module2.exports.__TEST__ = {
-      FileSystemBlobStore,
-      NativeCompileCache,
-      mkdirpSync,
-      slashEscape,
-      supportsCachedData,
-      getCacheDir,
-      getMainName
-    };
-  }
-});
+    function generatePwshShim(src, to, opts) {
+      let shTarget = path16.relative(path16.dirname(to), src);
+      const shProg = opts.prog && opts.prog.split("\\").join("/");
+      let pwshProg = shProg && `"${shProg}$exe"`;
+      let pwshLongProg;
+      shTarget = shTarget.split("\\").join("/");
+      const quotedPathToTarget = path16.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`;
+      let args = opts.args || "";
+      let normalizedNodePathEnvVar = normalizePathEnvVar(opts.nodePath);
+      const nodePath = normalizedNodePathEnvVar.win32;
+      const shNodePath = normalizedNodePathEnvVar.posix;
+      let normalizedPrependPathEnvVar = normalizePathEnvVar(opts.prependToPath);
+      const prependPath = normalizedPrependPathEnvVar.win32;
+      const shPrependPath = normalizedPrependPathEnvVar.posix;
+      if (!pwshProg) {
+        pwshProg = quotedPathToTarget;
+        args = "";
+        shTarget = "";
+      } else if (opts.prog === "node" && opts.nodeExecPath) {
+        pwshProg = `"${opts.nodeExecPath}"`;
+        shTarget = quotedPathToTarget;
+      } else {
+        pwshLongProg = `"$basedir/${opts.prog}$exe"`;
+        shTarget = quotedPathToTarget;
+      }
+      let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
+      let pwsh = `#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
 
-// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js
-var require_posix = __commonJS({
-  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/posix.js"(exports2) {
-    "use strict";
-    Object.defineProperty(exports2, "__esModule", { value: true });
-    exports2.sync = exports2.isexe = void 0;
-    var fs_1 = require("fs");
-    var promises_1 = require("fs/promises");
-    var isexe = async (path10, options = {}) => {
-      const { ignoreErrors = false } = options;
-      try {
-        return checkStat(await (0, promises_1.stat)(path10), options);
-      } catch (e) {
-        const er = e;
-        if (ignoreErrors || er.code === "EACCES")
-          return false;
-        throw er;
+$exe=""
+${nodePath || prependPath ? '$pathsep=":"\n' : ""}${nodePath ? `$env_node_path=$env:NODE_PATH
+$new_node_path="${nodePath}"
+` : ""}${prependPath ? `$env_path=$env:PATH
+$prepend_path="${prependPath}"
+` : ""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+${nodePath || prependPath ? '  $pathsep=";"\n' : ""}}`;
+      if (shNodePath || shPrependPath) {
+        pwsh += ` else {
+${shNodePath ? `  $new_node_path="${shNodePath}"
+` : ""}${shPrependPath ? `  $prepend_path="${shPrependPath}"
+` : ""}}
+`;
       }
-    };
-    exports2.isexe = isexe;
-    var sync = (path10, options = {}) => {
-      const { ignoreErrors = false } = options;
-      try {
-        return checkStat((0, fs_1.statSync)(path10), options);
-      } catch (e) {
-        const er = e;
-        if (ignoreErrors || er.code === "EACCES")
-          return false;
-        throw er;
+      if (shNodePath) {
+        pwsh += `if ([string]::IsNullOrEmpty($env_node_path)) {
+  $env:NODE_PATH=$new_node_path
+} else {
+  $env:NODE_PATH="$new_node_path$pathsep$env_node_path"
+}
+`;
       }
-    };
-    exports2.sync = sync;
-    var checkStat = (stat, options) => stat.isFile() && checkMode(stat, options);
-    var checkMode = (stat, options) => {
-      const myUid = options.uid ?? process.getuid?.();
-      const myGroups = options.groups ?? process.getgroups?.() ?? [];
-      const myGid = options.gid ?? process.getgid?.() ?? myGroups[0];
-      if (myUid === void 0 || myGid === void 0) {
-        throw new Error("cannot get uid or gid");
+      if (opts.prependToPath) {
+        pwsh += `
+$env:PATH="$prepend_path$pathsep$env:PATH"
+`;
       }
-      const groups = /* @__PURE__ */ new Set([myGid, ...myGroups]);
-      const mod = stat.mode;
-      const uid = stat.uid;
-      const gid = stat.gid;
-      const u = parseInt("100", 8);
-      const g = parseInt("010", 8);
-      const o = parseInt("001", 8);
-      const ug = u | g;
-      return !!(mod & o || mod & g && groups.has(gid) || mod & u && uid === myUid || mod & ug && myUid === 0);
-    };
+      if (pwshLongProg) {
+        pwsh += `
+$ret=0
+if (Test-Path ${pwshLongProg}) {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args
+  } else {
+    & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args
   }
-});
-
-// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js
-var require_win32 = __commonJS({
-  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/win32.js"(exports2) {
-    "use strict";
-    Object.defineProperty(exports2, "__esModule", { value: true });
-    exports2.sync = exports2.isexe = void 0;
-    var fs_1 = require("fs");
-    var promises_1 = require("fs/promises");
-    var isexe = async (path10, options = {}) => {
-      const { ignoreErrors = false } = options;
-      try {
-        return checkStat(await (0, promises_1.stat)(path10), path10, options);
-      } catch (e) {
-        const er = e;
-        if (ignoreErrors || er.code === "EACCES")
-          return false;
-        throw er;
-      }
-    };
-    exports2.isexe = isexe;
-    var sync = (path10, options = {}) => {
-      const { ignoreErrors = false } = options;
-      try {
-        return checkStat((0, fs_1.statSync)(path10), path10, options);
-      } catch (e) {
-        const er = e;
-        if (ignoreErrors || er.code === "EACCES")
-          return false;
-        throw er;
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+  } else {
+    & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+  }
+  $ret=$LASTEXITCODE
+}
+${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$env_path\n" : ""}exit $ret
+`;
+      } else {
+        pwsh += `
+# Support pipeline input
+if ($MyInvocation.ExpectingInput) {
+  $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+} else {
+  & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+}
+${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$env_path\n" : ""}exit $LASTEXITCODE
+`;
       }
-    };
-    exports2.sync = sync;
-    var checkPathExt = (path10, options) => {
-      const { pathExt = process.env.PATHEXT || "" } = options;
-      const peSplit = pathExt.split(";");
-      if (peSplit.indexOf("") !== -1) {
-        return true;
+      return pwsh;
+    }
+    function chmodShim(to, opts) {
+      return opts.fs_.chmod(to, 493);
+    }
+    function normalizePathEnvVar(nodePath) {
+      if (!nodePath || !nodePath.length) {
+        return {
+          win32: "",
+          posix: ""
+        };
       }
-      for (let i = 0; i < peSplit.length; i++) {
-        const p = peSplit[i].toLowerCase();
-        const ext = path10.substring(path10.length - p.length).toLowerCase();
-        if (p && ext === p) {
-          return true;
-        }
+      let split = typeof nodePath === "string" ? nodePath.split(path16.delimiter) : Array.from(nodePath);
+      let result = {};
+      for (let i = 0; i < split.length; i++) {
+        const win322 = split[i].split("/").join("\\");
+        const posix = isWindows4() ? split[i].split("\\").join("/").replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i];
+        result.win32 = result.win32 ? `${result.win32};${win322}` : win322;
+        result.posix = result.posix ? `${result.posix}:${posix}` : posix;
+        result[i] = { win32: win322, posix };
       }
-      return false;
-    };
-    var checkStat = (stat, path10, options) => stat.isFile() && checkPathExt(path10, options);
-  }
-});
-
-// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js
-var require_options = __commonJS({
-  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/options.js"(exports2) {
-    "use strict";
-    Object.defineProperty(exports2, "__esModule", { value: true });
+      return result;
+    }
+    module2.exports = cmdShim2;
   }
 });
 
-// .yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js
-var require_cjs = __commonJS({
-  ".yarn/cache/isexe-npm-3.1.1-9c0061eead-9ec2576540.zip/node_modules/isexe/dist/cjs/index.js"(exports2) {
-    "use strict";
-    var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
-      if (k2 === void 0) k2 = k;
-      var desc = Object.getOwnPropertyDescriptor(m, k);
-      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
-        desc = { enumerable: true, get: function() {
-          return m[k];
-        } };
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/mode-fix.js
+var modeFix;
+var init_mode_fix = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/mode-fix.js"() {
+    modeFix = (mode, isDir, portable) => {
+      mode &= 4095;
+      if (portable) {
+        mode = (mode | 384) & ~18;
       }
-      Object.defineProperty(o, k2, desc);
-    } : function(o, m, k, k2) {
-      if (k2 === void 0) k2 = k;
-      o[k2] = m[k];
-    });
-    var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
-      Object.defineProperty(o, "default", { enumerable: true, value: v });
-    } : function(o, v) {
-      o["default"] = v;
-    });
-    var __importStar = exports2 && exports2.__importStar || function(mod) {
-      if (mod && mod.__esModule) return mod;
-      var result = {};
-      if (mod != null) {
-        for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+      if (isDir) {
+        if (mode & 256) {
+          mode |= 64;
+        }
+        if (mode & 32) {
+          mode |= 8;
+        }
+        if (mode & 4) {
+          mode |= 1;
+        }
       }
-      __setModuleDefault(result, mod);
-      return result;
-    };
-    var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) {
-      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
+      return mode;
     };
-    Object.defineProperty(exports2, "__esModule", { value: true });
-    exports2.sync = exports2.isexe = exports2.posix = exports2.win32 = void 0;
-    var posix = __importStar(require_posix());
-    exports2.posix = posix;
-    var win32 = __importStar(require_win32());
-    exports2.win32 = win32;
-    __exportStar(require_options(), exports2);
-    var platform = process.env._ISEXE_TEST_PLATFORM_ || process.platform;
-    var impl = platform === "win32" ? win32 : posix;
-    exports2.isexe = impl.isexe;
-    exports2.sync = impl.sync;
   }
 });
 
-// .yarn/cache/which-npm-4.0.0-dd31cd4928-449fa5c44e.zip/node_modules/which/lib/index.js
-var require_lib = __commonJS({
-  ".yarn/cache/which-npm-4.0.0-dd31cd4928-449fa5c44e.zip/node_modules/which/lib/index.js"(exports2, module2) {
-    var { isexe, sync: isexeSync } = require_cjs();
-    var { join: join2, delimiter, sep, posix } = require("path");
-    var isWindows = process.platform === "win32";
-    var rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? "" : sep}]`.replace(/(\\)/g, "\\$1"));
-    var rRel = new RegExp(`^\\.${rSlash.source}`);
-    var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), { code: "ENOENT" });
-    var getPathInfo = (cmd, {
-      path: optPath = process.env.PATH,
-      pathExt: optPathExt = process.env.PATHEXT,
-      delimiter: optDelimiter = delimiter
-    }) => {
-      const pathEnv = cmd.match(rSlash) ? [""] : [
-        // windows always checks the cwd first
-        ...isWindows ? [process.cwd()] : [],
-        ...(optPath || /* istanbul ignore next: very unusual */
-        "").split(optDelimiter)
-      ];
-      if (isWindows) {
-        const pathExtExe = optPathExt || [".EXE", ".CMD", ".BAT", ".COM"].join(optDelimiter);
-        const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()]);
-        if (cmd.includes(".") && pathExt[0] !== "") {
-          pathExt.unshift("");
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/write-entry.js
+var import_fs14, import_path13, prefixPath, maxReadSize, PROCESS, FILE2, DIRECTORY2, SYMLINK2, HARDLINK2, HEADER, READ2, LSTAT, ONLSTAT, ONREAD, ONREADLINK, OPENFILE, ONOPENFILE, CLOSE, MODE, AWAITDRAIN, ONDRAIN, PREFIX, WriteEntry, WriteEntrySync, WriteEntryTar, getType;
+var init_write_entry = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/write-entry.js"() {
+    import_fs14 = __toESM(require("fs"), 1);
+    init_esm();
+    import_path13 = __toESM(require("path"), 1);
+    init_header();
+    init_mode_fix();
+    init_normalize_windows_path();
+    init_options();
+    init_pax();
+    init_strip_absolute_path();
+    init_strip_trailing_slashes();
+    init_warn_method();
+    init_winchars();
+    prefixPath = (path16, prefix) => {
+      if (!prefix) {
+        return normalizeWindowsPath(path16);
+      }
+      path16 = normalizeWindowsPath(path16).replace(/^\.(\/|$)/, "");
+      return stripTrailingSlashes(prefix) + "/" + path16;
+    };
+    maxReadSize = 16 * 1024 * 1024;
+    PROCESS = Symbol("process");
+    FILE2 = Symbol("file");
+    DIRECTORY2 = Symbol("directory");
+    SYMLINK2 = Symbol("symlink");
+    HARDLINK2 = Symbol("hardlink");
+    HEADER = Symbol("header");
+    READ2 = Symbol("read");
+    LSTAT = Symbol("lstat");
+    ONLSTAT = Symbol("onlstat");
+    ONREAD = Symbol("onread");
+    ONREADLINK = Symbol("onreadlink");
+    OPENFILE = Symbol("openfile");
+    ONOPENFILE = Symbol("onopenfile");
+    CLOSE = Symbol("close");
+    MODE = Symbol("mode");
+    AWAITDRAIN = Symbol("awaitDrain");
+    ONDRAIN = Symbol("ondrain");
+    PREFIX = Symbol("prefix");
+    WriteEntry = class extends Minipass {
+      path;
+      portable;
+      myuid = process.getuid && process.getuid() || 0;
+      // until node has builtin pwnam functions, this'll have to do
+      myuser = process.env.USER || "";
+      maxReadSize;
+      linkCache;
+      statCache;
+      preservePaths;
+      cwd;
+      strict;
+      mtime;
+      noPax;
+      noMtime;
+      prefix;
+      fd;
+      blockLen = 0;
+      blockRemain = 0;
+      buf;
+      pos = 0;
+      remain = 0;
+      length = 0;
+      offset = 0;
+      win32;
+      absolute;
+      header;
+      type;
+      linkpath;
+      stat;
+      /* c8 ignore start */
+      #hadError = false;
+      constructor(p, opt_ = {}) {
+        const opt = dealias(opt_);
+        super();
+        this.path = normalizeWindowsPath(p);
+        this.portable = !!opt.portable;
+        this.maxReadSize = opt.maxReadSize || maxReadSize;
+        this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
+        this.statCache = opt.statCache || /* @__PURE__ */ new Map();
+        this.preservePaths = !!opt.preservePaths;
+        this.cwd = normalizeWindowsPath(opt.cwd || process.cwd());
+        this.strict = !!opt.strict;
+        this.noPax = !!opt.noPax;
+        this.noMtime = !!opt.noMtime;
+        this.mtime = opt.mtime;
+        this.prefix = opt.prefix ? normalizeWindowsPath(opt.prefix) : void 0;
+        if (typeof opt.onwarn === "function") {
+          this.on("warn", opt.onwarn);
         }
-        return { pathEnv, pathExt, pathExtExe };
-      }
-      return { pathEnv, pathExt: [""] };
-    };
-    var getPathPart = (raw, cmd) => {
-      const pathPart = /^".*"$/.test(raw) ? raw.slice(1, -1) : raw;
-      const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : "";
-      return prefix + join2(pathPart, cmd);
-    };
-    var which3 = async (cmd, opt = {}) => {
-      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
-      const found = [];
-      for (const envPart of pathEnv) {
-        const p = getPathPart(envPart, cmd);
-        for (const ext of pathExt) {
-          const withExt = p + ext;
-          const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true });
-          if (is) {
-            if (!opt.all) {
-              return withExt;
-            }
-            found.push(withExt);
+        let pathWarn = false;
+        if (!this.preservePaths) {
+          const [root, stripped] = stripAbsolutePath(this.path);
+          if (root && typeof stripped === "string") {
+            this.path = stripped;
+            pathWarn = root;
           }
         }
-      }
-      if (opt.all && found.length) {
-        return found;
-      }
-      if (opt.nothrow) {
-        return null;
-      }
-      throw getNotFoundError(cmd);
-    };
-    var whichSync = (cmd, opt = {}) => {
-      const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
-      const found = [];
-      for (const pathEnvPart of pathEnv) {
-        const p = getPathPart(pathEnvPart, cmd);
-        for (const ext of pathExt) {
-          const withExt = p + ext;
-          const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true });
-          if (is) {
-            if (!opt.all) {
-              return withExt;
-            }
-            found.push(withExt);
-          }
+        this.win32 = !!opt.win32 || process.platform === "win32";
+        if (this.win32) {
+          this.path = decode(this.path.replace(/\\/g, "/"));
+          p = p.replace(/\\/g, "/");
+        }
+        this.absolute = normalizeWindowsPath(opt.absolute || import_path13.default.resolve(this.cwd, p));
+        if (this.path === "") {
+          this.path = "./";
+        }
+        if (pathWarn) {
+          this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
+            entry: this,
+            path: pathWarn + this.path
+          });
+        }
+        const cs = this.statCache.get(this.absolute);
+        if (cs) {
+          this[ONLSTAT](cs);
+        } else {
+          this[LSTAT]();
         }
       }
-      if (opt.all && found.length) {
-        return found;
-      }
-      if (opt.nothrow) {
-        return null;
-      }
-      throw getNotFoundError(cmd);
-    };
-    module2.exports = which3;
-    which3.sync = whichSync;
-  }
-});
-
-// .yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js
-var require_is_windows = __commonJS({
-  ".yarn/cache/is-windows-npm-1.0.2-898cd6f3d7-b32f418ab3.zip/node_modules/is-windows/index.js"(exports2, module2) {
-    (function(factory) {
-      if (exports2 && typeof exports2 === "object" && typeof module2 !== "undefined") {
-        module2.exports = factory();
-      } else if (typeof define === "function" && define.amd) {
-        define([], factory);
-      } else if (typeof window !== "undefined") {
-        window.isWindows = factory();
-      } else if (typeof global !== "undefined") {
-        global.isWindows = factory();
-      } else if (typeof self !== "undefined") {
-        self.isWindows = factory();
-      } else {
-        this.isWindows = factory();
-      }
-    })(function() {
-      "use strict";
-      return function isWindows() {
-        return process && (process.platform === "win32" || /^(msys|cygwin)$/.test(process.env.OSTYPE));
-      };
-    });
-  }
-});
-
-// .yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js
-var require_cmd_extension = __commonJS({
-  ".yarn/cache/cmd-extension-npm-1.0.2-11aa204c4b-acdb425d51.zip/node_modules/cmd-extension/index.js"(exports2, module2) {
-    "use strict";
-    var path10 = require("path");
-    var cmdExtension;
-    if (process.env.PATHEXT) {
-      cmdExtension = process.env.PATHEXT.split(path10.delimiter).find((ext) => ext.toUpperCase() === ".CMD");
-    }
-    module2.exports = cmdExtension || ".cmd";
-  }
-});
-
-// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js
-var require_polyfills = __commonJS({
-  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/polyfills.js"(exports2, module2) {
-    var constants = require("constants");
-    var origCwd = process.cwd;
-    var cwd = null;
-    var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform;
-    process.cwd = function() {
-      if (!cwd)
-        cwd = origCwd.call(process);
-      return cwd;
-    };
-    try {
-      process.cwd();
-    } catch (er) {
-    }
-    if (typeof process.chdir === "function") {
-      chdir = process.chdir;
-      process.chdir = function(d) {
-        cwd = null;
-        chdir.call(process, d);
-      };
-      if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir);
-    }
-    var chdir;
-    module2.exports = patch;
-    function patch(fs8) {
-      if (constants.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) {
-        patchLchmod(fs8);
-      }
-      if (!fs8.lutimes) {
-        patchLutimes(fs8);
-      }
-      fs8.chown = chownFix(fs8.chown);
-      fs8.fchown = chownFix(fs8.fchown);
-      fs8.lchown = chownFix(fs8.lchown);
-      fs8.chmod = chmodFix(fs8.chmod);
-      fs8.fchmod = chmodFix(fs8.fchmod);
-      fs8.lchmod = chmodFix(fs8.lchmod);
-      fs8.chownSync = chownFixSync(fs8.chownSync);
-      fs8.fchownSync = chownFixSync(fs8.fchownSync);
-      fs8.lchownSync = chownFixSync(fs8.lchownSync);
-      fs8.chmodSync = chmodFixSync(fs8.chmodSync);
-      fs8.fchmodSync = chmodFixSync(fs8.fchmodSync);
-      fs8.lchmodSync = chmodFixSync(fs8.lchmodSync);
-      fs8.stat = statFix(fs8.stat);
-      fs8.fstat = statFix(fs8.fstat);
-      fs8.lstat = statFix(fs8.lstat);
-      fs8.statSync = statFixSync(fs8.statSync);
-      fs8.fstatSync = statFixSync(fs8.fstatSync);
-      fs8.lstatSync = statFixSync(fs8.lstatSync);
-      if (fs8.chmod && !fs8.lchmod) {
-        fs8.lchmod = function(path10, mode, cb) {
-          if (cb) process.nextTick(cb);
-        };
-        fs8.lchmodSync = function() {
-        };
+      warn(code2, message, data = {}) {
+        return warnMethod(this, code2, message, data);
       }
-      if (fs8.chown && !fs8.lchown) {
-        fs8.lchown = function(path10, uid, gid, cb) {
-          if (cb) process.nextTick(cb);
-        };
-        fs8.lchownSync = function() {
-        };
+      emit(ev, ...data) {
+        if (ev === "error") {
+          this.#hadError = true;
+        }
+        return super.emit(ev, ...data);
       }
-      if (platform === "win32") {
-        fs8.rename = typeof fs8.rename !== "function" ? fs8.rename : function(fs$rename) {
-          function rename(from, to, cb) {
-            var start = Date.now();
-            var backoff = 0;
-            fs$rename(from, to, function CB(er) {
-              if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 6e4) {
-                setTimeout(function() {
-                  fs8.stat(to, function(stater, st) {
-                    if (stater && stater.code === "ENOENT")
-                      fs$rename(from, to, CB);
-                    else
-                      cb(er);
-                  });
-                }, backoff);
-                if (backoff < 100)
-                  backoff += 10;
-                return;
-              }
-              if (cb) cb(er);
-            });
+      [LSTAT]() {
+        import_fs14.default.lstat(this.absolute, (er, stat2) => {
+          if (er) {
+            return this.emit("error", er);
           }
-          if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename);
-          return rename;
-        }(fs8.rename);
+          this[ONLSTAT](stat2);
+        });
       }
-      fs8.read = typeof fs8.read !== "function" ? fs8.read : function(fs$read) {
-        function read(fd, buffer, offset, length, position, callback_) {
-          var callback;
-          if (callback_ && typeof callback_ === "function") {
-            var eagCounter = 0;
-            callback = function(er, _, __) {
-              if (er && er.code === "EAGAIN" && eagCounter < 10) {
-                eagCounter++;
-                return fs$read.call(fs8, fd, buffer, offset, length, position, callback);
-              }
-              callback_.apply(this, arguments);
-            };
-          }
-          return fs$read.call(fs8, fd, buffer, offset, length, position, callback);
+      [ONLSTAT](stat2) {
+        this.statCache.set(this.absolute, stat2);
+        this.stat = stat2;
+        if (!stat2.isFile()) {
+          stat2.size = 0;
         }
-        if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read);
-        return read;
-      }(fs8.read);
-      fs8.readSync = typeof fs8.readSync !== "function" ? fs8.readSync : /* @__PURE__ */ function(fs$readSync) {
-        return function(fd, buffer, offset, length, position) {
-          var eagCounter = 0;
-          while (true) {
-            try {
-              return fs$readSync.call(fs8, fd, buffer, offset, length, position);
-            } catch (er) {
-              if (er.code === "EAGAIN" && eagCounter < 10) {
-                eagCounter++;
-                continue;
-              }
-              throw er;
-            }
-          }
-        };
-      }(fs8.readSync);
-      function patchLchmod(fs9) {
-        fs9.lchmod = function(path10, mode, callback) {
-          fs9.open(
-            path10,
-            constants.O_WRONLY | constants.O_SYMLINK,
-            mode,
-            function(err, fd) {
-              if (err) {
-                if (callback) callback(err);
-                return;
-              }
-              fs9.fchmod(fd, mode, function(err2) {
-                fs9.close(fd, function(err22) {
-                  if (callback) callback(err2 || err22);
-                });
-              });
-            }
-          );
-        };
-        fs9.lchmodSync = function(path10, mode) {
-          var fd = fs9.openSync(path10, constants.O_WRONLY | constants.O_SYMLINK, mode);
-          var threw = true;
-          var ret;
-          try {
-            ret = fs9.fchmodSync(fd, mode);
-            threw = false;
-          } finally {
-            if (threw) {
-              try {
-                fs9.closeSync(fd);
-              } catch (er) {
-              }
-            } else {
-              fs9.closeSync(fd);
-            }
-          }
-          return ret;
-        };
+        this.type = getType(stat2);
+        this.emit("stat", stat2);
+        this[PROCESS]();
       }
-      function patchLutimes(fs9) {
-        if (constants.hasOwnProperty("O_SYMLINK") && fs9.futimes) {
-          fs9.lutimes = function(path10, at, mt, cb) {
-            fs9.open(path10, constants.O_SYMLINK, function(er, fd) {
-              if (er) {
-                if (cb) cb(er);
-                return;
-              }
-              fs9.futimes(fd, at, mt, function(er2) {
-                fs9.close(fd, function(er22) {
-                  if (cb) cb(er2 || er22);
-                });
-              });
-            });
-          };
-          fs9.lutimesSync = function(path10, at, mt) {
-            var fd = fs9.openSync(path10, constants.O_SYMLINK);
-            var ret;
-            var threw = true;
-            try {
-              ret = fs9.futimesSync(fd, at, mt);
-              threw = false;
-            } finally {
-              if (threw) {
-                try {
-                  fs9.closeSync(fd);
-                } catch (er) {
-                }
-              } else {
-                fs9.closeSync(fd);
-              }
-            }
-            return ret;
-          };
-        } else if (fs9.futimes) {
-          fs9.lutimes = function(_a, _b, _c, cb) {
-            if (cb) process.nextTick(cb);
-          };
-          fs9.lutimesSync = function() {
-          };
+      [PROCESS]() {
+        switch (this.type) {
+          case "File":
+            return this[FILE2]();
+          case "Directory":
+            return this[DIRECTORY2]();
+          case "SymbolicLink":
+            return this[SYMLINK2]();
+          default:
+            return this.end();
         }
       }
-      function chmodFix(orig) {
-        if (!orig) return orig;
-        return function(target, mode, cb) {
-          return orig.call(fs8, target, mode, function(er) {
-            if (chownErOk(er)) er = null;
-            if (cb) cb.apply(this, arguments);
-          });
-        };
+      [MODE](mode) {
+        return modeFix(mode, this.type === "Directory", this.portable);
       }
-      function chmodFixSync(orig) {
-        if (!orig) return orig;
-        return function(target, mode) {
-          try {
-            return orig.call(fs8, target, mode);
-          } catch (er) {
-            if (!chownErOk(er)) throw er;
-          }
-        };
+      [PREFIX](path16) {
+        return prefixPath(path16, this.prefix);
       }
-      function chownFix(orig) {
-        if (!orig) return orig;
-        return function(target, uid, gid, cb) {
-          return orig.call(fs8, target, uid, gid, function(er) {
-            if (chownErOk(er)) er = null;
-            if (cb) cb.apply(this, arguments);
-          });
-        };
+      [HEADER]() {
+        if (!this.stat) {
+          throw new Error("cannot write header before stat");
+        }
+        if (this.type === "Directory" && this.portable) {
+          this.noMtime = true;
+        }
+        this.header = new Header({
+          path: this[PREFIX](this.path),
+          // only apply the prefix to hard links.
+          linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
+          // only the permissions and setuid/setgid/sticky bitflags
+          // not the higher-order bits that specify file type
+          mode: this[MODE](this.stat.mode),
+          uid: this.portable ? void 0 : this.stat.uid,
+          gid: this.portable ? void 0 : this.stat.gid,
+          size: this.stat.size,
+          mtime: this.noMtime ? void 0 : this.mtime || this.stat.mtime,
+          /* c8 ignore next */
+          type: this.type === "Unsupported" ? void 0 : this.type,
+          uname: this.portable ? void 0 : this.stat.uid === this.myuid ? this.myuser : "",
+          atime: this.portable ? void 0 : this.stat.atime,
+          ctime: this.portable ? void 0 : this.stat.ctime
+        });
+        if (this.header.encode() && !this.noPax) {
+          super.write(new Pax({
+            atime: this.portable ? void 0 : this.header.atime,
+            ctime: this.portable ? void 0 : this.header.ctime,
+            gid: this.portable ? void 0 : this.header.gid,
+            mtime: this.noMtime ? void 0 : this.mtime || this.header.mtime,
+            path: this[PREFIX](this.path),
+            linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
+            size: this.header.size,
+            uid: this.portable ? void 0 : this.header.uid,
+            uname: this.portable ? void 0 : this.header.uname,
+            dev: this.portable ? void 0 : this.stat.dev,
+            ino: this.portable ? void 0 : this.stat.ino,
+            nlink: this.portable ? void 0 : this.stat.nlink
+          }).encode());
+        }
+        const block = this.header?.block;
+        if (!block) {
+          throw new Error("failed to encode header");
+        }
+        super.write(block);
       }
-      function chownFixSync(orig) {
-        if (!orig) return orig;
-        return function(target, uid, gid) {
-          try {
-            return orig.call(fs8, target, uid, gid);
-          } catch (er) {
-            if (!chownErOk(er)) throw er;
-          }
-        };
+      [DIRECTORY2]() {
+        if (!this.stat) {
+          throw new Error("cannot create directory entry without stat");
+        }
+        if (this.path.slice(-1) !== "/") {
+          this.path += "/";
+        }
+        this.stat.size = 0;
+        this[HEADER]();
+        this.end();
       }
-      function statFix(orig) {
-        if (!orig) return orig;
-        return function(target, options, cb) {
-          if (typeof options === "function") {
-            cb = options;
-            options = null;
-          }
-          function callback(er, stats) {
-            if (stats) {
-              if (stats.uid < 0) stats.uid += 4294967296;
-              if (stats.gid < 0) stats.gid += 4294967296;
-            }
-            if (cb) cb.apply(this, arguments);
+      [SYMLINK2]() {
+        import_fs14.default.readlink(this.absolute, (er, linkpath) => {
+          if (er) {
+            return this.emit("error", er);
           }
-          return options ? orig.call(fs8, target, options, callback) : orig.call(fs8, target, callback);
-        };
+          this[ONREADLINK](linkpath);
+        });
       }
-      function statFixSync(orig) {
-        if (!orig) return orig;
-        return function(target, options) {
-          var stats = options ? orig.call(fs8, target, options) : orig.call(fs8, target);
-          if (stats) {
-            if (stats.uid < 0) stats.uid += 4294967296;
-            if (stats.gid < 0) stats.gid += 4294967296;
-          }
-          return stats;
-        };
+      [ONREADLINK](linkpath) {
+        this.linkpath = normalizeWindowsPath(linkpath);
+        this[HEADER]();
+        this.end();
       }
-      function chownErOk(er) {
-        if (!er)
-          return true;
-        if (er.code === "ENOSYS")
-          return true;
-        var nonroot = !process.getuid || process.getuid() !== 0;
-        if (nonroot) {
-          if (er.code === "EINVAL" || er.code === "EPERM")
-            return true;
+      [HARDLINK2](linkpath) {
+        if (!this.stat) {
+          throw new Error("cannot create link entry without stat");
         }
-        return false;
+        this.type = "Link";
+        this.linkpath = normalizeWindowsPath(import_path13.default.relative(this.cwd, linkpath));
+        this.stat.size = 0;
+        this[HEADER]();
+        this.end();
       }
-    }
-  }
-});
-
-// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js
-var require_legacy_streams = __commonJS({
-  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/legacy-streams.js"(exports2, module2) {
-    var Stream = require("stream").Stream;
-    module2.exports = legacy;
-    function legacy(fs8) {
-      return {
-        ReadStream,
-        WriteStream
-      };
-      function ReadStream(path10, options) {
-        if (!(this instanceof ReadStream)) return new ReadStream(path10, options);
-        Stream.call(this);
-        var self2 = this;
-        this.path = path10;
-        this.fd = null;
-        this.readable = true;
-        this.paused = false;
-        this.flags = "r";
-        this.mode = 438;
-        this.bufferSize = 64 * 1024;
-        options = options || {};
-        var keys = Object.keys(options);
-        for (var index = 0, length = keys.length; index < length; index++) {
-          var key = keys[index];
-          this[key] = options[key];
+      [FILE2]() {
+        if (!this.stat) {
+          throw new Error("cannot create file entry without stat");
         }
-        if (this.encoding) this.setEncoding(this.encoding);
-        if (this.start !== void 0) {
-          if ("number" !== typeof this.start) {
-            throw TypeError("start must be a Number");
-          }
-          if (this.end === void 0) {
-            this.end = Infinity;
-          } else if ("number" !== typeof this.end) {
-            throw TypeError("end must be a Number");
+        if (this.stat.nlink > 1) {
+          const linkKey = `${this.stat.dev}:${this.stat.ino}`;
+          const linkpath = this.linkCache.get(linkKey);
+          if (linkpath?.indexOf(this.cwd) === 0) {
+            return this[HARDLINK2](linkpath);
           }
-          if (this.start > this.end) {
-            throw new Error("start must be <= end");
+          this.linkCache.set(linkKey, this.absolute);
+        }
+        this[HEADER]();
+        if (this.stat.size === 0) {
+          return this.end();
+        }
+        this[OPENFILE]();
+      }
+      [OPENFILE]() {
+        import_fs14.default.open(this.absolute, "r", (er, fd) => {
+          if (er) {
+            return this.emit("error", er);
           }
-          this.pos = this.start;
+          this[ONOPENFILE](fd);
+        });
+      }
+      [ONOPENFILE](fd) {
+        this.fd = fd;
+        if (this.#hadError) {
+          return this[CLOSE]();
         }
-        if (this.fd !== null) {
-          process.nextTick(function() {
-            self2._read();
-          });
-          return;
+        if (!this.stat) {
+          throw new Error("should stat before calling onopenfile");
         }
-        fs8.open(this.path, this.flags, this.mode, function(err, fd) {
-          if (err) {
-            self2.emit("error", err);
-            self2.readable = false;
-            return;
+        this.blockLen = 512 * Math.ceil(this.stat.size / 512);
+        this.blockRemain = this.blockLen;
+        const bufLen = Math.min(this.blockLen, this.maxReadSize);
+        this.buf = Buffer.allocUnsafe(bufLen);
+        this.offset = 0;
+        this.pos = 0;
+        this.remain = this.stat.size;
+        this.length = this.buf.length;
+        this[READ2]();
+      }
+      [READ2]() {
+        const { fd, buf, offset, length, pos: pos2 } = this;
+        if (fd === void 0 || buf === void 0) {
+          throw new Error("cannot read file without first opening");
+        }
+        import_fs14.default.read(fd, buf, offset, length, pos2, (er, bytesRead) => {
+          if (er) {
+            return this[CLOSE](() => this.emit("error", er));
           }
-          self2.fd = fd;
-          self2.emit("open", fd);
-          self2._read();
+          this[ONREAD](bytesRead);
         });
       }
-      function WriteStream(path10, options) {
-        if (!(this instanceof WriteStream)) return new WriteStream(path10, options);
-        Stream.call(this);
-        this.path = path10;
-        this.fd = null;
-        this.writable = true;
-        this.flags = "w";
-        this.encoding = "binary";
-        this.mode = 438;
-        this.bytesWritten = 0;
-        options = options || {};
-        var keys = Object.keys(options);
-        for (var index = 0, length = keys.length; index < length; index++) {
-          var key = keys[index];
-          this[key] = options[key];
+      /* c8 ignore start */
+      [CLOSE](cb = () => {
+      }) {
+        if (this.fd !== void 0)
+          import_fs14.default.close(this.fd, cb);
+      }
+      [ONREAD](bytesRead) {
+        if (bytesRead <= 0 && this.remain > 0) {
+          const er = Object.assign(new Error("encountered unexpected EOF"), {
+            path: this.absolute,
+            syscall: "read",
+            code: "EOF"
+          });
+          return this[CLOSE](() => this.emit("error", er));
         }
-        if (this.start !== void 0) {
-          if ("number" !== typeof this.start) {
-            throw TypeError("start must be a Number");
-          }
-          if (this.start < 0) {
-            throw new Error("start must be >= zero");
+        if (bytesRead > this.remain) {
+          const er = Object.assign(new Error("did not encounter expected EOF"), {
+            path: this.absolute,
+            syscall: "read",
+            code: "EOF"
+          });
+          return this[CLOSE](() => this.emit("error", er));
+        }
+        if (!this.buf) {
+          throw new Error("should have created buffer prior to reading");
+        }
+        if (bytesRead === this.remain) {
+          for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {
+            this.buf[i + this.offset] = 0;
+            bytesRead++;
+            this.remain++;
           }
-          this.pos = this.start;
         }
-        this.busy = false;
-        this._queue = [];
-        if (this.fd === null) {
-          this._open = fs8.open;
-          this._queue.push([this._open, this.path, this.flags, this.mode, void 0]);
-          this.flush();
+        const chunk = this.offset === 0 && bytesRead === this.buf.length ? this.buf : this.buf.subarray(this.offset, this.offset + bytesRead);
+        const flushed = this.write(chunk);
+        if (!flushed) {
+          this[AWAITDRAIN](() => this[ONDRAIN]());
+        } else {
+          this[ONDRAIN]();
         }
       }
-    }
-  }
-});
-
-// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js
-var require_clone = __commonJS({
-  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/clone.js"(exports2, module2) {
-    "use strict";
-    module2.exports = clone;
-    var getPrototypeOf = Object.getPrototypeOf || function(obj) {
-      return obj.__proto__;
-    };
-    function clone(obj) {
-      if (obj === null || typeof obj !== "object")
-        return obj;
-      if (obj instanceof Object)
-        var copy = { __proto__: getPrototypeOf(obj) };
-      else
-        var copy = /* @__PURE__ */ Object.create(null);
-      Object.getOwnPropertyNames(obj).forEach(function(key) {
-        Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key));
-      });
-      return copy;
-    }
-  }
-});
-
-// .yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js
-var require_graceful_fs = __commonJS({
-  ".yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-386d011a55.zip/node_modules/graceful-fs/graceful-fs.js"(exports2, module2) {
-    var fs8 = require("fs");
-    var polyfills = require_polyfills();
-    var legacy = require_legacy_streams();
-    var clone = require_clone();
-    var util = require("util");
-    var gracefulQueue;
-    var previousSymbol;
-    if (typeof Symbol === "function" && typeof Symbol.for === "function") {
-      gracefulQueue = Symbol.for("graceful-fs.queue");
-      previousSymbol = Symbol.for("graceful-fs.previous");
-    } else {
-      gracefulQueue = "___graceful-fs.queue";
-      previousSymbol = "___graceful-fs.previous";
-    }
-    function noop() {
-    }
-    function publishQueue(context, queue2) {
-      Object.defineProperty(context, gracefulQueue, {
-        get: function() {
-          return queue2;
+      [AWAITDRAIN](cb) {
+        this.once("drain", cb);
+      }
+      write(chunk, encoding, cb) {
+        if (typeof encoding === "function") {
+          cb = encoding;
+          encoding = void 0;
         }
-      });
-    }
-    var debug2 = noop;
-    if (util.debuglog)
-      debug2 = util.debuglog("gfs4");
-    else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ""))
-      debug2 = function() {
-        var m = util.format.apply(util, arguments);
-        m = "GFS4: " + m.split(/\n/).join("\nGFS4: ");
-        console.error(m);
-      };
-    if (!fs8[gracefulQueue]) {
-      queue = global[gracefulQueue] || [];
-      publishQueue(fs8, queue);
-      fs8.close = function(fs$close) {
-        function close(fd, cb) {
-          return fs$close.call(fs8, fd, function(err) {
-            if (!err) {
-              resetQueue();
-            }
-            if (typeof cb === "function")
-              cb.apply(this, arguments);
+        if (typeof chunk === "string") {
+          chunk = Buffer.from(chunk, typeof encoding === "string" ? encoding : "utf8");
+        }
+        if (this.blockRemain < chunk.length) {
+          const er = Object.assign(new Error("writing more data than expected"), {
+            path: this.absolute
           });
+          return this.emit("error", er);
         }
-        Object.defineProperty(close, previousSymbol, {
-          value: fs$close
-        });
-        return close;
-      }(fs8.close);
-      fs8.closeSync = function(fs$closeSync) {
-        function closeSync(fd) {
-          fs$closeSync.apply(fs8, arguments);
-          resetQueue();
+        this.remain -= chunk.length;
+        this.blockRemain -= chunk.length;
+        this.pos += chunk.length;
+        this.offset += chunk.length;
+        return super.write(chunk, null, cb);
+      }
+      [ONDRAIN]() {
+        if (!this.remain) {
+          if (this.blockRemain) {
+            super.write(Buffer.alloc(this.blockRemain));
+          }
+          return this[CLOSE]((er) => er ? this.emit("error", er) : this.end());
         }
-        Object.defineProperty(closeSync, previousSymbol, {
-          value: fs$closeSync
-        });
-        return closeSync;
-      }(fs8.closeSync);
-      if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) {
-        process.on("exit", function() {
-          debug2(fs8[gracefulQueue]);
-          require("assert").equal(fs8[gracefulQueue].length, 0);
-        });
+        if (!this.buf) {
+          throw new Error("buffer lost somehow in ONDRAIN");
+        }
+        if (this.offset >= this.length) {
+          this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length));
+          this.offset = 0;
+        }
+        this.length = this.buf.length - this.offset;
+        this[READ2]();
       }
-    }
-    var queue;
-    if (!global[gracefulQueue]) {
-      publishQueue(global, fs8[gracefulQueue]);
-    }
-    module2.exports = patch(clone(fs8));
-    if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs8.__patched) {
-      module2.exports = patch(fs8);
-      fs8.__patched = true;
-    }
-    function patch(fs9) {
-      polyfills(fs9);
-      fs9.gracefulify = patch;
-      fs9.createReadStream = createReadStream;
-      fs9.createWriteStream = createWriteStream;
-      var fs$readFile = fs9.readFile;
-      fs9.readFile = readFile;
-      function readFile(path10, options, cb) {
-        if (typeof options === "function")
-          cb = options, options = null;
-        return go$readFile(path10, options, cb);
-        function go$readFile(path11, options2, cb2, startTime) {
-          return fs$readFile(path11, options2, function(err) {
-            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
-              enqueue([go$readFile, [path11, options2, cb2], err, startTime || Date.now(), Date.now()]);
-            else {
-              if (typeof cb2 === "function")
-                cb2.apply(this, arguments);
+    };
+    WriteEntrySync = class extends WriteEntry {
+      sync = true;
+      [LSTAT]() {
+        this[ONLSTAT](import_fs14.default.lstatSync(this.absolute));
+      }
+      [SYMLINK2]() {
+        this[ONREADLINK](import_fs14.default.readlinkSync(this.absolute));
+      }
+      [OPENFILE]() {
+        this[ONOPENFILE](import_fs14.default.openSync(this.absolute, "r"));
+      }
+      [READ2]() {
+        let threw = true;
+        try {
+          const { fd, buf, offset, length, pos: pos2 } = this;
+          if (fd === void 0 || buf === void 0) {
+            throw new Error("fd and buf must be set in READ method");
+          }
+          const bytesRead = import_fs14.default.readSync(fd, buf, offset, length, pos2);
+          this[ONREAD](bytesRead);
+          threw = false;
+        } finally {
+          if (threw) {
+            try {
+              this[CLOSE](() => {
+              });
+            } catch (er) {
             }
-          });
+          }
         }
       }
-      var fs$writeFile = fs9.writeFile;
-      fs9.writeFile = writeFile;
-      function writeFile(path10, data, options, cb) {
-        if (typeof options === "function")
-          cb = options, options = null;
-        return go$writeFile(path10, data, options, cb);
-        function go$writeFile(path11, data2, options2, cb2, startTime) {
-          return fs$writeFile(path11, data2, options2, function(err) {
-            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
-              enqueue([go$writeFile, [path11, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
-            else {
-              if (typeof cb2 === "function")
-                cb2.apply(this, arguments);
-            }
+      [AWAITDRAIN](cb) {
+        cb();
+      }
+      /* c8 ignore start */
+      [CLOSE](cb = () => {
+      }) {
+        if (this.fd !== void 0)
+          import_fs14.default.closeSync(this.fd);
+        cb();
+      }
+    };
+    WriteEntryTar = class extends Minipass {
+      blockLen = 0;
+      blockRemain = 0;
+      buf = 0;
+      pos = 0;
+      remain = 0;
+      length = 0;
+      preservePaths;
+      portable;
+      strict;
+      noPax;
+      noMtime;
+      readEntry;
+      type;
+      prefix;
+      path;
+      mode;
+      uid;
+      gid;
+      uname;
+      gname;
+      header;
+      mtime;
+      atime;
+      ctime;
+      linkpath;
+      size;
+      warn(code2, message, data = {}) {
+        return warnMethod(this, code2, message, data);
+      }
+      constructor(readEntry, opt_ = {}) {
+        const opt = dealias(opt_);
+        super();
+        this.preservePaths = !!opt.preservePaths;
+        this.portable = !!opt.portable;
+        this.strict = !!opt.strict;
+        this.noPax = !!opt.noPax;
+        this.noMtime = !!opt.noMtime;
+        this.readEntry = readEntry;
+        const { type } = readEntry;
+        if (type === "Unsupported") {
+          throw new Error("writing entry that should be ignored");
+        }
+        this.type = type;
+        if (this.type === "Directory" && this.portable) {
+          this.noMtime = true;
+        }
+        this.prefix = opt.prefix;
+        this.path = normalizeWindowsPath(readEntry.path);
+        this.mode = readEntry.mode !== void 0 ? this[MODE](readEntry.mode) : void 0;
+        this.uid = this.portable ? void 0 : readEntry.uid;
+        this.gid = this.portable ? void 0 : readEntry.gid;
+        this.uname = this.portable ? void 0 : readEntry.uname;
+        this.gname = this.portable ? void 0 : readEntry.gname;
+        this.size = readEntry.size;
+        this.mtime = this.noMtime ? void 0 : opt.mtime || readEntry.mtime;
+        this.atime = this.portable ? void 0 : readEntry.atime;
+        this.ctime = this.portable ? void 0 : readEntry.ctime;
+        this.linkpath = readEntry.linkpath !== void 0 ? normalizeWindowsPath(readEntry.linkpath) : void 0;
+        if (typeof opt.onwarn === "function") {
+          this.on("warn", opt.onwarn);
+        }
+        let pathWarn = false;
+        if (!this.preservePaths) {
+          const [root, stripped] = stripAbsolutePath(this.path);
+          if (root && typeof stripped === "string") {
+            this.path = stripped;
+            pathWarn = root;
+          }
+        }
+        this.remain = readEntry.size;
+        this.blockRemain = readEntry.startBlockSize;
+        this.header = new Header({
+          path: this[PREFIX](this.path),
+          linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
+          // only the permissions and setuid/setgid/sticky bitflags
+          // not the higher-order bits that specify file type
+          mode: this.mode,
+          uid: this.portable ? void 0 : this.uid,
+          gid: this.portable ? void 0 : this.gid,
+          size: this.size,
+          mtime: this.noMtime ? void 0 : this.mtime,
+          type: this.type,
+          uname: this.portable ? void 0 : this.uname,
+          atime: this.portable ? void 0 : this.atime,
+          ctime: this.portable ? void 0 : this.ctime
+        });
+        if (pathWarn) {
+          this.warn("TAR_ENTRY_INFO", `stripping ${pathWarn} from absolute path`, {
+            entry: this,
+            path: pathWarn + this.path
           });
         }
+        if (this.header.encode() && !this.noPax) {
+          super.write(new Pax({
+            atime: this.portable ? void 0 : this.atime,
+            ctime: this.portable ? void 0 : this.ctime,
+            gid: this.portable ? void 0 : this.gid,
+            mtime: this.noMtime ? void 0 : this.mtime,
+            path: this[PREFIX](this.path),
+            linkpath: this.type === "Link" && this.linkpath !== void 0 ? this[PREFIX](this.linkpath) : this.linkpath,
+            size: this.size,
+            uid: this.portable ? void 0 : this.uid,
+            uname: this.portable ? void 0 : this.uname,
+            dev: this.portable ? void 0 : this.readEntry.dev,
+            ino: this.portable ? void 0 : this.readEntry.ino,
+            nlink: this.portable ? void 0 : this.readEntry.nlink
+          }).encode());
+        }
+        const b = this.header?.block;
+        if (!b)
+          throw new Error("failed to encode header");
+        super.write(b);
+        readEntry.pipe(this);
       }
-      var fs$appendFile = fs9.appendFile;
-      if (fs$appendFile)
-        fs9.appendFile = appendFile;
-      function appendFile(path10, data, options, cb) {
-        if (typeof options === "function")
-          cb = options, options = null;
-        return go$appendFile(path10, data, options, cb);
-        function go$appendFile(path11, data2, options2, cb2, startTime) {
-          return fs$appendFile(path11, data2, options2, function(err) {
-            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
-              enqueue([go$appendFile, [path11, data2, options2, cb2], err, startTime || Date.now(), Date.now()]);
-            else {
-              if (typeof cb2 === "function")
-                cb2.apply(this, arguments);
-            }
-          });
+      [PREFIX](path16) {
+        return prefixPath(path16, this.prefix);
+      }
+      [MODE](mode) {
+        return modeFix(mode, this.type === "Directory", this.portable);
+      }
+      write(chunk, encoding, cb) {
+        if (typeof encoding === "function") {
+          cb = encoding;
+          encoding = void 0;
+        }
+        if (typeof chunk === "string") {
+          chunk = Buffer.from(chunk, typeof encoding === "string" ? encoding : "utf8");
+        }
+        const writeLen = chunk.length;
+        if (writeLen > this.blockRemain) {
+          throw new Error("writing more to entry than is appropriate");
         }
+        this.blockRemain -= writeLen;
+        return super.write(chunk, cb);
       }
-      var fs$copyFile = fs9.copyFile;
-      if (fs$copyFile)
-        fs9.copyFile = copyFile;
-      function copyFile(src, dest, flags, cb) {
-        if (typeof flags === "function") {
-          cb = flags;
-          flags = 0;
+      end(chunk, encoding, cb) {
+        if (this.blockRemain) {
+          super.write(Buffer.alloc(this.blockRemain));
         }
-        return go$copyFile(src, dest, flags, cb);
-        function go$copyFile(src2, dest2, flags2, cb2, startTime) {
-          return fs$copyFile(src2, dest2, flags2, function(err) {
-            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
-              enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]);
-            else {
-              if (typeof cb2 === "function")
-                cb2.apply(this, arguments);
-            }
-          });
+        if (typeof chunk === "function") {
+          cb = chunk;
+          encoding = void 0;
+          chunk = void 0;
         }
+        if (typeof encoding === "function") {
+          cb = encoding;
+          encoding = void 0;
+        }
+        if (typeof chunk === "string") {
+          chunk = Buffer.from(chunk, encoding ?? "utf8");
+        }
+        if (cb)
+          this.once("finish", cb);
+        chunk ? super.end(chunk, cb) : super.end(cb);
+        return this;
       }
-      var fs$readdir = fs9.readdir;
-      fs9.readdir = readdir;
-      var noReaddirOptionVersions = /^v[0-5]\./;
-      function readdir(path10, options, cb) {
-        if (typeof options === "function")
-          cb = options, options = null;
-        var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path11, options2, cb2, startTime) {
-          return fs$readdir(path11, fs$readdirCallback(
-            path11,
-            options2,
-            cb2,
-            startTime
-          ));
-        } : function go$readdir2(path11, options2, cb2, startTime) {
-          return fs$readdir(path11, options2, fs$readdirCallback(
-            path11,
-            options2,
-            cb2,
-            startTime
-          ));
-        };
-        return go$readdir(path10, options, cb);
-        function fs$readdirCallback(path11, options2, cb2, startTime) {
-          return function(err, files) {
-            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
-              enqueue([
-                go$readdir,
-                [path11, options2, cb2],
-                err,
-                startTime || Date.now(),
-                Date.now()
-              ]);
-            else {
-              if (files && files.sort)
-                files.sort();
-              if (typeof cb2 === "function")
-                cb2.call(this, err, files);
+    };
+    getType = (stat2) => stat2.isFile() ? "File" : stat2.isDirectory() ? "Directory" : stat2.isSymbolicLink() ? "SymbolicLink" : "Unsupported";
+  }
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/pack.js
+var import_fs15, import_path14, PackJob, EOF2, ONSTAT, ENDED3, QUEUE2, CURRENT, PROCESS2, PROCESSING, PROCESSJOB, JOBS, JOBDONE, ADDFSENTRY, ADDTARENTRY, STAT, READDIR, ONREADDIR, PIPE, ENTRY, ENTRYOPT, WRITEENTRYCLASS, WRITE, ONDRAIN2, Pack, PackSync;
+var init_pack = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/pack.js"() {
+    import_fs15 = __toESM(require("fs"), 1);
+    init_write_entry();
+    init_esm();
+    init_esm3();
+    init_esm4();
+    init_read_entry();
+    init_warn_method();
+    import_path14 = __toESM(require("path"), 1);
+    init_normalize_windows_path();
+    PackJob = class {
+      path;
+      absolute;
+      entry;
+      stat;
+      readdir;
+      pending = false;
+      ignore = false;
+      piped = false;
+      constructor(path16, absolute) {
+        this.path = path16 || "./";
+        this.absolute = absolute;
+      }
+    };
+    EOF2 = Buffer.alloc(1024);
+    ONSTAT = Symbol("onStat");
+    ENDED3 = Symbol("ended");
+    QUEUE2 = Symbol("queue");
+    CURRENT = Symbol("current");
+    PROCESS2 = Symbol("process");
+    PROCESSING = Symbol("processing");
+    PROCESSJOB = Symbol("processJob");
+    JOBS = Symbol("jobs");
+    JOBDONE = Symbol("jobDone");
+    ADDFSENTRY = Symbol("addFSEntry");
+    ADDTARENTRY = Symbol("addTarEntry");
+    STAT = Symbol("stat");
+    READDIR = Symbol("readdir");
+    ONREADDIR = Symbol("onreaddir");
+    PIPE = Symbol("pipe");
+    ENTRY = Symbol("entry");
+    ENTRYOPT = Symbol("entryOpt");
+    WRITEENTRYCLASS = Symbol("writeEntryClass");
+    WRITE = Symbol("write");
+    ONDRAIN2 = Symbol("ondrain");
+    Pack = class extends Minipass {
+      opt;
+      cwd;
+      maxReadSize;
+      preservePaths;
+      strict;
+      noPax;
+      prefix;
+      linkCache;
+      statCache;
+      file;
+      portable;
+      zip;
+      readdirCache;
+      noDirRecurse;
+      follow;
+      noMtime;
+      mtime;
+      filter;
+      jobs;
+      [WRITEENTRYCLASS];
+      onWriteEntry;
+      [QUEUE2];
+      [JOBS] = 0;
+      [PROCESSING] = false;
+      [ENDED3] = false;
+      constructor(opt = {}) {
+        super();
+        this.opt = opt;
+        this.file = opt.file || "";
+        this.cwd = opt.cwd || process.cwd();
+        this.maxReadSize = opt.maxReadSize;
+        this.preservePaths = !!opt.preservePaths;
+        this.strict = !!opt.strict;
+        this.noPax = !!opt.noPax;
+        this.prefix = normalizeWindowsPath(opt.prefix || "");
+        this.linkCache = opt.linkCache || /* @__PURE__ */ new Map();
+        this.statCache = opt.statCache || /* @__PURE__ */ new Map();
+        this.readdirCache = opt.readdirCache || /* @__PURE__ */ new Map();
+        this.onWriteEntry = opt.onWriteEntry;
+        this[WRITEENTRYCLASS] = WriteEntry;
+        if (typeof opt.onwarn === "function") {
+          this.on("warn", opt.onwarn);
+        }
+        this.portable = !!opt.portable;
+        if (opt.gzip || opt.brotli) {
+          if (opt.gzip && opt.brotli) {
+            throw new TypeError("gzip and brotli are mutually exclusive");
+          }
+          if (opt.gzip) {
+            if (typeof opt.gzip !== "object") {
+              opt.gzip = {};
             }
-          };
+            if (this.portable) {
+              opt.gzip.portable = true;
+            }
+            this.zip = new Gzip(opt.gzip);
+          }
+          if (opt.brotli) {
+            if (typeof opt.brotli !== "object") {
+              opt.brotli = {};
+            }
+            this.zip = new BrotliCompress(opt.brotli);
+          }
+          if (!this.zip)
+            throw new Error("impossible");
+          const zip = this.zip;
+          zip.on("data", (chunk) => super.write(chunk));
+          zip.on("end", () => super.end());
+          zip.on("drain", () => this[ONDRAIN2]());
+          this.on("resume", () => zip.resume());
+        } else {
+          this.on("drain", this[ONDRAIN2]);
         }
+        this.noDirRecurse = !!opt.noDirRecurse;
+        this.follow = !!opt.follow;
+        this.noMtime = !!opt.noMtime;
+        if (opt.mtime)
+          this.mtime = opt.mtime;
+        this.filter = typeof opt.filter === "function" ? opt.filter : () => true;
+        this[QUEUE2] = new Yallist();
+        this[JOBS] = 0;
+        this.jobs = Number(opt.jobs) || 4;
+        this[PROCESSING] = false;
+        this[ENDED3] = false;
       }
-      if (process.version.substr(0, 4) === "v0.8") {
-        var legStreams = legacy(fs9);
-        ReadStream = legStreams.ReadStream;
-        WriteStream = legStreams.WriteStream;
+      [WRITE](chunk) {
+        return super.write(chunk);
       }
-      var fs$ReadStream = fs9.ReadStream;
-      if (fs$ReadStream) {
-        ReadStream.prototype = Object.create(fs$ReadStream.prototype);
-        ReadStream.prototype.open = ReadStream$open;
+      add(path16) {
+        this.write(path16);
+        return this;
       }
-      var fs$WriteStream = fs9.WriteStream;
-      if (fs$WriteStream) {
-        WriteStream.prototype = Object.create(fs$WriteStream.prototype);
-        WriteStream.prototype.open = WriteStream$open;
+      //@ts-ignore
+      end(path16) {
+        if (path16) {
+          this.add(path16);
+        }
+        this[ENDED3] = true;
+        this[PROCESS2]();
+        return this;
       }
-      Object.defineProperty(fs9, "ReadStream", {
-        get: function() {
-          return ReadStream;
-        },
-        set: function(val) {
-          ReadStream = val;
-        },
-        enumerable: true,
-        configurable: true
-      });
-      Object.defineProperty(fs9, "WriteStream", {
-        get: function() {
-          return WriteStream;
-        },
-        set: function(val) {
-          WriteStream = val;
-        },
-        enumerable: true,
-        configurable: true
-      });
-      var FileReadStream = ReadStream;
-      Object.defineProperty(fs9, "FileReadStream", {
-        get: function() {
-          return FileReadStream;
-        },
-        set: function(val) {
-          FileReadStream = val;
-        },
-        enumerable: true,
-        configurable: true
-      });
-      var FileWriteStream = WriteStream;
-      Object.defineProperty(fs9, "FileWriteStream", {
-        get: function() {
-          return FileWriteStream;
-        },
-        set: function(val) {
-          FileWriteStream = val;
-        },
-        enumerable: true,
-        configurable: true
-      });
-      function ReadStream(path10, options) {
-        if (this instanceof ReadStream)
-          return fs$ReadStream.apply(this, arguments), this;
-        else
-          return ReadStream.apply(Object.create(ReadStream.prototype), arguments);
+      //@ts-ignore
+      write(path16) {
+        if (this[ENDED3]) {
+          throw new Error("write after end");
+        }
+        if (path16 instanceof ReadEntry) {
+          this[ADDTARENTRY](path16);
+        } else {
+          this[ADDFSENTRY](path16);
+        }
+        return this.flowing;
       }
-      function ReadStream$open() {
-        var that = this;
-        open(that.path, that.flags, that.mode, function(err, fd) {
-          if (err) {
-            if (that.autoClose)
-              that.destroy();
-            that.emit("error", err);
-          } else {
-            that.fd = fd;
-            that.emit("open", fd);
-            that.read();
-          }
-        });
+      [ADDTARENTRY](p) {
+        const absolute = normalizeWindowsPath(import_path14.default.resolve(this.cwd, p.path));
+        if (!this.filter(p.path, p)) {
+          p.resume();
+        } else {
+          const job = new PackJob(p.path, absolute);
+          job.entry = new WriteEntryTar(p, this[ENTRYOPT](job));
+          job.entry.on("end", () => this[JOBDONE](job));
+          this[JOBS] += 1;
+          this[QUEUE2].push(job);
+        }
+        this[PROCESS2]();
       }
-      function WriteStream(path10, options) {
-        if (this instanceof WriteStream)
-          return fs$WriteStream.apply(this, arguments), this;
-        else
-          return WriteStream.apply(Object.create(WriteStream.prototype), arguments);
+      [ADDFSENTRY](p) {
+        const absolute = normalizeWindowsPath(import_path14.default.resolve(this.cwd, p));
+        this[QUEUE2].push(new PackJob(p, absolute));
+        this[PROCESS2]();
       }
-      function WriteStream$open() {
-        var that = this;
-        open(that.path, that.flags, that.mode, function(err, fd) {
-          if (err) {
-            that.destroy();
-            that.emit("error", err);
+      [STAT](job) {
+        job.pending = true;
+        this[JOBS] += 1;
+        const stat2 = this.follow ? "stat" : "lstat";
+        import_fs15.default[stat2](job.absolute, (er, stat3) => {
+          job.pending = false;
+          this[JOBS] -= 1;
+          if (er) {
+            this.emit("error", er);
           } else {
-            that.fd = fd;
-            that.emit("open", fd);
+            this[ONSTAT](job, stat3);
           }
         });
       }
-      function createReadStream(path10, options) {
-        return new fs9.ReadStream(path10, options);
-      }
-      function createWriteStream(path10, options) {
-        return new fs9.WriteStream(path10, options);
-      }
-      var fs$open = fs9.open;
-      fs9.open = open;
-      function open(path10, flags, mode, cb) {
-        if (typeof mode === "function")
-          cb = mode, mode = null;
-        return go$open(path10, flags, mode, cb);
-        function go$open(path11, flags2, mode2, cb2, startTime) {
-          return fs$open(path11, flags2, mode2, function(err, fd) {
-            if (err && (err.code === "EMFILE" || err.code === "ENFILE"))
-              enqueue([go$open, [path11, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]);
-            else {
-              if (typeof cb2 === "function")
-                cb2.apply(this, arguments);
-            }
-          });
-        }
-      }
-      return fs9;
-    }
-    function enqueue(elem) {
-      debug2("ENQUEUE", elem[0].name, elem[1]);
-      fs8[gracefulQueue].push(elem);
-      retry();
-    }
-    var retryTimer;
-    function resetQueue() {
-      var now = Date.now();
-      for (var i = 0; i < fs8[gracefulQueue].length; ++i) {
-        if (fs8[gracefulQueue][i].length > 2) {
-          fs8[gracefulQueue][i][3] = now;
-          fs8[gracefulQueue][i][4] = now;
+      [ONSTAT](job, stat2) {
+        this.statCache.set(job.absolute, stat2);
+        job.stat = stat2;
+        if (!this.filter(job.path, stat2)) {
+          job.ignore = true;
         }
+        this[PROCESS2]();
       }
-      retry();
-    }
-    function retry() {
-      clearTimeout(retryTimer);
-      retryTimer = void 0;
-      if (fs8[gracefulQueue].length === 0)
-        return;
-      var elem = fs8[gracefulQueue].shift();
-      var fn2 = elem[0];
-      var args = elem[1];
-      var err = elem[2];
-      var startTime = elem[3];
-      var lastTime = elem[4];
-      if (startTime === void 0) {
-        debug2("RETRY", fn2.name, args);
-        fn2.apply(null, args);
-      } else if (Date.now() - startTime >= 6e4) {
-        debug2("TIMEOUT", fn2.name, args);
-        var cb = args.pop();
-        if (typeof cb === "function")
-          cb.call(null, err);
-      } else {
-        var sinceAttempt = Date.now() - lastTime;
-        var sinceStart = Math.max(lastTime - startTime, 1);
-        var desiredDelay = Math.min(sinceStart * 1.2, 100);
-        if (sinceAttempt >= desiredDelay) {
-          debug2("RETRY", fn2.name, args);
-          fn2.apply(null, args.concat([startTime]));
-        } else {
-          fs8[gracefulQueue].push(elem);
-        }
+      [READDIR](job) {
+        job.pending = true;
+        this[JOBS] += 1;
+        import_fs15.default.readdir(job.absolute, (er, entries) => {
+          job.pending = false;
+          this[JOBS] -= 1;
+          if (er) {
+            return this.emit("error", er);
+          }
+          this[ONREADDIR](job, entries);
+        });
       }
-      if (retryTimer === void 0) {
-        retryTimer = setTimeout(retry, 0);
+      [ONREADDIR](job, entries) {
+        this.readdirCache.set(job.absolute, entries);
+        job.readdir = entries;
+        this[PROCESS2]();
       }
-    }
-  }
-});
-
-// .yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js
-var require_cmd_shim = __commonJS({
-  ".yarn/cache/@zkochan-cmd-shim-npm-6.0.0-97792a7373-ba1442ba1e.zip/node_modules/@zkochan/cmd-shim/index.js"(exports2, module2) {
-    "use strict";
-    cmdShim2.ifExists = cmdShimIfExists;
-    var util_1 = require("util");
-    var path10 = require("path");
-    var isWindows = require_is_windows();
-    var CMD_EXTENSION = require_cmd_extension();
-    var shebangExpr = /^#!\s*(?:\/usr\/bin\/env(?:\s+-S\s*)?)?\s*([^ \t]+)(.*)$/;
-    var DEFAULT_OPTIONS = {
-      // Create PowerShell file by default if the option hasn't been specified
-      createPwshFile: true,
-      createCmdFile: isWindows(),
-      fs: require_graceful_fs()
-    };
-    var extensionToProgramMap = /* @__PURE__ */ new Map([
-      [".js", "node"],
-      [".cjs", "node"],
-      [".mjs", "node"],
-      [".cmd", "cmd"],
-      [".bat", "cmd"],
-      [".ps1", "pwsh"],
-      [".sh", "sh"]
-    ]);
-    function ingestOptions(opts) {
-      const opts_ = { ...DEFAULT_OPTIONS, ...opts };
-      const fs8 = opts_.fs;
-      opts_.fs_ = {
-        chmod: fs8.chmod ? (0, util_1.promisify)(fs8.chmod) : async () => {
-        },
-        mkdir: (0, util_1.promisify)(fs8.mkdir),
-        readFile: (0, util_1.promisify)(fs8.readFile),
-        stat: (0, util_1.promisify)(fs8.stat),
-        unlink: (0, util_1.promisify)(fs8.unlink),
-        writeFile: (0, util_1.promisify)(fs8.writeFile)
-      };
-      return opts_;
-    }
-    async function cmdShim2(src, to, opts) {
-      const opts_ = ingestOptions(opts);
-      await cmdShim_(src, to, opts_);
-    }
-    function cmdShimIfExists(src, to, opts) {
-      return cmdShim2(src, to, opts).catch(() => {
-      });
-    }
-    function rm(path11, opts) {
-      return opts.fs_.unlink(path11).catch(() => {
-      });
-    }
-    async function cmdShim_(src, to, opts) {
-      const srcRuntimeInfo = await searchScriptRuntime(src, opts);
-      await writeShimsPreCommon(to, opts);
-      return writeAllShims(src, to, srcRuntimeInfo, opts);
-    }
-    function writeShimsPreCommon(target, opts) {
-      return opts.fs_.mkdir(path10.dirname(target), { recursive: true });
-    }
-    function writeAllShims(src, to, srcRuntimeInfo, opts) {
-      const opts_ = ingestOptions(opts);
-      const generatorAndExts = [{ generator: generateShShim, extension: "" }];
-      if (opts_.createCmdFile) {
-        generatorAndExts.push({ generator: generateCmdShim, extension: CMD_EXTENSION });
+      [PROCESS2]() {
+        if (this[PROCESSING]) {
+          return;
+        }
+        this[PROCESSING] = true;
+        for (let w = this[QUEUE2].head; !!w && this[JOBS] < this.jobs; w = w.next) {
+          this[PROCESSJOB](w.value);
+          if (w.value.ignore) {
+            const p = w.next;
+            this[QUEUE2].removeNode(w);
+            w.next = p;
+          }
+        }
+        this[PROCESSING] = false;
+        if (this[ENDED3] && !this[QUEUE2].length && this[JOBS] === 0) {
+          if (this.zip) {
+            this.zip.end(EOF2);
+          } else {
+            super.write(EOF2);
+            super.end();
+          }
+        }
       }
-      if (opts_.createPwshFile) {
-        generatorAndExts.push({ generator: generatePwshShim, extension: ".ps1" });
+      get [CURRENT]() {
+        return this[QUEUE2] && this[QUEUE2].head && this[QUEUE2].head.value;
       }
-      return Promise.all(generatorAndExts.map((generatorAndExt) => writeShim(src, to + generatorAndExt.extension, srcRuntimeInfo, generatorAndExt.generator, opts_)));
-    }
-    function writeShimPre(target, opts) {
-      return rm(target, opts);
-    }
-    function writeShimPost(target, opts) {
-      return chmodShim(target, opts);
-    }
-    async function searchScriptRuntime(target, opts) {
-      try {
-        const data = await opts.fs_.readFile(target, "utf8");
-        const firstLine = data.trim().split(/\r*\n/)[0];
-        const shebang = firstLine.match(shebangExpr);
-        if (!shebang) {
-          const targetExtension = path10.extname(target).toLowerCase();
-          return {
-            // undefined if extension is unknown but it's converted to null.
-            program: extensionToProgramMap.get(targetExtension) || null,
-            additionalArgs: ""
-          };
+      [JOBDONE](_job) {
+        this[QUEUE2].shift();
+        this[JOBS] -= 1;
+        this[PROCESS2]();
+      }
+      [PROCESSJOB](job) {
+        if (job.pending) {
+          return;
         }
-        return {
-          program: shebang[1],
-          additionalArgs: shebang[2]
-        };
-      } catch (err) {
-        if (!isWindows() || err.code !== "ENOENT")
-          throw err;
-        if (await opts.fs_.stat(`${target}${getExeExtension()}`)) {
-          return {
-            program: null,
-            additionalArgs: ""
-          };
+        if (job.entry) {
+          if (job === this[CURRENT] && !job.piped) {
+            this[PIPE](job);
+          }
+          return;
+        }
+        if (!job.stat) {
+          const sc = this.statCache.get(job.absolute);
+          if (sc) {
+            this[ONSTAT](job, sc);
+          } else {
+            this[STAT](job);
+          }
+        }
+        if (!job.stat) {
+          return;
+        }
+        if (job.ignore) {
+          return;
+        }
+        if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {
+          const rc = this.readdirCache.get(job.absolute);
+          if (rc) {
+            this[ONREADDIR](job, rc);
+          } else {
+            this[READDIR](job);
+          }
+          if (!job.readdir) {
+            return;
+          }
+        }
+        job.entry = this[ENTRY](job);
+        if (!job.entry) {
+          job.ignore = true;
+          return;
+        }
+        if (job === this[CURRENT] && !job.piped) {
+          this[PIPE](job);
         }
-        throw err;
-      }
-    }
-    function getExeExtension() {
-      let cmdExtension;
-      if (process.env.PATHEXT) {
-        cmdExtension = process.env.PATHEXT.split(path10.delimiter).find((ext) => ext.toLowerCase() === ".exe");
       }
-      return cmdExtension || ".exe";
-    }
-    async function writeShim(src, to, srcRuntimeInfo, generateShimScript, opts) {
-      const defaultArgs = opts.preserveSymlinks ? "--preserve-symlinks" : "";
-      const args = [srcRuntimeInfo.additionalArgs, defaultArgs].filter((arg) => arg).join(" ");
-      opts = Object.assign({}, opts, {
-        prog: srcRuntimeInfo.program,
-        args
-      });
-      await writeShimPre(to, opts);
-      await opts.fs_.writeFile(to, generateShimScript(src, to, opts), "utf8");
-      return writeShimPost(to, opts);
-    }
-    function generateCmdShim(src, to, opts) {
-      const shTarget = path10.relative(path10.dirname(to), src);
-      let target = shTarget.split("/").join("\\");
-      const quotedPathToTarget = path10.isAbsolute(target) ? `"${target}"` : `"%~dp0\\${target}"`;
-      let longProg;
-      let prog = opts.prog;
-      let args = opts.args || "";
-      const nodePath = normalizePathEnvVar(opts.nodePath).win32;
-      const prependToPath = normalizePathEnvVar(opts.prependToPath).win32;
-      if (!prog) {
-        prog = quotedPathToTarget;
-        args = "";
-        target = "";
-      } else if (prog === "node" && opts.nodeExecPath) {
-        prog = `"${opts.nodeExecPath}"`;
-        target = quotedPathToTarget;
-      } else {
-        longProg = `"%~dp0\\${prog}.exe"`;
-        target = quotedPathToTarget;
+      [ENTRYOPT](job) {
+        return {
+          onwarn: (code2, msg, data) => this.warn(code2, msg, data),
+          noPax: this.noPax,
+          cwd: this.cwd,
+          absolute: job.absolute,
+          preservePaths: this.preservePaths,
+          maxReadSize: this.maxReadSize,
+          strict: this.strict,
+          portable: this.portable,
+          linkCache: this.linkCache,
+          statCache: this.statCache,
+          noMtime: this.noMtime,
+          mtime: this.mtime,
+          prefix: this.prefix
+        };
       }
-      let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
-      let cmd = "@SETLOCAL\r\n";
-      if (prependToPath) {
-        cmd += `@SET "PATH=${prependToPath}:%PATH%"\r
-`;
+      [ENTRY](job) {
+        this[JOBS] += 1;
+        try {
+          const e = new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job));
+          this.onWriteEntry?.(e);
+          return e.on("end", () => this[JOBDONE](job)).on("error", (er) => this.emit("error", er));
+        } catch (er) {
+          this.emit("error", er);
+        }
       }
-      if (nodePath) {
-        cmd += `@IF NOT DEFINED NODE_PATH (\r
-  @SET "NODE_PATH=${nodePath}"\r
-) ELSE (\r
-  @SET "NODE_PATH=${nodePath};%NODE_PATH%"\r
-)\r
-`;
+      [ONDRAIN2]() {
+        if (this[CURRENT] && this[CURRENT].entry) {
+          this[CURRENT].entry.resume();
+        }
       }
-      if (longProg) {
-        cmd += `@IF EXIST ${longProg} (\r
-  ${longProg} ${args} ${target} ${progArgs}%*\r
-) ELSE (\r
-  @SET PATHEXT=%PATHEXT:;.JS;=;%\r
-  ${prog} ${args} ${target} ${progArgs}%*\r
-)\r
-`;
-      } else {
-        cmd += `@${prog} ${args} ${target} ${progArgs}%*\r
-`;
+      // like .pipe() but using super, because our write() is special
+      [PIPE](job) {
+        job.piped = true;
+        if (job.readdir) {
+          job.readdir.forEach((entry) => {
+            const p = job.path;
+            const base = p === "./" ? "" : p.replace(/\/*$/, "/");
+            this[ADDFSENTRY](base + entry);
+          });
+        }
+        const source = job.entry;
+        const zip = this.zip;
+        if (!source)
+          throw new Error("cannot pipe without source");
+        if (zip) {
+          source.on("data", (chunk) => {
+            if (!zip.write(chunk)) {
+              source.pause();
+            }
+          });
+        } else {
+          source.on("data", (chunk) => {
+            if (!super.write(chunk)) {
+              source.pause();
+            }
+          });
+        }
       }
-      return cmd;
-    }
-    function generateShShim(src, to, opts) {
-      let shTarget = path10.relative(path10.dirname(to), src);
-      let shProg = opts.prog && opts.prog.split("\\").join("/");
-      let shLongProg;
-      shTarget = shTarget.split("\\").join("/");
-      const quotedPathToTarget = path10.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`;
-      let args = opts.args || "";
-      const shNodePath = normalizePathEnvVar(opts.nodePath).posix;
-      if (!shProg) {
-        shProg = quotedPathToTarget;
-        args = "";
-        shTarget = "";
-      } else if (opts.prog === "node" && opts.nodeExecPath) {
-        shProg = `"${opts.nodeExecPath}"`;
-        shTarget = quotedPathToTarget;
-      } else {
-        shLongProg = `"$basedir/${opts.prog}"`;
-        shTarget = quotedPathToTarget;
+      pause() {
+        if (this.zip) {
+          this.zip.pause();
+        }
+        return super.pause();
       }
-      let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
-      let sh = `#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
-
-case \`uname\` in
-    *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
-esac
-
-`;
-      if (opts.prependToPath) {
-        sh += `export PATH="${opts.prependToPath}:$PATH"
-`;
+      warn(code2, message, data = {}) {
+        warnMethod(this, code2, message, data);
       }
-      if (shNodePath) {
-        sh += `if [ -z "$NODE_PATH" ]; then
-  export NODE_PATH="${shNodePath}"
-else
-  export NODE_PATH="${shNodePath}:$NODE_PATH"
-fi
-`;
+    };
+    PackSync = class extends Pack {
+      sync = true;
+      constructor(opt) {
+        super(opt);
+        this[WRITEENTRYCLASS] = WriteEntrySync;
       }
-      if (shLongProg) {
-        sh += `if [ -x ${shLongProg} ]; then
-  exec ${shLongProg} ${args} ${shTarget} ${progArgs}"$@"
-else
-  exec ${shProg} ${args} ${shTarget} ${progArgs}"$@"
-fi
-`;
-      } else {
-        sh += `${shProg} ${args} ${shTarget} ${progArgs}"$@"
-exit $?
-`;
+      // pause/resume are no-ops in sync streams.
+      pause() {
       }
-      return sh;
-    }
-    function generatePwshShim(src, to, opts) {
-      let shTarget = path10.relative(path10.dirname(to), src);
-      const shProg = opts.prog && opts.prog.split("\\").join("/");
-      let pwshProg = shProg && `"${shProg}$exe"`;
-      let pwshLongProg;
-      shTarget = shTarget.split("\\").join("/");
-      const quotedPathToTarget = path10.isAbsolute(shTarget) ? `"${shTarget}"` : `"$basedir/${shTarget}"`;
-      let args = opts.args || "";
-      let normalizedNodePathEnvVar = normalizePathEnvVar(opts.nodePath);
-      const nodePath = normalizedNodePathEnvVar.win32;
-      const shNodePath = normalizedNodePathEnvVar.posix;
-      let normalizedPrependPathEnvVar = normalizePathEnvVar(opts.prependToPath);
-      const prependPath = normalizedPrependPathEnvVar.win32;
-      const shPrependPath = normalizedPrependPathEnvVar.posix;
-      if (!pwshProg) {
-        pwshProg = quotedPathToTarget;
-        args = "";
-        shTarget = "";
-      } else if (opts.prog === "node" && opts.nodeExecPath) {
-        pwshProg = `"${opts.nodeExecPath}"`;
-        shTarget = quotedPathToTarget;
-      } else {
-        pwshLongProg = `"$basedir/${opts.prog}$exe"`;
-        shTarget = quotedPathToTarget;
+      resume() {
       }
-      let progArgs = opts.progArgs ? `${opts.progArgs.join(` `)} ` : "";
-      let pwsh = `#!/usr/bin/env pwsh
-$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
-
-$exe=""
-${nodePath || prependPath ? '$pathsep=":"\n' : ""}${nodePath ? `$env_node_path=$env:NODE_PATH
-$new_node_path="${nodePath}"
-` : ""}${prependPath ? `$env_path=$env:PATH
-$prepend_path="${prependPath}"
-` : ""}if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
-  # Fix case when both the Windows and Linux builds of Node
-  # are installed in the same directory
-  $exe=".exe"
-${nodePath || prependPath ? '  $pathsep=";"\n' : ""}}`;
-      if (shNodePath || shPrependPath) {
-        pwsh += ` else {
-${shNodePath ? `  $new_node_path="${shNodePath}"
-` : ""}${shPrependPath ? `  $prepend_path="${shPrependPath}"
-` : ""}}
-`;
+      [STAT](job) {
+        const stat2 = this.follow ? "statSync" : "lstatSync";
+        this[ONSTAT](job, import_fs15.default[stat2](job.absolute));
       }
-      if (shNodePath) {
-        pwsh += `if ([string]::IsNullOrEmpty($env_node_path)) {
-  $env:NODE_PATH=$new_node_path
-} else {
-  $env:NODE_PATH="$new_node_path$pathsep$env_node_path"
-}
-`;
+      [READDIR](job) {
+        this[ONREADDIR](job, import_fs15.default.readdirSync(job.absolute));
       }
-      if (opts.prependToPath) {
-        pwsh += `
-$env:PATH="$prepend_path$pathsep$env:PATH"
-`;
+      // gotta get it all in this tick
+      [PIPE](job) {
+        const source = job.entry;
+        const zip = this.zip;
+        if (job.readdir) {
+          job.readdir.forEach((entry) => {
+            const p = job.path;
+            const base = p === "./" ? "" : p.replace(/\/*$/, "/");
+            this[ADDFSENTRY](base + entry);
+          });
+        }
+        if (!source)
+          throw new Error("Cannot pipe without source");
+        if (zip) {
+          source.on("data", (chunk) => {
+            zip.write(chunk);
+          });
+        } else {
+          source.on("data", (chunk) => {
+            super[WRITE](chunk);
+          });
+        }
       }
-      if (pwshLongProg) {
-        pwsh += `
-$ret=0
-if (Test-Path ${pwshLongProg}) {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args
-  } else {
-    & ${pwshLongProg} ${args} ${shTarget} ${progArgs}$args
-  }
-  $ret=$LASTEXITCODE
-} else {
-  # Support pipeline input
-  if ($MyInvocation.ExpectingInput) {
-    $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
-  } else {
-    & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
+    };
   }
-  $ret=$LASTEXITCODE
-}
-${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$env_path\n" : ""}exit $ret
-`;
-      } else {
-        pwsh += `
-# Support pipeline input
-if ($MyInvocation.ExpectingInput) {
-  $input | & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
-} else {
-  & ${pwshProg} ${args} ${shTarget} ${progArgs}$args
-}
-${nodePath ? "$env:NODE_PATH=$env_node_path\n" : ""}${prependPath ? "$env:PATH=$env_path\n" : ""}exit $LASTEXITCODE
-`;
-      }
-      return pwsh;
-    }
-    function chmodShim(to, opts) {
-      return opts.fs_.chmod(to, 493);
-    }
-    function normalizePathEnvVar(nodePath) {
-      if (!nodePath || !nodePath.length) {
-        return {
-          win32: "",
-          posix: ""
-        };
+});
+
+// .yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/create.js
+var create_exports = {};
+__export(create_exports, {
+  create: () => create
+});
+var import_node_path8, createFileSync, createFile, addFilesSync, addFilesAsync, createSync, createAsync, create;
+var init_create = __esm({
+  ".yarn/cache/tar-npm-7.4.0-2d244f1b3c-f4bab85fd1.zip/node_modules/tar/dist/esm/create.js"() {
+    init_esm2();
+    import_node_path8 = __toESM(require("node:path"), 1);
+    init_list();
+    init_make_command();
+    init_pack();
+    createFileSync = (opt, files) => {
+      const p = new PackSync(opt);
+      const stream = new WriteStreamSync(opt.file, {
+        mode: opt.mode || 438
+      });
+      p.pipe(stream);
+      addFilesSync(p, files);
+    };
+    createFile = (opt, files) => {
+      const p = new Pack(opt);
+      const stream = new WriteStream(opt.file, {
+        mode: opt.mode || 438
+      });
+      p.pipe(stream);
+      const promise = new Promise((res, rej) => {
+        stream.on("error", rej);
+        stream.on("close", res);
+        p.on("error", rej);
+      });
+      addFilesAsync(p, files);
+      return promise;
+    };
+    addFilesSync = (p, files) => {
+      files.forEach((file) => {
+        if (file.charAt(0) === "@") {
+          list({
+            file: import_node_path8.default.resolve(p.cwd, file.slice(1)),
+            sync: true,
+            noResume: true,
+            onReadEntry: (entry) => p.add(entry)
+          });
+        } else {
+          p.add(file);
+        }
+      });
+      p.end();
+    };
+    addFilesAsync = async (p, files) => {
+      for (let i = 0; i < files.length; i++) {
+        const file = String(files[i]);
+        if (file.charAt(0) === "@") {
+          await list({
+            file: import_node_path8.default.resolve(String(p.cwd), file.slice(1)),
+            noResume: true,
+            onReadEntry: (entry) => {
+              p.add(entry);
+            }
+          });
+        } else {
+          p.add(file);
+        }
       }
-      let split = typeof nodePath === "string" ? nodePath.split(path10.delimiter) : Array.from(nodePath);
-      let result = {};
-      for (let i = 0; i < split.length; i++) {
-        const win32 = split[i].split("/").join("\\");
-        const posix = isWindows() ? split[i].split("\\").join("/").replace(/^([^:\\/]*):/, (_, $1) => `/mnt/${$1.toLowerCase()}`) : split[i];
-        result.win32 = result.win32 ? `${result.win32};${win32}` : win32;
-        result.posix = result.posix ? `${result.posix}:${posix}` : posix;
-        result[i] = { win32, posix };
+      p.end();
+    };
+    createSync = (opt, files) => {
+      const p = new PackSync(opt);
+      addFilesSync(p, files);
+      return p;
+    };
+    createAsync = (opt, files) => {
+      const p = new Pack(opt);
+      addFilesAsync(p, files);
+      return p;
+    };
+    create = makeCommand(createFileSync, createFile, createSync, createAsync, (_opt, files) => {
+      if (!files?.length) {
+        throw new TypeError("no paths specified to add to archive");
       }
-      return result;
-    }
-    module2.exports = cmdShim2;
+    });
   }
 });
 
-// .yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/major.js
+// .yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/major.js
 var require_major = __commonJS({
-  ".yarn/cache/semver-npm-7.6.2-0fec6944bb-97d3441e97.zip/node_modules/semver/functions/major.js"(exports2, module2) {
+  ".yarn/cache/semver-npm-7.6.3-57e82c14d5-88f33e148b.zip/node_modules/semver/functions/major.js"(exports2, module2) {
     var SemVer3 = require_semver();
     var major = (a, loose) => new SemVer3(a, loose).major;
     module2.exports = major;
@@ -19632,7 +19604,7 @@ __export(lib_exports2, {
 });
 module.exports = __toCommonJS(lib_exports2);
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/constants.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/constants.mjs
 var NODE_INITIAL = 0;
 var NODE_SUCCESS = 1;
 var NODE_ERRORED = 2;
@@ -19645,7 +19617,7 @@ var BATCH_REGEX = /^-[a-zA-Z]{2,}$/;
 var BINDING_REGEX = /^([^=]+)=([\s\S]*)$/;
 var DEBUG = process.env.DEBUG_CLI === `1`;
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/errors.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/errors.mjs
 var UsageError = class extends Error {
   constructor(message) {
     super(message);
@@ -19714,7 +19686,7 @@ var whileRunning = (input) => `While running ${input.filter((token) => {
   }
 }).join(` `)}`;
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/format.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/format.mjs
 var MAX_LINE_LENGTH = 80;
 var richLine = Array(MAX_LINE_LENGTH).fill(`\u2501`);
 for (let t = 0; t <= 24; ++t)
@@ -19773,7 +19745,7 @@ function formatMarkdownish(text, { format, paragraphs }) {
 ` : ``;
 }
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/options/utils.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/utils.mjs
 var isOptionSymbol = Symbol(`clipanion/isOption`);
 function makeCommandOption(spec) {
   return { ...spec, [isOptionSymbol]: true };
@@ -19791,10 +19763,10 @@ function cleanValidationError(message, { mergeName = false } = {}) {
   const match = message.match(/^([^:]+): (.*)$/m);
   if (!match)
     return `validation failed`;
-  let [, path10, line] = match;
+  let [, path16, line] = match;
   if (mergeName)
     line = line[0].toLowerCase() + line.slice(1);
-  line = path10 !== `.` || !mergeName ? `${path10.replace(/^\.(\[|$)/, `$1`)}: ${line}` : `: ${line}`;
+  line = path16 !== `.` || !mergeName ? `${path16.replace(/^\.(\[|$)/, `$1`)}: ${line}` : `: ${line}`;
   return line;
 }
 function formatError(message, errors) {
@@ -19806,7 +19778,7 @@ ${errors.map((error) => `
 - ${cleanValidationError(error)}`).join(``)}`);
   }
 }
-function applyValidator(name, value, validator) {
+function applyValidator(name2, value, validator) {
   if (typeof validator === `undefined`)
     return value;
   const errors = [];
@@ -19818,13 +19790,13 @@ function applyValidator(name, value, validator) {
   };
   const check = validator(value, { errors, coercions, coercion });
   if (!check)
-    throw formatError(`Invalid value for ${name}`, errors);
+    throw formatError(`Invalid value for ${name2}`, errors);
   for (const [, op] of coercions)
     op();
   return value;
 }
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/Command.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/Command.mjs
 var Command = class {
   constructor() {
     this.help = false;
@@ -19871,7 +19843,7 @@ var Command = class {
 Command.isOption = isOptionSymbol;
 Command.Default = [];
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/core.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/core.mjs
 function debug(str) {
   if (DEBUG) {
     console.log(str);
@@ -20146,7 +20118,7 @@ function selectBestState(input, states) {
   });
   if (terminalStates.length === 0)
     throw new Error();
-  const requiredOptionsSetStates = terminalStates.filter((state) => state.selectedIndex === HELP_COMMAND_INDEX || state.requiredOptions.every((names) => names.some((name) => state.options.find((opt) => opt.name === name))));
+  const requiredOptionsSetStates = terminalStates.filter((state) => state.selectedIndex === HELP_COMMAND_INDEX || state.requiredOptions.every((names) => names.some((name2) => state.options.find((opt) => opt.name === name2))));
   if (requiredOptionsSetStates.length === 0) {
     throw new UnknownSyntaxError(input, terminalStates.map((state) => ({
       usage: state.candidateUsage,
@@ -20245,8 +20217,8 @@ function registerStatic(machine, from, test, to, reducer) {
 }
 function execute(store, callback, state, segment) {
   if (Array.isArray(callback)) {
-    const [name, ...args] = callback;
-    return store[name](state, segment, ...args);
+    const [name2, ...args] = callback;
+    return store[name2](state, segment, ...args);
   } else {
     return store[callback](state, segment);
   }
@@ -20268,18 +20240,18 @@ var tests = {
   isNotOptionLike: (state, segment) => {
     return state.ignoreOptions || segment === `-` || !segment.startsWith(`-`);
   },
-  isOption: (state, segment, name, hidden) => {
-    return !state.ignoreOptions && segment === name;
+  isOption: (state, segment, name2, hidden) => {
+    return !state.ignoreOptions && segment === name2;
   },
   isBatchOption: (state, segment, names) => {
-    return !state.ignoreOptions && BATCH_REGEX.test(segment) && [...segment.slice(1)].every((name) => names.includes(`-${name}`));
+    return !state.ignoreOptions && BATCH_REGEX.test(segment) && [...segment.slice(1)].every((name2) => names.includes(`-${name2}`));
   },
   isBoundOption: (state, segment, names, options) => {
     const optionParsing = segment.match(BINDING_REGEX);
     return !state.ignoreOptions && !!optionParsing && OPTION_REGEX.test(optionParsing[1]) && names.includes(optionParsing[1]) && options.filter((opt) => opt.names.includes(optionParsing[1])).every((opt) => opt.allowBinding);
   },
-  isNegatedOption: (state, segment, name) => {
-    return !state.ignoreOptions && segment === `--no-${name.slice(2)}`;
+  isNegatedOption: (state, segment, name2) => {
+    return !state.ignoreOptions && segment === `--no-${name2.slice(2)}`;
   },
   isHelp: (state, segment) => {
     return !state.ignoreOptions && HELP_REGEX.test(segment);
@@ -20291,8 +20263,8 @@ var tests = {
     return !state.ignoreOptions && segment.startsWith(`-`) && !OPTION_REGEX.test(segment);
   }
 };
-tests.isOption.suggest = (state, name, hidden = true) => {
-  return !hidden ? [name] : null;
+tests.isOption.suggest = (state, name2, hidden = true) => {
+  return !hidden ? [name2] : null;
 };
 var reducers = {
   setCandidateState: (state, segment, candidateState) => {
@@ -20302,11 +20274,11 @@ var reducers = {
     return { ...state, selectedIndex: index };
   },
   pushBatch: (state, segment) => {
-    return { ...state, options: state.options.concat([...segment.slice(1)].map((name) => ({ name: `-${name}`, value: true }))) };
+    return { ...state, options: state.options.concat([...segment.slice(1)].map((name2) => ({ name: `-${name2}`, value: true }))) };
   },
   pushBound: (state, segment) => {
-    const [, name, value] = segment.match(BINDING_REGEX);
-    return { ...state, options: state.options.concat({ name, value }) };
+    const [, name2, value] = segment.match(BINDING_REGEX);
+    return { ...state, options: state.options.concat({ name: name2, value }) };
   },
   pushPath: (state, segment) => {
     return { ...state, path: state.path.concat(segment) };
@@ -20320,11 +20292,11 @@ var reducers = {
   pushExtraNoLimits: (state, segment) => {
     return { ...state, positionals: state.positionals.concat({ value: segment, extra: NoLimits }) };
   },
-  pushTrue: (state, segment, name = segment) => {
+  pushTrue: (state, segment, name2 = segment) => {
     return { ...state, options: state.options.concat({ name: segment, value: true }) };
   },
-  pushFalse: (state, segment, name = segment) => {
-    return { ...state, options: state.options.concat({ name, value: false }) };
+  pushFalse: (state, segment, name2 = segment) => {
+    return { ...state, options: state.options.concat({ name: name2, value: false }) };
   },
   pushUndefined: (state, segment) => {
     return { ...state, options: state.options.concat({ name: segment, value: void 0 }) };
@@ -20380,32 +20352,32 @@ var CommandBuilder = class {
     this.cliIndex = cliIndex;
     this.cliOpts = cliOpts;
   }
-  addPath(path10) {
-    this.paths.push(path10);
+  addPath(path16) {
+    this.paths.push(path16);
   }
   setArity({ leading = this.arity.leading, trailing = this.arity.trailing, extra = this.arity.extra, proxy = this.arity.proxy }) {
     Object.assign(this.arity, { leading, trailing, extra, proxy });
   }
-  addPositional({ name = `arg`, required = true } = {}) {
+  addPositional({ name: name2 = `arg`, required = true } = {}) {
     if (!required && this.arity.extra === NoLimits)
       throw new Error(`Optional parameters cannot be declared when using .rest() or .proxy()`);
     if (!required && this.arity.trailing.length > 0)
       throw new Error(`Optional parameters cannot be declared after the required trailing positional arguments`);
     if (!required && this.arity.extra !== NoLimits) {
-      this.arity.extra.push(name);
+      this.arity.extra.push(name2);
     } else if (this.arity.extra !== NoLimits && this.arity.extra.length === 0) {
-      this.arity.leading.push(name);
+      this.arity.leading.push(name2);
     } else {
-      this.arity.trailing.push(name);
+      this.arity.trailing.push(name2);
     }
   }
-  addRest({ name = `arg`, required = 0 } = {}) {
+  addRest({ name: name2 = `arg`, required = 0 } = {}) {
     if (this.arity.extra === NoLimits)
       throw new Error(`Infinite lists cannot be declared multiple times in the same command`);
     if (this.arity.trailing.length > 0)
       throw new Error(`Infinite lists cannot be declared after the required trailing positional arguments`);
     for (let t = 0; t < required; ++t)
-      this.addPositional({ name });
+      this.addPositional({ name: name2 });
     this.arity.extra = NoLimits;
   }
   addProxy({ required = 0 } = {}) {
@@ -20444,12 +20416,12 @@ var CommandBuilder = class {
           segments.push(required ? `<${definition}>` : `[${definition}]`);
         }
       }
-      segments.push(...this.arity.leading.map((name) => `<${name}>`));
+      segments.push(...this.arity.leading.map((name2) => `<${name2}>`));
       if (this.arity.extra === NoLimits)
         segments.push(`...`);
       else
-        segments.push(...this.arity.extra.map((name) => `[${name}]`));
-      segments.push(...this.arity.trailing.map((name) => `<${name}>`));
+        segments.push(...this.arity.extra.map((name2) => `[${name2}]`));
+      segments.push(...this.arity.trailing.map((name2) => `<${name2}>`));
     }
     const usage = segments.join(` `);
     return { usage, options: detailedOptionList };
@@ -20465,17 +20437,17 @@ var CommandBuilder = class {
     registerStatic(machine, NODE_INITIAL, START_OF_INPUT, firstNode, [`setCandidateState`, { candidateUsage, requiredOptions }]);
     const positionalArgument = this.arity.proxy ? `always` : `isNotOptionLike`;
     const paths = this.paths.length > 0 ? this.paths : [[]];
-    for (const path10 of paths) {
+    for (const path16 of paths) {
       let lastPathNode = firstNode;
-      if (path10.length > 0) {
+      if (path16.length > 0) {
         const optionPathNode = injectNode(machine, makeNode());
         registerShortcut(machine, lastPathNode, optionPathNode);
         this.registerOptions(machine, optionPathNode);
         lastPathNode = optionPathNode;
       }
-      for (let t = 0; t < path10.length; ++t) {
+      for (let t = 0; t < path16.length; ++t) {
         const nextPathNode = injectNode(machine, makeNode());
-        registerStatic(machine, lastPathNode, path10[t], nextPathNode, `pushPath`);
+        registerStatic(machine, lastPathNode, path16[t], nextPathNode, `pushPath`);
         lastPathNode = nextPathNode;
       }
       if (this.arity.leading.length > 0 || !this.arity.proxy) {
@@ -20547,20 +20519,20 @@ var CommandBuilder = class {
     registerDynamic(machine, node, [`isUnsupportedOption`, this.allOptionNames], NODE_ERRORED, [`setError`, `Unsupported option name`]);
     registerDynamic(machine, node, [`isInvalidOption`], NODE_ERRORED, [`setError`, `Invalid option name`]);
     for (const option of this.options) {
-      const longestName = option.names.reduce((longestName2, name) => {
-        return name.length > longestName2.length ? name : longestName2;
+      const longestName = option.names.reduce((longestName2, name2) => {
+        return name2.length > longestName2.length ? name2 : longestName2;
       }, ``);
       if (option.arity === 0) {
-        for (const name of option.names) {
-          registerDynamic(machine, node, [`isOption`, name, option.hidden || name !== longestName], node, `pushTrue`);
-          if (name.startsWith(`--`) && !name.startsWith(`--no-`)) {
-            registerDynamic(machine, node, [`isNegatedOption`, name], node, [`pushFalse`, name]);
+        for (const name2 of option.names) {
+          registerDynamic(machine, node, [`isOption`, name2, option.hidden || name2 !== longestName], node, `pushTrue`);
+          if (name2.startsWith(`--`) && !name2.startsWith(`--no-`)) {
+            registerDynamic(machine, node, [`isNegatedOption`, name2], node, [`pushFalse`, name2]);
           }
         }
       } else {
         let lastNode = injectNode(machine, makeNode());
-        for (const name of option.names)
-          registerDynamic(machine, node, [`isOption`, name, option.hidden || name !== longestName], lastNode, `pushUndefined`);
+        for (const name2 of option.names)
+          registerDynamic(machine, node, [`isOption`, name2, option.hidden || name2 !== longestName], lastNode, `pushUndefined`);
         for (let t = 0; t < option.arity; ++t) {
           const nextNode = injectNode(machine, makeNode());
           registerStatic(machine, lastNode, END_OF_INPUT, NODE_ERRORED, `setOptionArityError`);
@@ -20620,48 +20592,10 @@ var CliBuilder = class _CliBuilder {
   }
 };
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/platform/node.mjs
-var import_tty = __toESM(require("tty"), 1);
-function getDefaultColorDepth() {
-  if (import_tty.default && `getColorDepth` in import_tty.default.WriteStream.prototype)
-    return import_tty.default.WriteStream.prototype.getColorDepth();
-  if (process.env.FORCE_COLOR === `0`)
-    return 1;
-  if (process.env.FORCE_COLOR === `1`)
-    return 8;
-  if (typeof process.stdout !== `undefined` && process.stdout.isTTY)
-    return 8;
-  return 1;
-}
-var gContextStorage;
-function getCaptureActivator(context) {
-  let contextStorage = gContextStorage;
-  if (typeof contextStorage === `undefined`) {
-    if (context.stdout === process.stdout && context.stderr === process.stderr)
-      return null;
-    const { AsyncLocalStorage: LazyAsyncLocalStorage } = require("async_hooks");
-    contextStorage = gContextStorage = new LazyAsyncLocalStorage();
-    const origStdoutWrite = process.stdout._write;
-    process.stdout._write = function(chunk, encoding, cb) {
-      const context2 = contextStorage.getStore();
-      if (typeof context2 === `undefined`)
-        return origStdoutWrite.call(this, chunk, encoding, cb);
-      return context2.stdout.write(chunk, encoding, cb);
-    };
-    const origStderrWrite = process.stderr._write;
-    process.stderr._write = function(chunk, encoding, cb) {
-      const context2 = contextStorage.getStore();
-      if (typeof context2 === `undefined`)
-        return origStderrWrite.call(this, chunk, encoding, cb);
-      return context2.stderr.write(chunk, encoding, cb);
-    };
-  }
-  return (fn2) => {
-    return contextStorage.run(context, fn2);
-  };
-}
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/Cli.mjs
+var import_platform = __toESM(require_node(), 1);
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/HelpCommand.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/HelpCommand.mjs
 var HelpCommand = class _HelpCommand extends Command {
   constructor(contexts) {
     super();
@@ -20711,7 +20645,7 @@ var HelpCommand = class _HelpCommand extends Command {
   }
 };
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/Cli.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/Cli.mjs
 var errorCommandSymbol = Symbol(`clipanion/errorCommand`);
 var Cli = class _Cli {
   constructor({ binaryLabel, binaryName: binaryNameOpt = `...`, binaryVersion, enableCapture = false, enableColors } = {}) {
@@ -20753,8 +20687,8 @@ var Cli = class _Cli {
     const index = builder.cliIndex;
     const paths = (_a = commandClass.paths) !== null && _a !== void 0 ? _a : command.paths;
     if (typeof paths !== `undefined`)
-      for (const path10 of paths)
-        builder.addPath(path10);
+      for (const path16 of paths)
+        builder.addPath(path16);
     this.registrations.set(commandClass, { specs, builder, index });
     for (const [key, { definition }] of specs.entries())
       definition(builder, key);
@@ -20832,7 +20766,7 @@ var Cli = class _Cli {
       run: (input2, subContext) => this.run(input2, { ...context, ...subContext }),
       usage: (command2, opts) => this.usage(command2, opts)
     };
-    const activate = this.enableCapture ? (_b = getCaptureActivator(context)) !== null && _b !== void 0 ? _b : noopCaptureActivator : noopCaptureActivator;
+    const activate = this.enableCapture ? (_b = (0, import_platform.getCaptureActivator)(context)) !== null && _b !== void 0 ? _b : noopCaptureActivator : noopCaptureActivator;
     let exitCode;
     try {
       exitCode = await activate(() => command.validateAndExecute().catch((error) => command.catch(error).then(() => 0)));
@@ -20854,13 +20788,13 @@ var Cli = class _Cli {
     for (const [commandClass, { index }] of this.registrations) {
       if (typeof commandClass.usage === `undefined`)
         continue;
-      const { usage: path10 } = this.getUsageByIndex(index, { detailed: false });
+      const { usage: path16 } = this.getUsageByIndex(index, { detailed: false });
       const { usage, options } = this.getUsageByIndex(index, { detailed: true, inlineOptions: false });
       const category = typeof commandClass.usage.category !== `undefined` ? formatMarkdownish(commandClass.usage.category, { format: this.format(colored), paragraphs: false }) : void 0;
       const description = typeof commandClass.usage.description !== `undefined` ? formatMarkdownish(commandClass.usage.description, { format: this.format(colored), paragraphs: false }) : void 0;
       const details = typeof commandClass.usage.details !== `undefined` ? formatMarkdownish(commandClass.usage.details, { format: this.format(colored), paragraphs: true }) : void 0;
       const examples = typeof commandClass.usage.examples !== `undefined` ? commandClass.usage.examples.map(([label, cli]) => [formatMarkdownish(label, { format: this.format(colored), paragraphs: false }), cli.replace(/\$0/g, this.binaryName)]) : void 0;
-      data.push({ path: path10, usage, category, description, details, examples, options });
+      data.push({ path: path16, usage, category, description, details, examples, options });
     }
     return data;
   }
@@ -20871,7 +20805,7 @@ var Cli = class _Cli {
         const paths = commandClass2.paths;
         const isDocumented = typeof commandClass2.usage !== `undefined`;
         const isExclusivelyDefault = !paths || paths.length === 0 || paths.length === 1 && paths[0].length === 0;
-        const isDefault = isExclusivelyDefault || ((_a = paths === null || paths === void 0 ? void 0 : paths.some((path10) => path10.length === 0)) !== null && _a !== void 0 ? _a : false);
+        const isDefault = isExclusivelyDefault || ((_a = paths === null || paths === void 0 ? void 0 : paths.some((path16) => path16.length === 0)) !== null && _a !== void 0 ? _a : false);
         if (isDefault) {
           if (command) {
             command = null;
@@ -21018,10 +20952,10 @@ var Cli = class _Cli {
     if (!error || typeof error !== `object` || !(`stack` in error))
       error = new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(error)})`);
     let result = ``;
-    let name = error.name.replace(/([a-z])([A-Z])/g, `$1 $2`);
-    if (name === `Error`)
-      name = `Internal Error`;
-    result += `${this.format(colored).error(name)}: ${error.message}
+    let name2 = error.name.replace(/([a-z])([A-Z])/g, `$1 $2`);
+    if (name2 === `Error`)
+      name2 = `Internal Error`;
+    result += `${this.format(colored).error(name2)}: ${error.message}
 `;
     const meta = error.clipanion;
     if (typeof meta !== `undefined`) {
@@ -21057,13 +20991,13 @@ Cli.defaultContext = {
   stdin: process.stdin,
   stdout: process.stdout,
   stderr: process.stderr,
-  colorDepth: getDefaultColorDepth()
+  colorDepth: (0, import_platform.getDefaultColorDepth)()
 };
 function noopCaptureActivator(fn2) {
   return fn2();
 }
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/builtins/index.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/builtins/index.mjs
 var builtins_exports = {};
 __export(builtins_exports, {
   DefinitionsCommand: () => DefinitionsCommand,
@@ -21071,7 +21005,7 @@ __export(builtins_exports, {
   VersionCommand: () => VersionCommand
 });
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/builtins/definitions.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/builtins/definitions.mjs
 var DefinitionsCommand = class extends Command {
   async execute() {
     this.context.stdout.write(`${JSON.stringify(this.cli.definitions(), null, 2)}
@@ -21080,7 +21014,7 @@ var DefinitionsCommand = class extends Command {
 };
 DefinitionsCommand.paths = [[`--clipanion=definitions`]];
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/builtins/help.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/builtins/help.mjs
 var HelpCommand2 = class extends Command {
   async execute() {
     this.context.stdout.write(this.cli.usage());
@@ -21088,7 +21022,7 @@ var HelpCommand2 = class extends Command {
 };
 HelpCommand2.paths = [[`-h`], [`--help`]];
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/builtins/version.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/builtins/version.mjs
 var VersionCommand = class extends Command {
   async execute() {
     var _a;
@@ -21098,7 +21032,7 @@ var VersionCommand = class extends Command {
 };
 VersionCommand.paths = [[`-v`], [`--version`]];
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/options/index.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/index.mjs
 var options_exports = {};
 __export(options_exports, {
   Array: () => Array2,
@@ -21115,7 +21049,7 @@ __export(options_exports, {
   rerouteArguments: () => rerouteArguments
 });
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/options/Array.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Array.mjs
 function Array2(descriptor, initialValueBase, optsBase) {
   const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
   const { arity = 1 } = opts;
@@ -21134,10 +21068,10 @@ function Array2(descriptor, initialValueBase, optsBase) {
     transformer(builder, key, state) {
       let usedName;
       let currentValue = typeof initialValue !== `undefined` ? [...initialValue] : void 0;
-      for (const { name, value } of state.options) {
-        if (!nameSet.has(name))
+      for (const { name: name2, value } of state.options) {
+        if (!nameSet.has(name2))
           continue;
-        usedName = name;
+        usedName = name2;
         currentValue = currentValue !== null && currentValue !== void 0 ? currentValue : [];
         currentValue.push(value);
       }
@@ -21150,7 +21084,7 @@ function Array2(descriptor, initialValueBase, optsBase) {
   });
 }
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/options/Boolean.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Boolean.mjs
 function Boolean2(descriptor, initialValueBase, optsBase) {
   const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
   const optNames = descriptor.split(`,`);
@@ -21168,8 +21102,8 @@ function Boolean2(descriptor, initialValueBase, optsBase) {
     },
     transformer(builer, key, state) {
       let currentValue = initialValue;
-      for (const { name, value } of state.options) {
-        if (!nameSet.has(name))
+      for (const { name: name2, value } of state.options) {
+        if (!nameSet.has(name2))
           continue;
         currentValue = value;
       }
@@ -21178,7 +21112,7 @@ function Boolean2(descriptor, initialValueBase, optsBase) {
   });
 }
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/options/Counter.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Counter.mjs
 function Counter(descriptor, initialValueBase, optsBase) {
   const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
   const optNames = descriptor.split(`,`);
@@ -21196,8 +21130,8 @@ function Counter(descriptor, initialValueBase, optsBase) {
     },
     transformer(builder, key, state) {
       let currentValue = initialValue;
-      for (const { name, value } of state.options) {
-        if (!nameSet.has(name))
+      for (const { name: name2, value } of state.options) {
+        if (!nameSet.has(name2))
           continue;
         currentValue !== null && currentValue !== void 0 ? currentValue : currentValue = 0;
         if (!value) {
@@ -21211,7 +21145,7 @@ function Counter(descriptor, initialValueBase, optsBase) {
   });
 }
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/options/Proxy.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Proxy.mjs
 function Proxy2(opts = {}) {
   return makeCommandOption({
     definition(builder, key) {
@@ -21227,7 +21161,7 @@ function Proxy2(opts = {}) {
   });
 }
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/options/Rest.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/Rest.mjs
 function Rest(opts = {}) {
   return makeCommandOption({
     definition(builder, key) {
@@ -21254,7 +21188,7 @@ function Rest(opts = {}) {
   });
 }
 
-// .yarn/__virtual__/clipanion-virtual-48805df892/0/cache/clipanion-npm-3.2.1-fc9187f56c-6c148bd01a.zip/node_modules/clipanion/lib/advanced/options/String.mjs
+// .yarn/__virtual__/clipanion-virtual-dbbb3cfe27/0/cache/clipanion-patch-1b1b878e9f-a833a30963.zip/node_modules/clipanion/lib/advanced/options/String.mjs
 function StringOption(descriptor, initialValueBase, optsBase) {
   const [initialValue, opts] = rerouteArguments(initialValueBase, optsBase !== null && optsBase !== void 0 ? optsBase : {});
   const { arity = 1 } = opts;
@@ -21277,10 +21211,10 @@ function StringOption(descriptor, initialValueBase, optsBase) {
         usedName = opts.env;
         currentValue = context.env[opts.env];
       }
-      for (const { name, value } of state.options) {
-        if (!nameSet.has(name))
+      for (const { name: name2, value } of state.options) {
+        if (!nameSet.has(name2))
           continue;
-        usedName = name;
+        usedName = name2;
         currentValue = value;
       }
       if (typeof currentValue === `string`) {
@@ -21326,11 +21260,11 @@ function String2(descriptor, ...args) {
 }
 
 // package.json
-var version = "0.29.2";
+var version = "0.29.3";
 
 // sources/Engine.ts
-var import_fs4 = __toESM(require("fs"));
-var import_path4 = __toESM(require("path"));
+var import_fs9 = __toESM(require("fs"));
+var import_path9 = __toESM(require("path"));
 var import_process3 = __toESM(require("process"));
 var import_rcompare = __toESM(require_rcompare());
 var import_valid2 = __toESM(require_valid());
@@ -21516,14 +21450,14 @@ var config_default = {
 
 // sources/corepackUtils.ts
 var import_crypto2 = require("crypto");
-var import_events2 = require("events");
-var import_fs2 = __toESM(require("fs"));
+var import_events4 = require("events");
+var import_fs7 = __toESM(require("fs"));
 var import_module = __toESM(require("module"));
-var import_path2 = __toESM(require("path"));
+var import_path7 = __toESM(require("path"));
 var import_range = __toESM(require_range());
 var import_semver = __toESM(require_semver());
 var import_lt = __toESM(require_lt());
-var import_parse = __toESM(require_parse());
+var import_parse3 = __toESM(require_parse());
 var import_promises = require("timers/promises");
 
 // sources/debugUtils.ts
@@ -21553,10 +21487,10 @@ function getTemporaryFolder(target = (0, import_os.tmpdir)()) {
   while (true) {
     const rnd = Math.random() * 4294967296;
     const hex = rnd.toString(16).padStart(8, `0`);
-    const path10 = (0, import_path.join)(target, `corepack-${import_process.default.pid}-${hex}`);
+    const path16 = (0, import_path.join)(target, `corepack-${import_process.default.pid}-${hex}`);
     try {
-      (0, import_fs.mkdirSync)(path10);
-      return path10;
+      (0, import_fs.mkdirSync)(path16);
+      return path16;
     } catch (error) {
       if (error.code === `EEXIST`) {
         continue;
@@ -21581,7 +21515,7 @@ var DEFAULT_HEADERS = {
   [`Accept`]: `application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8`
 };
 var DEFAULT_NPM_REGISTRY_URL = `https://registry.npmjs.org`;
-async function fetchAsJson2(packageName, version2) {
+async function fetchAsJson2(packageName, version3) {
   const npmRegistryUrl = process.env.COREPACK_NPM_REGISTRY || DEFAULT_NPM_REGISTRY_URL;
   if (process.env.COREPACK_ENABLE_NETWORK === `0`)
     throw new UsageError(`Network access disabled by the environment; can't reach npm repository ${npmRegistryUrl}`);
@@ -21592,15 +21526,15 @@ async function fetchAsJson2(packageName, version2) {
     const encodedCreds = Buffer.from(`${process.env.COREPACK_NPM_USERNAME}:${process.env.COREPACK_NPM_PASSWORD}`, `utf8`).toString(`base64`);
     headers.authorization = `Basic ${encodedCreds}`;
   }
-  return fetchAsJson(`${npmRegistryUrl}/${packageName}${version2 ? `/${version2}` : ``}`, { headers });
+  return fetchAsJson(`${npmRegistryUrl}/${packageName}${version3 ? `/${version3}` : ``}`, { headers });
 }
-function verifySignature({ signatures, integrity, packageName, version: version2 }) {
+function verifySignature({ signatures, integrity, packageName, version: version3 }) {
   const { npm: keys } = process.env.COREPACK_INTEGRITY_KEYS ? JSON.parse(process.env.COREPACK_INTEGRITY_KEYS) : config_default.keys;
   const key = keys.find(({ keyid }) => signatures.some((s) => s.keyid === keyid));
   const signature = signatures.find(({ keyid }) => keyid === key?.keyid);
   if (key == null || signature == null) throw new Error(`Cannot find matching keyid: ${JSON.stringify({ signatures, keys })}`);
   const verifier = (0, import_crypto.createVerify)(`SHA256`);
-  verifier.end(`${packageName}@${version2}:${integrity}`);
+  verifier.end(`${packageName}@${version3}:${integrity}`);
   const valid = verifier.verify(
     `-----BEGIN PUBLIC KEY-----
 ${key.key}
@@ -21614,16 +21548,16 @@ ${key.key}
 }
 async function fetchLatestStableVersion(packageName) {
   const metadata = await fetchAsJson2(packageName, `latest`);
-  const { version: version2, dist: { integrity, signatures } } = metadata;
+  const { version: version3, dist: { integrity, signatures, shasum } } = metadata;
   if (!shouldSkipIntegrityCheck()) {
     verifySignature({
       packageName,
-      version: version2,
+      version: version3,
       integrity,
       signatures
     });
   }
-  return `${version2}+sha512.${Buffer.from(integrity.slice(7), `base64`).toString(`hex`)}`;
+  return `${version3}+${integrity ? `sha512.${Buffer.from(integrity.slice(7), `base64`).toString(`hex`)}` : `sha1.${shasum}`}`;
 }
 async function fetchAvailableTags(packageName) {
   const metadata = await fetchAsJson2(packageName);
@@ -21633,11 +21567,11 @@ async function fetchAvailableVersions(packageName) {
   const metadata = await fetchAsJson2(packageName);
   return Object.keys(metadata.versions);
 }
-async function fetchTarballURLAndSignature(packageName, version2) {
-  const versionMetadata = await fetchAsJson2(packageName, version2);
+async function fetchTarballURLAndSignature(packageName, version3) {
+  const versionMetadata = await fetchAsJson2(packageName, version3);
   const { tarball, signatures, integrity } = versionMetadata.dist;
   if (tarball === void 0 || !tarball.startsWith(`http`))
-    throw new Error(`${packageName}@${version2} does not have a valid tarball.`);
+    throw new Error(`${packageName}@${version3} does not have a valid tarball.`);
   return { tarball, signatures, integrity };
 }
 
@@ -21776,10 +21710,10 @@ async function fetchAvailableVersions2(spec) {
   }
 }
 async function findInstalledVersion(installTarget, descriptor) {
-  const installFolder = import_path2.default.join(installTarget, descriptor.name);
+  const installFolder = import_path7.default.join(installTarget, descriptor.name);
   let cacheDirectory;
   try {
-    cacheDirectory = await import_fs2.default.promises.opendir(installFolder);
+    cacheDirectory = await import_fs7.default.promises.opendir(installFolder);
   } catch (error) {
     if (error.code === `ENOENT`) {
       return null;
@@ -21790,11 +21724,11 @@ async function findInstalledVersion(installTarget, descriptor) {
   const range = new import_range.default(descriptor.range);
   let bestMatch = null;
   let maxSV = void 0;
-  for await (const { name } of cacheDirectory) {
-    if (name.startsWith(`.`))
+  for await (const { name: name2 } of cacheDirectory) {
+    if (name2.startsWith(`.`))
       continue;
-    if (range.test(name) && maxSV?.compare(name) !== 1) {
-      bestMatch = name;
+    if (range.test(name2) && maxSV?.compare(name2) !== 1) {
+      bestMatch = name2;
       maxSV = new import_semver.default(bestMatch);
     }
   }
@@ -21827,29 +21761,29 @@ async function download(installTarget, url, algo, binPath = null) {
   log(`Downloading to ${tmpFolder}`);
   const stream = await fetchUrlStream(url);
   const parsedUrl = new URL(url);
-  const ext = import_path2.default.posix.extname(parsedUrl.pathname);
+  const ext = import_path7.default.posix.extname(parsedUrl.pathname);
   let outputFile = null;
   let sendTo;
   if (ext === `.tgz`) {
-    const { default: tar } = await Promise.resolve().then(() => __toESM(require_tar()));
-    sendTo = tar.x({
+    const { extract: tarX } = await Promise.resolve().then(() => (init_extract(), extract_exports));
+    sendTo = tarX({
       strip: 1,
       cwd: tmpFolder,
-      filter: binPath ? (path10) => {
-        const pos = path10.indexOf(`/`);
-        return pos !== -1 && path10.slice(pos + 1) === binPath;
+      filter: binPath ? (path16) => {
+        const pos2 = path16.indexOf(`/`);
+        return pos2 !== -1 && path16.slice(pos2 + 1) === binPath;
       } : void 0
     });
   } else if (ext === `.js`) {
-    outputFile = import_path2.default.join(tmpFolder, import_path2.default.posix.basename(parsedUrl.pathname));
-    sendTo = import_fs2.default.createWriteStream(outputFile);
+    outputFile = import_path7.default.join(tmpFolder, import_path7.default.posix.basename(parsedUrl.pathname));
+    sendTo = import_fs7.default.createWriteStream(outputFile);
   }
   stream.pipe(sendTo);
   let hash = !binPath ? stream.pipe((0, import_crypto2.createHash)(algo)) : null;
-  await (0, import_events2.once)(sendTo, `finish`);
+  await (0, import_events4.once)(sendTo, `finish`);
   if (binPath) {
-    const downloadedBin = import_path2.default.join(tmpFolder, binPath);
-    outputFile = import_path2.default.join(tmpFolder, import_path2.default.basename(downloadedBin));
+    const downloadedBin = import_path7.default.join(tmpFolder, binPath);
+    outputFile = import_path7.default.join(tmpFolder, import_path7.default.basename(downloadedBin));
     try {
       await renameSafe(downloadedBin, outputFile);
     } catch (err) {
@@ -21857,9 +21791,9 @@ async function download(installTarget, url, algo, binPath = null) {
         throw new Error(`Cannot locate '${binPath}' in downloaded tarball`, { cause: err });
       throw err;
     }
-    const fileStream = import_fs2.default.createReadStream(outputFile);
+    const fileStream = import_fs7.default.createReadStream(outputFile);
     hash = fileStream.pipe((0, import_crypto2.createHash)(algo));
-    await (0, import_events2.once)(fileStream, `close`);
+    await (0, import_events4.once)(fileStream, `close`);
   }
   return {
     tmpFolder,
@@ -21869,14 +21803,14 @@ async function download(installTarget, url, algo, binPath = null) {
 }
 async function installVersion(installTarget, locator, { spec }) {
   const locatorIsASupportedPackageManager = isSupportedPackageManagerLocator(locator);
-  const locatorReference = locatorIsASupportedPackageManager ? (0, import_parse.default)(locator.reference) : parseURLReference(locator);
-  const { version: version2, build } = locatorReference;
-  const installFolder = import_path2.default.join(installTarget, locator.name, version2);
+  const locatorReference = locatorIsASupportedPackageManager ? (0, import_parse3.default)(locator.reference) : parseURLReference(locator);
+  const { version: version3, build } = locatorReference;
+  const installFolder = import_path7.default.join(installTarget, locator.name, version3);
   try {
-    const corepackFile = import_path2.default.join(installFolder, `.corepack`);
-    const corepackContent = await import_fs2.default.promises.readFile(corepackFile, `utf8`);
+    const corepackFile = import_path7.default.join(installFolder, `.corepack`);
+    const corepackContent = await import_fs7.default.promises.readFile(corepackFile, `utf8`);
     const corepackData = JSON.parse(corepackContent);
-    log(`Reusing ${locator.name}@${locator.reference}`);
+    log(`Reusing ${locator.name}@${locator.reference} found in ${installFolder}`);
     return {
       hash: corepackData.hash,
       location: installFolder,
@@ -21892,11 +21826,11 @@ async function installVersion(installTarget, locator, { spec }) {
   let integrity;
   let binPath = null;
   if (locatorIsASupportedPackageManager) {
-    url = spec.url.replace(`{}`, version2);
+    url = spec.url.replace(`{}`, version3);
     if (process.env.COREPACK_NPM_REGISTRY) {
       const registry = getRegistryFromPackageManagerSpec(spec);
       if (registry.type === `npm`) {
-        ({ tarball: url, signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version2));
+        ({ tarball: url, signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version3));
         if (registry.bin) {
           binPath = registry.bin;
         }
@@ -21907,7 +21841,7 @@ async function installVersion(installTarget, locator, { spec }) {
       );
     }
   } else {
-    url = decodeURIComponent(version2);
+    url = decodeURIComponent(version3);
     if (process.env.COREPACK_NPM_REGISTRY && url.startsWith(DEFAULT_NPM_REGISTRY_URL)) {
       url = url.replace(
         DEFAULT_NPM_REGISTRY_URL,
@@ -21915,7 +21849,7 @@ async function installVersion(installTarget, locator, { spec }) {
       );
     }
   }
-  log(`Installing ${locator.name}@${version2} from ${url}`);
+  log(`Installing ${locator.name}@${version3} from ${url}`);
   const algo = build[0] ?? `sha512`;
   const { tmpFolder, outputFile, hash: actualHash } = await download(installTarget, url, algo, binPath);
   let bin;
@@ -21930,7 +21864,7 @@ async function installVersion(installTarget, locator, { spec }) {
     if (locatorIsASupportedPackageManager && isValidBinSpec(spec.bin)) {
       bin = spec.bin;
     } else {
-      const { name: packageName, bin: packageBin } = require(import_path2.default.join(tmpFolder, `package.json`));
+      const { name: packageName, bin: packageBin } = require(import_path7.default.join(tmpFolder, `package.json`));
       if (typeof packageBin === `string`) {
         bin = { [packageName]: packageBin };
       } else if (isValidBinSpec(packageBin)) {
@@ -21944,27 +21878,27 @@ async function installVersion(installTarget, locator, { spec }) {
     const registry = getRegistryFromPackageManagerSpec(spec);
     if (registry.type === `npm` && !registry.bin && !shouldSkipIntegrityCheck()) {
       if (signatures == null || integrity == null)
-        ({ signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version2));
-      verifySignature({ signatures, integrity, packageName: registry.package, version: version2 });
+        ({ signatures, integrity } = await fetchTarballURLAndSignature(registry.package, version3));
+      verifySignature({ signatures, integrity, packageName: registry.package, version: version3 });
       build[1] = Buffer.from(integrity.slice(`sha512-`.length), `base64`).toString(`hex`);
     }
   }
   if (build[1] && actualHash !== build[1])
     throw new Error(`Mismatch hashes. Expected ${build[1]}, got ${actualHash}`);
   const serializedHash = `${algo}.${actualHash}`;
-  await import_fs2.default.promises.writeFile(import_path2.default.join(tmpFolder, `.corepack`), JSON.stringify({
+  await import_fs7.default.promises.writeFile(import_path7.default.join(tmpFolder, `.corepack`), JSON.stringify({
     locator,
     bin,
     hash: serializedHash
   }));
-  await import_fs2.default.promises.mkdir(import_path2.default.dirname(installFolder), { recursive: true });
+  await import_fs7.default.promises.mkdir(import_path7.default.dirname(installFolder), { recursive: true });
   try {
     await renameSafe(tmpFolder, installFolder);
   } catch (err) {
     if (err.code === `ENOTEMPTY` || // On Windows the error code is EPERM so we check if it is a directory
-    err.code === `EPERM` && (await import_fs2.default.promises.stat(installFolder)).isDirectory()) {
+    err.code === `EPERM` && (await import_fs7.default.promises.stat(installFolder)).isDirectory()) {
       log(`Another instance of corepack installed ${locator.name}@${locator.reference}`);
-      await import_fs2.default.promises.rm(tmpFolder, { recursive: true, force: true });
+      await import_fs7.default.promises.rm(tmpFolder, { recursive: true, force: true });
     } else {
       throw err;
     }
@@ -21973,14 +21907,14 @@ async function installVersion(installTarget, locator, { spec }) {
     const lastKnownGood = await getLastKnownGood();
     const defaultVersion = getLastKnownGoodFromFileContent(lastKnownGood, locator.name);
     if (defaultVersion) {
-      const currentDefault = (0, import_parse.default)(defaultVersion);
+      const currentDefault = (0, import_parse3.default)(defaultVersion);
       const downloadedVersion = locatorReference;
       if (currentDefault.major === downloadedVersion.major && (0, import_lt.default)(currentDefault, downloadedVersion)) {
         await activatePackageManager(lastKnownGood, locator);
       }
     }
   }
-  log(`Install finished`);
+  log(`Download and install of ${locator.name}@${locator.reference} is finished`);
   return {
     location: installFolder,
     bin,
@@ -21991,14 +21925,14 @@ async function renameSafe(oldPath, newPath) {
   if (process.platform === `win32`) {
     await renameUnderWindows(oldPath, newPath);
   } else {
-    await import_fs2.default.promises.rename(oldPath, newPath);
+    await import_fs7.default.promises.rename(oldPath, newPath);
   }
 }
 async function renameUnderWindows(oldPath, newPath) {
   const retries = 5;
   for (let i = 0; i < retries; i++) {
     try {
-      await import_fs2.default.promises.rename(oldPath, newPath);
+      await import_fs7.default.promises.rename(oldPath, newPath);
       break;
     } catch (err) {
       if ((err.code === `ENOENT` || err.code === `EPERM`) && i < retries - 1) {
@@ -22014,17 +21948,17 @@ async function runVersion(locator, installSpec, binName, args) {
   let binPath = null;
   const bin = installSpec.bin ?? installSpec.spec.bin;
   if (Array.isArray(bin)) {
-    if (bin.some((name) => name === binName)) {
+    if (bin.some((name2) => name2 === binName)) {
       const parsedUrl = new URL(installSpec.spec.url);
-      const ext = import_path2.default.posix.extname(parsedUrl.pathname);
+      const ext = import_path7.default.posix.extname(parsedUrl.pathname);
       if (ext === `.js`) {
-        binPath = import_path2.default.join(installSpec.location, import_path2.default.posix.basename(parsedUrl.pathname));
+        binPath = import_path7.default.join(installSpec.location, import_path7.default.posix.basename(parsedUrl.pathname));
       }
     }
   } else {
-    for (const [name, dest] of Object.entries(bin)) {
-      if (name === binName) {
-        binPath = import_path2.default.join(installSpec.location, dest);
+    for (const [name2, dest] of Object.entries(bin)) {
+      if (name2 === binName) {
+        binPath = import_path7.default.join(installSpec.location, dest);
         break;
       }
     }
@@ -22033,7 +21967,7 @@ async function runVersion(locator, installSpec, binName, args) {
     throw new Error(`Assertion failed: Unable to locate path for bin '${binName}'`);
   if (locator.name !== `npm` || (0, import_lt.default)(locator.reference, `9.7.0`))
     await Promise.resolve().then(() => __toESM(require_v8_compile_cache()));
-  process.env.COREPACK_ROOT = import_path2.default.dirname(require.resolve("corepack/package.json"));
+  process.env.COREPACK_ROOT = import_path7.default.dirname(require.resolve("corepack/package.json"));
   process.argv = [
     process.execPath,
     binPath,
@@ -22050,18 +21984,18 @@ function shouldSkipIntegrityCheck() {
 // sources/semverUtils.ts
 var import_range2 = __toESM(require_range());
 var import_semver2 = __toESM(require_semver());
-function satisfiesWithPrereleases(version2, range, loose = false) {
+function satisfiesWithPrereleases(version3, range, loose = false) {
   let semverRange;
   try {
     semverRange = new import_range2.default(range, loose);
   } catch (err) {
     return false;
   }
-  if (!version2)
+  if (!version3)
     return false;
   let semverVersion;
   try {
-    semverVersion = new import_semver2.default(version2, semverRange.loose);
+    semverVersion = new import_semver2.default(version3, semverRange.loose);
     if (semverVersion.prerelease) {
       semverVersion.prerelease = [];
     }
@@ -22079,8 +22013,8 @@ function satisfiesWithPrereleases(version2, range, loose = false) {
 }
 
 // sources/specUtils.ts
-var import_fs3 = __toESM(require("fs"));
-var import_path3 = __toESM(require("path"));
+var import_fs8 = __toESM(require("fs"));
+var import_path8 = __toESM(require("path"));
 var import_valid = __toESM(require_valid());
 
 // sources/nodeUtils.ts
@@ -22141,47 +22075,47 @@ function isSupportedPackageManager(value) {
 
 // sources/specUtils.ts
 var nodeModulesRegExp = /[\\/]node_modules[\\/](@[^\\/]*[\\/])?([^@\\/][^\\/]*)$/;
-function parseSpec(raw, source, { enforceExactVersion = true } = {}) {
-  if (typeof raw !== `string`)
+function parseSpec(raw2, source, { enforceExactVersion = true } = {}) {
+  if (typeof raw2 !== `string`)
     throw new UsageError(`Invalid package manager specification in ${source}; expected a string`);
-  const atIndex = raw.indexOf(`@`);
-  if (atIndex === -1 || atIndex === raw.length - 1) {
+  const atIndex = raw2.indexOf(`@`);
+  if (atIndex === -1 || atIndex === raw2.length - 1) {
     if (enforceExactVersion)
-      throw new UsageError(`No version specified for ${raw} in "packageManager" of ${source}`);
-    const name2 = atIndex === -1 ? raw : raw.slice(0, -1);
-    if (!isSupportedPackageManager(name2))
-      throw new UsageError(`Unsupported package manager specification (${name2})`);
+      throw new UsageError(`No version specified for ${raw2} in "packageManager" of ${source}`);
+    const name3 = atIndex === -1 ? raw2 : raw2.slice(0, -1);
+    if (!isSupportedPackageManager(name3))
+      throw new UsageError(`Unsupported package manager specification (${name3})`);
     return {
-      name: name2,
+      name: name3,
       range: `*`
     };
   }
-  const name = raw.slice(0, atIndex);
-  const range = raw.slice(atIndex + 1);
+  const name2 = raw2.slice(0, atIndex);
+  const range = raw2.slice(atIndex + 1);
   const isURL = URL.canParse(range);
   if (!isURL) {
     if (enforceExactVersion && !(0, import_valid.default)(range))
-      throw new UsageError(`Invalid package manager specification in ${source} (${raw}); expected a semver version${enforceExactVersion ? `` : `, range, or tag`}`);
-    if (!isSupportedPackageManager(name)) {
-      throw new UsageError(`Unsupported package manager specification (${raw})`);
+      throw new UsageError(`Invalid package manager specification in ${source} (${raw2}); expected a semver version${enforceExactVersion ? `` : `, range, or tag`}`);
+    if (!isSupportedPackageManager(name2)) {
+      throw new UsageError(`Unsupported package manager specification (${raw2})`);
     }
-  } else if (isSupportedPackageManager(name) && process.env.COREPACK_ENABLE_UNSAFE_CUSTOM_URLS !== `1`) {
-    throw new UsageError(`Illegal use of URL for known package manager. Instead, select a specific version, or set COREPACK_ENABLE_UNSAFE_CUSTOM_URLS=1 in your environment (${raw})`);
+  } else if (isSupportedPackageManager(name2) && process.env.COREPACK_ENABLE_UNSAFE_CUSTOM_URLS !== `1`) {
+    throw new UsageError(`Illegal use of URL for known package manager. Instead, select a specific version, or set COREPACK_ENABLE_UNSAFE_CUSTOM_URLS=1 in your environment (${raw2})`);
   }
   return {
-    name,
+    name: name2,
     range
   };
 }
 async function setLocalPackageManager(cwd, info) {
   const lookup = await loadSpec(cwd);
-  const content = lookup.type !== `NoProject` ? await import_fs3.default.promises.readFile(lookup.target, `utf8`) : ``;
+  const content = lookup.type !== `NoProject` ? await import_fs8.default.promises.readFile(lookup.target, `utf8`) : ``;
   const { data, indent } = readPackageJson(content);
   const previousPackageManager = data.packageManager ?? `unknown`;
   data.packageManager = `${info.locator.name}@${info.locator.reference}`;
   const newContent = normalizeLineEndings(content, `${JSON.stringify(data, null, indent)}
 `);
-  await import_fs3.default.promises.writeFile(lookup.target, newContent, `utf8`);
+  await import_fs8.default.promises.writeFile(lookup.target, newContent, `utf8`);
   return {
     previousPackageManager
   };
@@ -22192,13 +22126,14 @@ async function loadSpec(initialCwd) {
   let selection = null;
   while (nextCwd !== currCwd && (!selection || !selection.data.packageManager)) {
     currCwd = nextCwd;
-    nextCwd = import_path3.default.dirname(currCwd);
+    nextCwd = import_path8.default.dirname(currCwd);
     if (nodeModulesRegExp.test(currCwd))
       continue;
-    const manifestPath = import_path3.default.join(currCwd, `package.json`);
+    const manifestPath = import_path8.default.join(currCwd, `package.json`);
+    log(`Checking ${manifestPath}`);
     let content;
     try {
-      content = await import_fs3.default.promises.readFile(manifestPath, `utf8`);
+      content = await import_fs8.default.promises.readFile(manifestPath, `utf8`);
     } catch (err) {
       if (err?.code === `ENOENT`) continue;
       throw err;
@@ -22209,52 +22144,65 @@ async function loadSpec(initialCwd) {
     } catch {
     }
     if (typeof data !== `object` || data === null)
-      throw new UsageError(`Invalid package.json in ${import_path3.default.relative(initialCwd, manifestPath)}`);
+      throw new UsageError(`Invalid package.json in ${import_path8.default.relative(initialCwd, manifestPath)}`);
     selection = { data, manifestPath };
   }
   if (selection === null)
-    return { type: `NoProject`, target: import_path3.default.join(initialCwd, `package.json`) };
+    return { type: `NoProject`, target: import_path8.default.join(initialCwd, `package.json`) };
   const rawPmSpec = selection.data.packageManager;
   if (typeof rawPmSpec === `undefined`)
     return { type: `NoSpec`, target: selection.manifestPath };
   return {
     type: `Found`,
     target: selection.manifestPath,
-    spec: parseSpec(rawPmSpec, import_path3.default.relative(initialCwd, selection.manifestPath))
+    spec: parseSpec(rawPmSpec, import_path8.default.relative(initialCwd, selection.manifestPath))
   };
 }
 
 // sources/Engine.ts
 function getLastKnownGoodFilePath() {
-  return import_path4.default.join(getCorepackHomeFolder(), `lastKnownGood.json`);
+  const lkg = import_path9.default.join(getCorepackHomeFolder(), `lastKnownGood.json`);
+  log(`LastKnownGood file would be located at ${lkg}`);
+  return lkg;
 }
 async function getLastKnownGood() {
-  let raw;
+  let raw2;
   try {
-    raw = await import_fs4.default.promises.readFile(getLastKnownGoodFilePath(), `utf8`);
+    raw2 = await import_fs9.default.promises.readFile(getLastKnownGoodFilePath(), `utf8`);
   } catch (err) {
-    if (err?.code === `ENOENT`) return {};
+    if (err?.code === `ENOENT`) {
+      log(`No LastKnownGood version found in Corepack home.`);
+      return {};
+    }
     throw err;
   }
   try {
-    const parsed = JSON.parse(raw);
-    if (!parsed) return {};
-    if (typeof parsed !== `object`) return {};
+    const parsed = JSON.parse(raw2);
+    if (!parsed) {
+      log(`Invalid LastKnowGood file in Corepack home (JSON parsable, but falsy)`);
+      return {};
+    }
+    if (typeof parsed !== `object`) {
+      log(`Invalid LastKnowGood file in Corepack home (JSON parsable, but non-object)`);
+      return {};
+    }
     Object.entries(parsed).forEach(([key, value]) => {
       if (typeof value !== `string`) {
+        log(`Ignoring key ${key} in LastKnownGood file as its value is not a string`);
         delete parsed[key];
       }
     });
     return parsed;
   } catch {
+    log(`Invalid LastKnowGood file in Corepack home (maybe not JSON parsable)`);
     return {};
   }
 }
 async function createLastKnownGoodFile(lastKnownGood) {
   const content = `${JSON.stringify(lastKnownGood, null, 2)}
 `;
-  await import_fs4.default.promises.mkdir(getCorepackHomeFolder(), { recursive: true });
-  await import_fs4.default.promises.writeFile(getLastKnownGoodFilePath(), content, `utf8`);
+  await import_fs9.default.promises.mkdir(getCorepackHomeFolder(), { recursive: true });
+  await import_fs9.default.promises.writeFile(getLastKnownGoodFilePath(), content, `utf8`);
 }
 function getLastKnownGoodFromFileContent(lastKnownGood, packageManager) {
   if (Object.hasOwn(lastKnownGood, packageManager))
@@ -22311,20 +22259,20 @@ var Engine = class {
       throw new Error(`Assertion failed: Specified resolution (${locator.reference}) isn't supported by any of ${ranges.join(`, `)}`);
     return definition.ranges[range];
   }
-  getBinariesFor(name) {
+  getBinariesFor(name2) {
     const binNames = /* @__PURE__ */ new Set();
-    for (const rangeDefinition of Object.values(this.config.definitions[name].ranges)) {
+    for (const rangeDefinition of Object.values(this.config.definitions[name2].ranges)) {
       const bins = Array.isArray(rangeDefinition.bin) ? rangeDefinition.bin : Object.keys(rangeDefinition.bin);
-      for (const name2 of bins) {
-        binNames.add(name2);
+      for (const name3 of bins) {
+        binNames.add(name3);
       }
     }
     return binNames;
   }
   async getDefaultDescriptors() {
     const locators = [];
-    for (const name of SupportedPackageManagerSet)
-      locators.push({ name, range: await this.getDefaultVersion(name) });
+    for (const name2 of SupportedPackageManagerSet)
+      locators.push({ name: name2, range: await this.getDefaultVersion(name2) });
     return locators;
   }
   async getDefaultVersion(packageManager) {
@@ -22333,17 +22281,23 @@ var Engine = class {
       throw new UsageError(`This package manager (${packageManager}) isn't supported by this corepack build`);
     const lastKnownGood = await getLastKnownGood();
     const lastKnownGoodForThisPackageManager = getLastKnownGoodFromFileContent(lastKnownGood, packageManager);
-    if (lastKnownGoodForThisPackageManager)
+    if (lastKnownGoodForThisPackageManager) {
+      log(`Search for default version: Found ${packageManager}@${lastKnownGoodForThisPackageManager} in LastKnownGood file`);
       return lastKnownGoodForThisPackageManager;
-    if (import_process3.default.env.COREPACK_DEFAULT_TO_LATEST === `0`)
+    }
+    if (import_process3.default.env.COREPACK_DEFAULT_TO_LATEST === `0`) {
+      log(`Search for default version: As defined in environment, defaulting to internal config ${packageManager}@${definition.default}`);
       return definition.default;
+    }
     const reference = await fetchLatestStableVersion2(definition.fetchLatestFrom);
+    log(`Search for default version: found in remote registry ${packageManager}@${reference}`);
     try {
       await activatePackageManager(lastKnownGood, {
         name: packageManager,
         reference
       });
     } catch {
+      log(`Search for default version: could not activate registry version`);
     }
     return reference;
   }
@@ -22394,6 +22348,7 @@ var Engine = class {
       const result = await loadSpec(initialCwd);
       switch (result.type) {
         case `NoProject`:
+          log(`Falling back to ${fallbackDescriptor.name}@${fallbackDescriptor.range} as no project manifest were found`);
           return fallbackDescriptor;
         case `NoSpec`: {
           if (import_process3.default.env.COREPACK_ENABLE_AUTO_PIN !== `0`) {
@@ -22404,18 +22359,21 @@ var Engine = class {
             console.error(`! The local project doesn't define a 'packageManager' field. Corepack will now add one referencing ${installSpec.locator.name}@${installSpec.locator.reference}.`);
             console.error(`! For more details about this field, consult the documentation at https://nodejs.org/api/packages.html#packagemanager`);
             console.error();
-            await setLocalPackageManager(import_path4.default.dirname(result.target), installSpec);
+            await setLocalPackageManager(import_path9.default.dirname(result.target), installSpec);
           }
+          log(`Falling back to ${fallbackDescriptor.name}@${fallbackDescriptor.range} in the absence of "packageManage" field in ${result.target}`);
           return fallbackDescriptor;
         }
         case `Found`: {
           if (result.spec.name !== locator.name) {
             if (transparent) {
+              log(`Falling back to ${fallbackDescriptor.name}@${fallbackDescriptor.range} in a ${result.spec.name}@${result.spec.range} project`);
               return fallbackDescriptor;
             } else {
               throw new UsageError(`This project is configured to use ${result.spec.name} because ${result.target} has a "packageManager" field`);
             }
           } else {
+            log(`Using ${result.spec.name}@${result.spec.range} as defined in project manifest ${result.target}`);
             return result.spec;
           }
         }
@@ -22489,7 +22447,7 @@ var Engine = class {
       const packageManagerSpec = definition.ranges[range];
       const registry = getRegistryFromPackageManagerSpec(packageManagerSpec);
       const versions2 = await fetchAvailableVersions2(registry);
-      return versions2.filter((version2) => satisfiesWithPrereleases(version2, finalDescriptor.range));
+      return versions2.filter((version3) => satisfiesWithPrereleases(version3, finalDescriptor.range));
     }));
     const highestVersion = [...new Set(versions.flat())].sort(import_rcompare.default);
     if (highestVersion.length === 0)
@@ -22499,7 +22457,7 @@ var Engine = class {
 };
 
 // sources/commands/Cache.ts
-var import_fs5 = __toESM(require("fs"));
+var import_fs10 = __toESM(require("fs"));
 var CacheCommand = class extends Command {
   static paths = [
     [`cache`, `clean`],
@@ -22512,13 +22470,13 @@ var CacheCommand = class extends Command {
     `
   });
   async execute() {
-    await import_fs5.default.promises.rm(getInstallFolder(), { recursive: true, force: true });
+    await import_fs10.default.promises.rm(getInstallFolder(), { recursive: true, force: true });
   }
 };
 
 // sources/commands/Disable.ts
-var import_fs6 = __toESM(require("fs"));
-var import_path5 = __toESM(require("path"));
+var import_fs11 = __toESM(require("fs"));
+var import_path10 = __toESM(require("path"));
 var import_which = __toESM(require_lib());
 var DisableCommand = class extends Command {
   static paths = [
@@ -22549,22 +22507,22 @@ var DisableCommand = class extends Command {
   async execute() {
     let installDirectory = this.installDirectory;
     if (typeof installDirectory === `undefined`)
-      installDirectory = import_path5.default.dirname(await (0, import_which.default)(`corepack`));
+      installDirectory = import_path10.default.dirname(await (0, import_which.default)(`corepack`));
     const names = this.names.length === 0 ? SupportedPackageManagerSetWithoutNpm : this.names;
     const allBinNames = [];
-    for (const name of new Set(names)) {
-      if (!isSupportedPackageManager(name))
-        throw new UsageError(`Invalid package manager name '${name}'`);
-      const binNames = this.context.engine.getBinariesFor(name);
+    for (const name2 of new Set(names)) {
+      if (!isSupportedPackageManager(name2))
+        throw new UsageError(`Invalid package manager name '${name2}'`);
+      const binNames = this.context.engine.getBinariesFor(name2);
       allBinNames.push(...binNames);
     }
     const removeLink = process.platform === `win32` ? (binName) => this.removeWin32Link(installDirectory, binName) : (binName) => this.removePosixLink(installDirectory, binName);
     await Promise.all(allBinNames.map(removeLink));
   }
   async removePosixLink(installDirectory, binName) {
-    const file = import_path5.default.join(installDirectory, binName);
+    const file = import_path10.default.join(installDirectory, binName);
     try {
-      await import_fs6.default.promises.unlink(file);
+      await import_fs11.default.promises.unlink(file);
     } catch (err) {
       if (err.code !== `ENOENT`) {
         throw err;
@@ -22573,9 +22531,9 @@ var DisableCommand = class extends Command {
   }
   async removeWin32Link(installDirectory, binName) {
     for (const ext of [``, `.ps1`, `.cmd`]) {
-      const file = import_path5.default.join(installDirectory, `${binName}${ext}`);
+      const file = import_path10.default.join(installDirectory, `${binName}${ext}`);
       try {
-        await import_fs6.default.promises.unlink(file);
+        await import_fs11.default.promises.unlink(file);
       } catch (err) {
         if (err.code !== `ENOENT`) {
           throw err;
@@ -22587,8 +22545,8 @@ var DisableCommand = class extends Command {
 
 // sources/commands/Enable.ts
 var import_cmd_shim = __toESM(require_cmd_shim());
-var import_fs7 = __toESM(require("fs"));
-var import_path6 = __toESM(require("path"));
+var import_fs12 = __toESM(require("fs"));
+var import_path11 = __toESM(require("path"));
 var import_which2 = __toESM(require_lib());
 var EnableCommand = class extends Command {
   static paths = [
@@ -22619,47 +22577,47 @@ var EnableCommand = class extends Command {
   async execute() {
     let installDirectory = this.installDirectory;
     if (typeof installDirectory === `undefined`)
-      installDirectory = import_path6.default.dirname(await (0, import_which2.default)(`corepack`));
-    installDirectory = import_fs7.default.realpathSync(installDirectory);
+      installDirectory = import_path11.default.dirname(await (0, import_which2.default)(`corepack`));
+    installDirectory = import_fs12.default.realpathSync(installDirectory);
     const manifestPath = require.resolve("corepack/package.json");
-    const distFolder = import_path6.default.join(import_path6.default.dirname(manifestPath), `dist`);
-    if (!import_fs7.default.existsSync(distFolder))
+    const distFolder = import_path11.default.join(import_path11.default.dirname(manifestPath), `dist`);
+    if (!import_fs12.default.existsSync(distFolder))
       throw new Error(`Assertion failed: The stub folder doesn't exist`);
     const names = this.names.length === 0 ? SupportedPackageManagerSetWithoutNpm : this.names;
     const allBinNames = [];
-    for (const name of new Set(names)) {
-      if (!isSupportedPackageManager(name))
-        throw new UsageError(`Invalid package manager name '${name}'`);
-      const binNames = this.context.engine.getBinariesFor(name);
+    for (const name2 of new Set(names)) {
+      if (!isSupportedPackageManager(name2))
+        throw new UsageError(`Invalid package manager name '${name2}'`);
+      const binNames = this.context.engine.getBinariesFor(name2);
       allBinNames.push(...binNames);
     }
     const generateLink = process.platform === `win32` ? (binName) => this.generateWin32Link(installDirectory, distFolder, binName) : (binName) => this.generatePosixLink(installDirectory, distFolder, binName);
     await Promise.all(allBinNames.map(generateLink));
   }
   async generatePosixLink(installDirectory, distFolder, binName) {
-    const file = import_path6.default.join(installDirectory, binName);
-    const symlink = import_path6.default.relative(installDirectory, import_path6.default.join(distFolder, `${binName}.js`));
-    if (import_fs7.default.existsSync(file)) {
-      const currentSymlink = await import_fs7.default.promises.readlink(file);
+    const file = import_path11.default.join(installDirectory, binName);
+    const symlink = import_path11.default.relative(installDirectory, import_path11.default.join(distFolder, `${binName}.js`));
+    if (import_fs12.default.existsSync(file)) {
+      const currentSymlink = await import_fs12.default.promises.readlink(file);
       if (currentSymlink !== symlink) {
-        await import_fs7.default.promises.unlink(file);
+        await import_fs12.default.promises.unlink(file);
       } else {
         return;
       }
     }
-    await import_fs7.default.promises.symlink(symlink, file);
+    await import_fs12.default.promises.symlink(symlink, file);
   }
   async generateWin32Link(installDirectory, distFolder, binName) {
-    const file = import_path6.default.join(installDirectory, binName);
-    await (0, import_cmd_shim.default)(import_path6.default.join(distFolder, `${binName}.js`), file, {
+    const file = import_path11.default.join(installDirectory, binName);
+    await (0, import_cmd_shim.default)(import_path11.default.join(distFolder, `${binName}.js`), file, {
       createCmdFile: true
     });
   }
 };
 
 // sources/commands/InstallGlobal.ts
-var import_fs8 = __toESM(require("fs"));
-var import_path7 = __toESM(require("path"));
+var import_fs13 = __toESM(require("fs"));
+var import_path12 = __toESM(require("path"));
 
 // sources/commands/Base.ts
 var BaseCommand = class extends Command {
@@ -22726,7 +22684,7 @@ var InstallGlobalCommand = class extends BaseCommand {
       throw new UsageError(`No package managers specified`);
     await Promise.all(this.args.map((arg) => {
       if (arg.endsWith(`.tgz`)) {
-        return this.installFromTarball(import_path7.default.resolve(this.context.cwd, arg));
+        return this.installFromTarball(import_path12.default.resolve(this.context.cwd, arg));
       } else {
         return this.installFromDescriptor(parseSpec(arg, `CLI arguments`, { enforceExactVersion: false }));
       }
@@ -22754,9 +22712,9 @@ var InstallGlobalCommand = class extends BaseCommand {
   async installFromTarball(p) {
     const installFolder = getInstallFolder();
     const archiveEntries = /* @__PURE__ */ new Map();
-    const { default: tar } = await Promise.resolve().then(() => __toESM(require_tar()));
+    const { list: tarT } = await Promise.resolve().then(() => (init_list(), list_exports));
     let hasShortEntries = false;
-    await tar.t({ file: p, onentry: (entry) => {
+    await tarT({ file: p, onentry: (entry) => {
       const segments = entry.path.split(/\//g);
       if (segments.length > 0 && segments[segments.length - 1] !== `.corepack`)
         return;
@@ -22771,15 +22729,16 @@ var InstallGlobalCommand = class extends BaseCommand {
     } });
     if (hasShortEntries || archiveEntries.size < 1)
       throw new UsageError(`Invalid archive format; did it get generated by 'corepack pack'?`);
-    for (const [name, references] of archiveEntries) {
+    const { extract: tarX } = await Promise.resolve().then(() => (init_extract(), extract_exports));
+    for (const [name2, references] of archiveEntries) {
       for (const reference of references) {
-        if (!isSupportedPackageManager(name))
-          throw new UsageError(`Unsupported package manager '${name}'`);
-        this.log({ name, reference });
-        await import_fs8.default.promises.mkdir(installFolder, { recursive: true });
-        await tar.x({ file: p, cwd: installFolder }, [`${name}/${reference}`]);
+        if (!isSupportedPackageManager(name2))
+          throw new UsageError(`Unsupported package manager '${name2}'`);
+        this.log({ name: name2, reference });
+        await import_fs13.default.promises.mkdir(installFolder, { recursive: true });
+        await tarX({ file: p, cwd: installFolder }, [`${name2}/${reference}`]);
         if (!this.cacheOnly) {
-          await this.context.engine.activatePackageManager({ name, reference });
+          await this.context.engine.activatePackageManager({ name: name2, reference });
         }
       }
     }
@@ -22816,7 +22775,7 @@ var InstallLocalCommand = class extends BaseCommand {
 
 // sources/commands/Pack.ts
 var import_promises2 = require("fs/promises");
-var import_path8 = __toESM(require("path"));
+var import_path15 = __toESM(require("path"));
 var PackCommand = class extends BaseCommand {
   static paths = [
     [`pack`]
@@ -22857,17 +22816,17 @@ var PackCommand = class extends BaseCommand {
       installLocations.push(packageManagerInfo.location);
     }
     const baseInstallFolder = getInstallFolder();
-    const outputPath = import_path8.default.resolve(this.context.cwd, this.output ?? `corepack.tgz`);
+    const outputPath = import_path15.default.resolve(this.context.cwd, this.output ?? `corepack.tgz`);
     if (!this.json) {
       this.context.stdout.write(`
 `);
-      this.context.stdout.write(`Packing the selected tools in ${import_path8.default.basename(outputPath)}...
+      this.context.stdout.write(`Packing the selected tools in ${import_path15.default.basename(outputPath)}...
 `);
     }
-    const { default: tar } = await Promise.resolve().then(() => __toESM(require_tar()));
+    const { create: tarC } = await Promise.resolve().then(() => (init_create(), create_exports));
     await (0, import_promises2.mkdir)(baseInstallFolder, { recursive: true });
-    await tar.c({ gzip: true, cwd: baseInstallFolder, file: import_path8.default.resolve(outputPath) }, installLocations.map((location) => {
-      return import_path8.default.relative(baseInstallFolder, location);
+    await tarC({ gzip: true, cwd: baseInstallFolder, file: import_path15.default.resolve(outputPath) }, installLocations.map((location) => {
+      return import_path15.default.relative(baseInstallFolder, location);
     }));
     if (this.json) {
       this.context.stdout.write(`${JSON.stringify(outputPath)}
@@ -22959,7 +22918,7 @@ var UseCommand = class extends BaseCommand {
 
 // sources/commands/deprecated/Hydrate.ts
 var import_promises3 = require("fs/promises");
-var import_path9 = __toESM(require("path"));
+var import_path16 = __toESM(require("path"));
 var HydrateCommand = class extends Command {
   static paths = [
     [`hydrate`]
@@ -22970,11 +22929,11 @@ var HydrateCommand = class extends Command {
   fileName = options_exports.String();
   async execute() {
     const installFolder = getInstallFolder();
-    const fileName = import_path9.default.resolve(this.context.cwd, this.fileName);
+    const fileName = import_path16.default.resolve(this.context.cwd, this.fileName);
     const archiveEntries = /* @__PURE__ */ new Map();
     let hasShortEntries = false;
-    const { default: tar } = await Promise.resolve().then(() => __toESM(require_tar()));
-    await tar.t({ file: fileName, onentry: (entry) => {
+    const { list: tarT } = await Promise.resolve().then(() => (init_list(), list_exports));
+    await tarT({ file: fileName, onentry: (entry) => {
       const segments = entry.path.split(/\//g);
       if (segments.length < 3) {
         hasShortEntries = true;
@@ -22987,20 +22946,21 @@ var HydrateCommand = class extends Command {
     } });
     if (hasShortEntries || archiveEntries.size < 1)
       throw new UsageError(`Invalid archive format; did it get generated by 'corepack prepare'?`);
-    for (const [name, references] of archiveEntries) {
+    const { extract: tarX } = await Promise.resolve().then(() => (init_extract(), extract_exports));
+    for (const [name2, references] of archiveEntries) {
       for (const reference of references) {
-        if (!isSupportedPackageManager(name))
-          throw new UsageError(`Unsupported package manager '${name}'`);
+        if (!isSupportedPackageManager(name2))
+          throw new UsageError(`Unsupported package manager '${name2}'`);
         if (this.activate)
-          this.context.stdout.write(`Hydrating ${name}@${reference} for immediate activation...
+          this.context.stdout.write(`Hydrating ${name2}@${reference} for immediate activation...
 `);
         else
-          this.context.stdout.write(`Hydrating ${name}@${reference}...
+          this.context.stdout.write(`Hydrating ${name2}@${reference}...
 `);
         await (0, import_promises3.mkdir)(installFolder, { recursive: true });
-        await tar.x({ file: fileName, cwd: installFolder }, [`${name}/${reference}`]);
+        await tarX({ file: fileName, cwd: installFolder }, [`${name2}/${reference}`]);
         if (this.activate) {
-          await this.context.engine.activatePackageManager({ name, reference });
+          await this.context.engine.activatePackageManager({ name: name2, reference });
         }
       }
     }
@@ -23011,7 +22971,7 @@ var HydrateCommand = class extends Command {
 
 // sources/commands/deprecated/Prepare.ts
 var import_promises4 = require("fs/promises");
-var import_path10 = __toESM(require("path"));
+var import_path17 = __toESM(require("path"));
 var PrepareCommand = class extends Command {
   static paths = [
     [`prepare`]
@@ -23065,14 +23025,14 @@ var PrepareCommand = class extends Command {
     if (this.output) {
       const outputName = typeof this.output === `string` ? this.output : `corepack.tgz`;
       const baseInstallFolder = getInstallFolder();
-      const outputPath = import_path10.default.resolve(this.context.cwd, outputName);
+      const outputPath = import_path17.default.resolve(this.context.cwd, outputName);
       if (!this.json)
-        this.context.stdout.write(`Packing the selected tools in ${import_path10.default.basename(outputPath)}...
+        this.context.stdout.write(`Packing the selected tools in ${import_path17.default.basename(outputPath)}...
 `);
-      const { default: tar } = await Promise.resolve().then(() => __toESM(require_tar()));
+      const { create: tarC } = await Promise.resolve().then(() => (init_create(), create_exports));
       await (0, import_promises4.mkdir)(baseInstallFolder, { recursive: true });
-      await tar.c({ gzip: true, cwd: baseInstallFolder, file: import_path10.default.resolve(outputPath) }, installLocations.map((location) => {
-        return import_path10.default.relative(baseInstallFolder, location);
+      await tarC({ gzip: true, cwd: baseInstallFolder, file: import_path17.default.resolve(outputPath) }, installLocations.map((location) => {
+        return import_path17.default.relative(baseInstallFolder, location);
       }));
       if (this.json) {
         this.context.stdout.write(`${JSON.stringify(outputPath)}
@@ -23128,9 +23088,9 @@ async function runMain(argv) {
       cwd: process.cwd(),
       engine
     };
-    const code = await cli.run(argv, context);
-    if (code !== 0) {
-      process.exitCode ??= code;
+    const code2 = await cli.run(argv, context);
+    if (code2 !== 0) {
+      process.exitCode ??= code2;
     }
   } else {
     await engine.executePackageManagerRequest(request, {
diff --git a/deps/corepack/package.json b/deps/corepack/package.json
index 82dffa34405c23..04a12cdc80d95d 100644
--- a/deps/corepack/package.json
+++ b/deps/corepack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "corepack",
-  "version": "0.29.2",
+  "version": "0.29.3",
   "homepage": "https://github.com/nodejs/corepack#readme",
   "bugs": {
     "url": "https://github.com/nodejs/corepack/issues"
@@ -18,35 +18,28 @@
   "license": "MIT",
   "packageManager": "yarn@4.3.1+sha224.934d21773e22af4b69a7032a2d3b4cb38c1f7c019624777cc9916b23",
   "devDependencies": {
-    "@babel/core": "^7.14.3",
-    "@babel/plugin-transform-modules-commonjs": "^7.14.0",
-    "@babel/preset-typescript": "^7.13.0",
-    "@jest/globals": "^29.0.0",
     "@types/debug": "^4.1.5",
-    "@types/jest": "^29.0.0",
     "@types/node": "^20.4.6",
     "@types/proxy-from-env": "^1",
     "@types/semver": "^7.1.0",
-    "@types/tar": "^6.0.0",
     "@types/which": "^3.0.0",
     "@yarnpkg/eslint-config": "^2.0.0",
     "@yarnpkg/fslib": "^3.0.0-rc.48",
     "@zkochan/cmd-shim": "^6.0.0",
-    "babel-plugin-dynamic-import-node": "^2.3.3",
     "better-sqlite3": "^10.0.0",
-    "clipanion": "^3.0.1",
+    "clipanion": "patch:clipanion@npm%3A3.2.1#~/.yarn/patches/clipanion-npm-3.2.1-fc9187f56c.patch",
     "debug": "^4.1.1",
     "esbuild": "^0.21.0",
     "eslint": "^8.57.0",
-    "jest": "^29.0.0",
     "proxy-from-env": "^1.1.0",
-    "semver": "^7.5.2",
+    "semver": "^7.6.3",
     "supports-color": "^9.0.0",
-    "tar": "^6.2.1",
+    "tar": "^7.4.0",
     "tsx": "^4.16.2",
     "typescript": "^5.3.3",
     "undici": "^6.19.2",
     "v8-compile-cache": "^2.3.0",
+    "vitest": "^2.0.3",
     "which": "^4.0.0"
   },
   "resolutions": {
@@ -62,7 +55,7 @@
     "postpack": "run clean",
     "rimraf": "node -e 'for(let i=2;i
Date: Mon, 5 Aug 2024 16:07:42 +0100
Subject: [PATCH 41/76] doc: move release key for Myles Borins
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Myles has stepped down as a releaser. Move his key in `README.md`
to the "Other keys used to sign some previous releases" section.

PR-URL: https://github.com/nodejs/node/pull/54059
Refs: https://github.com/nodejs/Release/pull/1024
Refs: https://github.com/nodejs/Release/blob/main/GOVERNANCE.md#offboarding-releasers
Reviewed-By: Moshe Atlow 
Reviewed-By: Yagiz Nizipli 
Reviewed-By: Luigi Pinca 
Reviewed-By: Marco Ippolito 
Reviewed-By: Ulises Gascón 
---
 README.md | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index d9d87c7c7860f4..6faefe829f0034 100644
--- a/README.md
+++ b/README.md
@@ -751,8 +751,6 @@ Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys):
   `CC68F5A3106FF448322E48ED27F5E38D5B0A215F`
 * **Michaël Zasso** <>
   `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600`
-* **Myles Borins** <>
-  `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8`
 * **Rafael Gonzaga** <>
   `890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4`
 * **Richard Lau** <>
@@ -773,7 +771,6 @@ gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A8
 gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda
 gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito
 gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso
-gpg --keyserver hkps://keys.openpgp.org --recv-keys C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 # Myles Borins
 gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga
 gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau
 gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno
@@ -809,6 +806,8 @@ verify a downloaded file.
   `61FC681DFB92A079F1685E77973F295594EC4689`
 * **Julien Gilli** <>
   `114F43EE0176B71C7BC219DD50A3051F888C628D`
+* **Myles Borins** <>
+  `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8`
 * **Rod Vagg** <>
   `DD8F2338BAE7501E3DD5AC78C273792F7D83545D`
 * **Ruben Bridgewater** <>

From c60c6630afa129619b69d4c653b2310bbad15fb6 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Mon, 12 Aug 2024 15:14:08 +0000
Subject: [PATCH 42/76] deps: upgrade openssl sources to
 quictls/openssl-3.0.14+quic1

PR-URL: https://github.com/nodejs/node/pull/54336
Reviewed-By: Richard Lau 
Reviewed-By: Rafael Gonzaga 
Reviewed-By: Marco Ippolito 
---
 deps/openssl/openssl/CHANGES.md               |  71 ++-
 deps/openssl/openssl/CONTRIBUTING.md          |   6 +-
 .../openssl/Configurations/10-main.conf       |   9 +-
 .../openssl/Configurations/15-ios.conf        |   6 +-
 .../openssl/Configurations/unix-Makefile.tmpl |  14 +-
 deps/openssl/openssl/Configure                |   3 +-
 deps/openssl/openssl/FAQ.md                   |   6 -
 deps/openssl/openssl/INSTALL.md               |   9 +-
 deps/openssl/openssl/NEWS.md                  |  15 +
 deps/openssl/openssl/NOTES-NONSTOP.md         |   5 +-
 deps/openssl/openssl/VERSION.dat              |   4 +-
 deps/openssl/openssl/apps/lib/s_cb.c          |   8 +-
 deps/openssl/openssl/apps/list.c              |   3 +-
 deps/openssl/openssl/apps/ocsp.c              |   4 +-
 deps/openssl/openssl/apps/pkcs12.c            |  16 +-
 deps/openssl/openssl/apps/req.c               |   2 +-
 deps/openssl/openssl/apps/speed.c             |   6 +-
 deps/openssl/openssl/apps/ts.c                |  11 +-
 deps/openssl/openssl/crypto/aes/build.info    |   2 +-
 deps/openssl/openssl/crypto/bio/bio_lib.c     |  10 +-
 deps/openssl/openssl/crypto/bio/bio_sock.c    |   6 +-
 deps/openssl/openssl/crypto/bn/bn_lib.c       |  53 ++-
 deps/openssl/openssl/crypto/bn/bn_rand.c      | 166 +++++--
 deps/openssl/openssl/crypto/bn/bn_shift.c     |   8 +-
 deps/openssl/openssl/crypto/dsa/dsa_check.c   |  46 +-
 deps/openssl/openssl/crypto/dsa/dsa_ossl.c    |  11 +-
 deps/openssl/openssl/crypto/dsa/dsa_sign.c    |   9 +-
 deps/openssl/openssl/crypto/ec/build.info     |   2 +-
 .../crypto/ec/curve448/arch_64/f_impl64.c     |   8 +-
 deps/openssl/openssl/crypto/ec/ecdsa_ossl.c   |  15 +-
 .../crypto/encode_decode/encoder_lib.c        |   7 +-
 deps/openssl/openssl/crypto/engine/eng_pkey.c |  44 +-
 deps/openssl/openssl/crypto/err/openssl.ec    |   4 +-
 deps/openssl/openssl/crypto/ess/ess_lib.c     |   4 +-
 deps/openssl/openssl/crypto/evp/keymgmt_lib.c |   9 +-
 deps/openssl/openssl/crypto/evp/p_lib.c       |  12 +-
 deps/openssl/openssl/crypto/evp/pmeth_lib.c   |  69 ++-
 deps/openssl/openssl/crypto/evp/signature.c   |  33 +-
 deps/openssl/openssl/crypto/init.c            |  14 +-
 deps/openssl/openssl/crypto/o_str.c           |   4 +-
 deps/openssl/openssl/crypto/perlasm/x86asm.pl |   4 +-
 .../openssl/crypto/property/property_parse.c  |   3 +-
 deps/openssl/openssl/crypto/provider_core.c   |  11 +-
 deps/openssl/openssl/crypto/sha/build.info    |   2 +-
 deps/openssl/openssl/crypto/sm2/sm2_crypt.c   |  37 +-
 deps/openssl/openssl/crypto/sm2/sm2_sign.c    |  18 +-
 deps/openssl/openssl/crypto/x509/v3_addr.c    |   4 +-
 .../openssl/demos/digest/EVP_MD_demo.c        |   4 +-
 .../openssl/demos/digest/EVP_MD_stdin.c       |   4 +-
 deps/openssl/openssl/doc/fingerprints.txt     |   3 +
 .../openssl/doc/internal/man3/OPTIONS.pod     |   4 +-
 .../internal/man3/ossl_method_construct.pod   |   4 +-
 .../doc/internal/man3/ossl_provider_new.pod   |   4 +-
 .../man3/ossl_random_add_conf_module.pod      |   4 +-
 .../openssl/doc/internal/man7/EVP_PKEY.pod    |   4 +-
 .../openssl/doc/man1/openssl-crl.pod.in       |   5 +-
 .../openssl/doc/man1/openssl-mac.pod.in       |  17 +-
 .../openssl/doc/man1/openssl-req.pod.in       |  33 +-
 .../openssl/doc/man1/openssl-smime.pod.in     |  18 +-
 .../openssl/doc/man1/openssl-storeutl.pod.in  |   5 +-
 .../openssl/doc/man1/openssl-ts.pod.in        |   8 +-
 .../openssl/doc/man3/DEFINE_STACK_OF.pod      |   6 +-
 .../openssl/doc/man3/EVP_DigestInit.pod       |   4 +-
 deps/openssl/openssl/doc/man3/EVP_KDF.pod     |   4 +-
 .../doc/man3/EVP_PKEY_CTX_set_params.pod      |   6 +-
 .../openssl/doc/man3/EVP_PKEY_check.pod       |   7 +-
 .../openssl/doc/man3/SSL_CIPHER_get_name.pod  |   4 +-
 .../doc/man3/SSL_CTX_set_cert_store.pod       |   6 +-
 .../openssl/doc/man3/SSL_CTX_set_verify.pod   |   5 +-
 .../doc/man3/SSL_CTX_use_certificate.pod      |   5 +-
 .../doc/man3/SSL_load_client_CA_file.pod      |  20 +-
 .../openssl/openssl/doc/man7/EVP_PKEY-SM2.pod |   5 +-
 .../openssl/doc/man7/migration_guide.pod      |  28 +-
 deps/openssl/openssl/e_os.h                   |  20 +-
 deps/openssl/openssl/engines/e_afalg.c        |   6 +-
 deps/openssl/openssl/engines/e_dasync.c       |   4 +-
 deps/openssl/openssl/fuzz/asn1.c              |  16 +-
 deps/openssl/openssl/include/crypto/bn.h      |  10 +-
 deps/openssl/openssl/include/crypto/bn_conf.h |   1 -
 .../openssl/openssl/include/crypto/dso_conf.h |   1 -
 .../openssl/include/internal/constant_time.h  |  25 +-
 deps/openssl/openssl/include/openssl/asn1.h   |   1 -
 deps/openssl/openssl/include/openssl/asn1t.h  |   1 -
 deps/openssl/openssl/include/openssl/bio.h    |   1 -
 deps/openssl/openssl/include/openssl/cmp.h    |   1 -
 deps/openssl/openssl/include/openssl/cms.h    |   1 -
 deps/openssl/openssl/include/openssl/conf.h   |   1 -
 .../openssl/include/openssl/configuration.h   |   1 -
 deps/openssl/openssl/include/openssl/crmf.h   |   1 -
 deps/openssl/openssl/include/openssl/crypto.h |   1 -
 deps/openssl/openssl/include/openssl/ct.h     |   1 -
 deps/openssl/openssl/include/openssl/err.h    |   1 -
 deps/openssl/openssl/include/openssl/ess.h    |   1 -
 .../openssl/openssl/include/openssl/fipskey.h |   1 -
 deps/openssl/openssl/include/openssl/lhash.h  |   1 -
 deps/openssl/openssl/include/openssl/ocsp.h   |   1 -
 .../openssl/include/openssl/opensslv.h        |   1 -
 deps/openssl/openssl/include/openssl/pkcs12.h |   1 -
 deps/openssl/openssl/include/openssl/pkcs7.h  |   1 -
 .../openssl/include/openssl/safestack.h       |   1 -
 deps/openssl/openssl/include/openssl/srp.h    |   1 -
 deps/openssl/openssl/include/openssl/ssl.h    |   1 -
 deps/openssl/openssl/include/openssl/sslerr.h |   4 +-
 deps/openssl/openssl/include/openssl/ui.h     |   1 -
 deps/openssl/openssl/include/openssl/x509.h   |   1 -
 .../openssl/include/openssl/x509_vfy.h        |   1 -
 deps/openssl/openssl/include/openssl/x509v3.h |   1 -
 .../os-dep/Apple/PrivacyInfo.xcprivacy        |  23 +
 .../openssl/providers/fips-sources.checksums  | 272 +++++------
 deps/openssl/openssl/providers/fips.checksum  |   2 +-
 .../openssl/openssl/providers/fips/fipsprov.c |   4 +-
 .../implementations/exchange/kdf_exch.c       |  44 +-
 .../include/prov/ciphercommon.h               |  15 +-
 .../providers/implementations/kdfs/hkdf.c     |  10 +-
 .../providers/implementations/rands/drbg.c    |   5 +-
 .../implementations/rands/drbg_ctr.c          |   7 +-
 .../implementations/rands/drbg_hash.c         |   5 +-
 .../implementations/rands/drbg_hmac.c         |   5 +-
 .../implementations/rands/drbg_local.h        |   3 +-
 .../openssl/openssl/ssl/record/rec_layer_s3.c |  15 +
 deps/openssl/openssl/ssl/record/record.h      |   3 +-
 deps/openssl/openssl/ssl/record/ssl3_buffer.c |   4 +-
 deps/openssl/openssl/ssl/ssl_err.c            |   6 +-
 deps/openssl/openssl/ssl/ssl_lib.c            |  10 +-
 deps/openssl/openssl/ssl/ssl_sess.c           |  36 +-
 deps/openssl/openssl/ssl/statem/statem_srvr.c |   9 +-
 deps/openssl/openssl/ssl/t1_lib.c             |   5 +-
 deps/openssl/openssl/test/bad_dtls_test.c     |   4 +-
 deps/openssl/openssl/test/build.info          |   1 +
 deps/openssl/openssl/test/cmp_hdr_test.c      |  51 ++-
 deps/openssl/openssl/test/ct_test.c           |  11 +-
 deps/openssl/openssl/test/dsatest.c           |  10 +-
 deps/openssl/openssl/test/ecdsatest.c         |  30 +-
 deps/openssl/openssl/test/ecstresstest.c      |   4 +-
 deps/openssl/openssl/test/evp_extra_test.c    |  48 +-
 .../openssl/test/evp_pkey_provided_test.c     |  63 ++-
 deps/openssl/openssl/test/evp_test.c          |  15 +-
 .../openssl/openssl/test/helpers/ssltestlib.c |  35 +-
 .../openssl/openssl/test/helpers/ssltestlib.h |   3 +-
 .../openssl/test/keymgmt_internal_test.c      |  10 +-
 deps/openssl/openssl/test/pathed.cnf          |  22 +
 .../openssl/openssl/test/pkey_meth_kdf_test.c |  55 ++-
 deps/openssl/openssl/test/prov_config_test.c  |  56 ++-
 .../invalid/p10240_q256_too_big.pem           |  57 +++
 .../openssl/test/recipes/25-test_req.t        |   3 +-
 .../test/recipes/30-test_prov_config.t        |   8 +-
 .../openssl/test/recipes/80-test_pkcs12.t     |  14 +-
 .../openssl/test/recipes/90-test_shlibload.t  |   3 +-
 deps/openssl/openssl/test/sm2_internal_test.c |  37 +-
 .../openssl/test/ssl-tests/14-curves.cnf.in   |   7 +-
 .../openssl/test/ssl-tests/20-cert-select.cnf | 216 ++++-----
 .../test/ssl-tests/20-cert-select.cnf.in      |  70 +--
 .../openssl/test/ssl-tests/28-seclevel.cnf.in |   8 +-
 deps/openssl/openssl/test/sslapitest.c        | 425 +++++++++++++++---
 deps/openssl/openssl/test/sslbuffertest.c     | 176 +++++++-
 deps/openssl/openssl/test/test.cnf            |   6 +
 deps/openssl/openssl/test/tls-provider.c      |  13 +-
 deps/openssl/openssl/test/v3ext.c             |  17 +-
 158 files changed, 2303 insertions(+), 800 deletions(-)
 delete mode 100644 deps/openssl/openssl/FAQ.md
 delete mode 100644 deps/openssl/openssl/include/crypto/bn_conf.h
 delete mode 100644 deps/openssl/openssl/include/crypto/dso_conf.h
 delete mode 100644 deps/openssl/openssl/include/openssl/asn1.h
 delete mode 100644 deps/openssl/openssl/include/openssl/asn1t.h
 delete mode 100644 deps/openssl/openssl/include/openssl/bio.h
 delete mode 100644 deps/openssl/openssl/include/openssl/cmp.h
 delete mode 100644 deps/openssl/openssl/include/openssl/cms.h
 delete mode 100644 deps/openssl/openssl/include/openssl/conf.h
 delete mode 100644 deps/openssl/openssl/include/openssl/configuration.h
 delete mode 100644 deps/openssl/openssl/include/openssl/crmf.h
 delete mode 100644 deps/openssl/openssl/include/openssl/crypto.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ct.h
 delete mode 100644 deps/openssl/openssl/include/openssl/err.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ess.h
 delete mode 100644 deps/openssl/openssl/include/openssl/fipskey.h
 delete mode 100644 deps/openssl/openssl/include/openssl/lhash.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ocsp.h
 delete mode 100644 deps/openssl/openssl/include/openssl/opensslv.h
 delete mode 100644 deps/openssl/openssl/include/openssl/pkcs12.h
 delete mode 100644 deps/openssl/openssl/include/openssl/pkcs7.h
 delete mode 100644 deps/openssl/openssl/include/openssl/safestack.h
 delete mode 100644 deps/openssl/openssl/include/openssl/srp.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ssl.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ui.h
 delete mode 100644 deps/openssl/openssl/include/openssl/x509.h
 delete mode 100644 deps/openssl/openssl/include/openssl/x509_vfy.h
 delete mode 100644 deps/openssl/openssl/include/openssl/x509v3.h
 create mode 100644 deps/openssl/openssl/os-dep/Apple/PrivacyInfo.xcprivacy
 create mode 100644 deps/openssl/openssl/test/pathed.cnf
 create mode 100644 deps/openssl/openssl/test/recipes/15-test_dsaparam_data/invalid/p10240_q256_too_big.pem

diff --git a/deps/openssl/openssl/CHANGES.md b/deps/openssl/openssl/CHANGES.md
index 6f6e73db9b42c5..8538330a7bac35 100644
--- a/deps/openssl/openssl/CHANGES.md
+++ b/deps/openssl/openssl/CHANGES.md
@@ -28,12 +28,78 @@ breaking changes, and mappings for the large list of deprecated functions.
 
 [Migration guide]: https://github.com/openssl/openssl/tree/master/doc/man7/migration_guide.pod
 
-### Changes between 3.0.13 and 3.0.13+quic [30 Jan 2024]
+### Changes between 3.0.14 and 3.0.14+quic [7 Jun 2024]
 
 * Add QUIC API support from BoringSSL
 
    *Todd Short*
 
+### Changes between 3.0.13 and 3.0.14 [4 Jun 2024]
+
+ * Fixed potential use after free after SSL_free_buffers() is called.
+
+   The SSL_free_buffers function is used to free the internal OpenSSL
+   buffer used when processing an incoming record from the network.
+   The call is only expected to succeed if the buffer is not currently
+   in use. However, two scenarios have been identified where the buffer
+   is freed even when still in use.
+
+   The first scenario occurs where a record header has been received
+   from the network and processed by OpenSSL, but the full record body
+   has not yet arrived. In this case calling SSL_free_buffers will succeed
+   even though a record has only been partially processed and the buffer
+   is still in use.
+
+   The second scenario occurs where a full record containing application
+   data has been received and processed by OpenSSL but the application has
+   only read part of this data. Again a call to SSL_free_buffers will
+   succeed even though the buffer is still in use.
+
+   ([CVE-2024-4741])
+
+   *Matt Caswell*
+
+ * Fixed an issue where checking excessively long DSA keys or parameters may
+   be very slow.
+
+   Applications that use the functions EVP_PKEY_param_check() or
+   EVP_PKEY_public_check() to check a DSA public key or DSA parameters may
+   experience long delays. Where the key or parameters that are being checked
+   have been obtained from an untrusted source this may lead to a Denial of
+   Service.
+
+   To resolve this issue DSA keys larger than OPENSSL_DSA_MAX_MODULUS_BITS
+   will now fail the check immediately with a DSA_R_MODULUS_TOO_LARGE error
+   reason.
+
+   ([CVE-2024-4603])
+
+   *Tomáš Mráz*
+
+ * Fixed an issue where some non-default TLS server configurations can cause
+   unbounded memory growth when processing TLSv1.3 sessions. An attacker may
+   exploit certain server configurations to trigger unbounded memory growth that
+   would lead to a Denial of Service
+
+   This problem can occur in TLSv1.3 if the non-default SSL_OP_NO_TICKET option
+   is being used (but not if early_data is also configured and the default
+   anti-replay protection is in use). In this case, under certain conditions,
+   the session cache can get into an incorrect state and it will fail to flush
+   properly as it fills. The session cache will continue to grow in an unbounded
+   manner. A malicious client could deliberately create the scenario for this
+   failure to force a Denial of Service. It may also happen by accident in
+   normal operation.
+
+   ([CVE-2024-2511])
+
+   *Matt Caswell*
+
+ * New atexit configuration switch, which controls whether the OPENSSL_cleanup
+   is registered when libcrypto is unloaded. This can be used on platforms
+   where using atexit() from shared libraries causes crashes on exit.
+
+   *Randall S. Becker*
+
 ### Changes between 3.0.12 and 3.0.13 [30 Jan 2024]
 
  * A file in PKCS12 format can contain certificates and keys and may come from
@@ -19830,6 +19896,9 @@ ndif
 
 
 
+[CVE-2024-4741]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4741
+[CVE-2024-4603]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4603
+[CVE-2024-2511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-2511
 [CVE-2024-0727]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-0727
 [CVE-2023-6237]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6237
 [CVE-2023-6129]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6129
diff --git a/deps/openssl/openssl/CONTRIBUTING.md b/deps/openssl/openssl/CONTRIBUTING.md
index 15490fd9f620d7..fec6616e21fe2e 100644
--- a/deps/openssl/openssl/CONTRIBUTING.md
+++ b/deps/openssl/openssl/CONTRIBUTING.md
@@ -9,7 +9,7 @@ Development is done on GitHub in the [openssl/openssl] repository.
 
   [openssl/openssl]: 
 
-To request new a feature, ask a question, or report a bug,
+To request a new feature, ask a question, or report a bug,
 please open an [issue on GitHub](https://github.com/openssl/openssl/issues).
 
 To submit a patch or implement a new feature, please open a
@@ -67,7 +67,8 @@ guidelines:
     often. We do not accept merge commits, you will have to remove them
     (usually by rebasing) before it will be acceptable.
 
- 4. Code provided should follow our [coding style] and compile without warnings.
+ 4. Code provided should follow our [coding style] and [documentation policy]
+    and compile without warnings.
     There is a [Perl tool](util/check-format.pl) that helps
     finding code formatting mistakes and other coding style nits.
     Where `gcc` or `clang` is available, you should use the
@@ -77,6 +78,7 @@ guidelines:
     whenever a PR is created or updated by committers.
 
     [coding style]: https://www.openssl.org/policies/technical/coding-style.html
+    [documentation policy]: https://openssl.org/policies/technical/documentation-policy.html
 
  5. When at all possible, code contributions should include tests. These can
     either be added to an existing test, or completely new.  Please see
diff --git a/deps/openssl/openssl/Configurations/10-main.conf b/deps/openssl/openssl/Configurations/10-main.conf
index ff8af71463188c..1155d9859c5624 100644
--- a/deps/openssl/openssl/Configurations/10-main.conf
+++ b/deps/openssl/openssl/Configurations/10-main.conf
@@ -784,7 +784,14 @@ my %targets = (
         asm_arch         => 'aarch64',
         perlasm_scheme   => "linux64",
     },
-
+    "linux-arm64ilp32-clang" => {  # clang config abi by --target
+        inherit_from     => [ "linux-generic32" ],
+        CC               => "clang",
+        CXX              => "clang++",
+        bn_ops           => "SIXTY_FOUR_BIT RC4_CHAR",
+        asm_arch         => 'aarch64',
+        perlasm_scheme   => "linux64",
+    },
     "linux-mips32" => {
         # Configure script adds minimally required -march for assembly
         # support, if no -march was specified at command line.
diff --git a/deps/openssl/openssl/Configurations/15-ios.conf b/deps/openssl/openssl/Configurations/15-ios.conf
index 54d37f63f445d4..81e3d68bc7f096 100644
--- a/deps/openssl/openssl/Configurations/15-ios.conf
+++ b/deps/openssl/openssl/Configurations/15-ios.conf
@@ -49,16 +49,16 @@ my %targets = (
 #
     "iphoneos-cross" => {
         inherit_from     => [ "ios-common" ],
-        cflags           => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common"),
+        cflags           => add("-isysroot \"\$(CROSS_TOP)/SDKs/\$(CROSS_SDK)\" -fno-common"),
     },
     "ios-cross" => {
         inherit_from     => [ "ios-xcrun" ],
         CC               => "cc",
-        cflags           => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK)"),
+        cflags           => add("-isysroot \"\$(CROSS_TOP)/SDKs/\$(CROSS_SDK)\""),
     },
     "ios64-cross" => {
         inherit_from     => [ "ios64-xcrun" ],
         CC               => "cc",
-        cflags           => add("-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK)"),
+        cflags           => add("-isysroot \"\$(CROSS_TOP)/SDKs/\$(CROSS_SDK)\""),
     },
 );
diff --git a/deps/openssl/openssl/Configurations/unix-Makefile.tmpl b/deps/openssl/openssl/Configurations/unix-Makefile.tmpl
index 3754595d38b50a..644540397de596 100644
--- a/deps/openssl/openssl/Configurations/unix-Makefile.tmpl
+++ b/deps/openssl/openssl/Configurations/unix-Makefile.tmpl
@@ -21,7 +21,7 @@
      sub dependmagic {
          my $target = shift;
 
-         return "$target: build_generated\n\t\$(MAKE) depend && \$(MAKE) _$target\n_$target";
+         return "$target: build_generated\n\t\"\$(MAKE)\" depend && \"\$(MAKE)\" _$target\n_$target";
      }
 
      our $COLUMNS = $ENV{COLUMNS};
@@ -527,7 +527,7 @@ all: build_sw build_docs
 
 test: tests
 {- dependmagic('tests'); -}: build_programs_nodep build_modules_nodep link-utils
-	$(MAKE) run_tests
+	"$(MAKE)" run_tests
 run_tests: FORCE
 	@ : {- output_off() if $disabled{tests}; "" -}
 	( SRCTOP=$(SRCDIR) \
@@ -542,7 +542,7 @@ run_tests: FORCE
 
 list-tests:
 	@ : {- output_off() if $disabled{tests}; "" -}
-	$(MAKE) run_tests TESTS=list
+	"$(MAKE)" run_tests TESTS=list
 	@ : {- if ($disabled{tests}) { output_on(); } else { output_off(); } "" -}
 	@echo "Tests are not supported with your chosen Configure options"
 	@ : {- output_on() if !$disabled{tests}; "" -}
@@ -1193,12 +1193,12 @@ providers/fips.module.sources.new: configdata.pm
 	  cd sources-tmp \
 	  && $$srcdir/Configure --banner=Configured enable-fips -O0 \
 	  && ./configdata.pm --query 'get_sources("providers/fips")' > sources1 \
-	  && $(MAKE) -sj 4 build_generated providers/fips.so \
+	  && "$(MAKE)" -sj 4 build_generated providers/fips.so \
 	  && find . -name '*.d' | xargs cat > dep1 \
-          && $(MAKE) distclean \
+          && "$(MAKE)" distclean \
 	  && $$srcdir/Configure --banner=Configured enable-fips no-asm -O0 \
 	  && ./configdata.pm --query 'get_sources("providers/fips")' > sources2 \
-	  && $(MAKE) -sj 4 build_generated providers/fips.so \
+	  && "$(MAKE)" -sj 4 build_generated providers/fips.so \
 	  && find . -name '*.d' | xargs cat > dep2 \
 	  && cat sources1 sources2 \
 	     | grep -v ' : \\$$' | grep -v util/providers.num \
@@ -1332,7 +1332,7 @@ ordinals: build_generated
                 $(SSLHEADERS)
 
 test_ordinals:
-	$(MAKE) run_tests TESTS=test_ordinals
+	"$(MAKE)" run_tests TESTS=test_ordinals
 
 tags TAGS: FORCE
 	rm -f TAGS tags
diff --git a/deps/openssl/openssl/Configure b/deps/openssl/openssl/Configure
index 0d0e229eb77d67..5b6cca0af0c743 100755
--- a/deps/openssl/openssl/Configure
+++ b/deps/openssl/openssl/Configure
@@ -1,6 +1,6 @@
 #! /usr/bin/env perl
 # -*- mode: perl; -*-
-# Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -405,6 +405,7 @@ my @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/openssl/FAQ.md b/deps/openssl/openssl/FAQ.md
deleted file mode 100644
index 30f5010ce3a480..00000000000000
--- a/deps/openssl/openssl/FAQ.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Frequently Asked Questions (FAQ)
-================================
-
-The [Frequently Asked Questions][FAQ] are now maintained on the OpenSSL homepage.
-
-  [FAQ]: https://www.openssl.org/docs/faq.html
diff --git a/deps/openssl/openssl/INSTALL.md b/deps/openssl/openssl/INSTALL.md
index 87b1faef90f719..df683ab1936d14 100644
--- a/deps/openssl/openssl/INSTALL.md
+++ b/deps/openssl/openssl/INSTALL.md
@@ -480,7 +480,7 @@ Setting the FIPS HMAC key
 
 As part of its self-test validation, the FIPS module must verify itself
 by performing a SHA-256 HMAC computation on itself. The default key is
-the SHA256 value of "the holy handgrenade of antioch" and is sufficient
+the SHA256 value of "holy hand grenade of antioch" and is sufficient
 for meeting the FIPS requirements.
 
 To change the key to a different value, use this flag. The value should
@@ -546,6 +546,13 @@ be used even with this option.
 
 Do not build support for async operations.
 
+### no-atexit
+
+Do not use `atexit()` in libcrypto builds.
+
+`atexit()` has varied semantics between platforms and can cause SIGSEGV in some
+circumstances. This option disables the atexit registration of OPENSSL_cleanup.
+
 ### no-autoalginit
 
 Don't automatically load all supported ciphers and digests.
diff --git a/deps/openssl/openssl/NEWS.md b/deps/openssl/openssl/NEWS.md
index d9a48b157eb14b..fb231bcd845989 100644
--- a/deps/openssl/openssl/NEWS.md
+++ b/deps/openssl/openssl/NEWS.md
@@ -18,6 +18,18 @@ OpenSSL Releases
 OpenSSL 3.0
 -----------
 
+### Major changes between OpenSSL 3.0.13 and OpenSSL 3.0.14 [4 Jun 2024]
+
+  * Fixed potential use after free after SSL_free_buffers() is called
+    ([CVE-2024-4741])
+
+  * Fixed an issue where checking excessively long DSA keys or parameters may
+    be very slow
+    ([CVE-2024-4603])
+
+  * Fixed unbounded memory growth with session handling in TLSv1.3
+    ([CVE-2024-2511])
+
 ### Major changes between OpenSSL 3.0.12 and OpenSSL 3.0.13 [30 Jan 2024]
 
   * Fixed PKCS12 Decoding crashes
@@ -1470,6 +1482,9 @@ OpenSSL 0.9.x
 
 
 
+[CVE-2024-4741]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4741
+[CVE-2024-4603]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4603
+[CVE-2024-2511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-2511
 [CVE-2024-0727]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-0727
 [CVE-2023-6237]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6237
 [CVE-2023-6129]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-6129
diff --git a/deps/openssl/openssl/NOTES-NONSTOP.md b/deps/openssl/openssl/NOTES-NONSTOP.md
index 68438b998884e2..ab13de7d3a760a 100644
--- a/deps/openssl/openssl/NOTES-NONSTOP.md
+++ b/deps/openssl/openssl/NOTES-NONSTOP.md
@@ -56,7 +56,10 @@ relating to `atexit()` processing when a shared library is unloaded and when
 the program terminates. This limitation applies to all OpenSSL shared library
 components.
 
-A resolution to this situation is under investigation.
+It is possible to configure the build with `no-atexit` to avoid the SIGSEGV.
+Preferably, you can explicitly call `OPENSSL_cleanup()` from your application.
+It is not mandatory as it just deallocates various global data structures
+OpenSSL allocated.
 
 About Prefix and OpenSSLDir
 ---------------------------
diff --git a/deps/openssl/openssl/VERSION.dat b/deps/openssl/openssl/VERSION.dat
index e11fb41ddac0fc..3bfe1788aec005 100644
--- a/deps/openssl/openssl/VERSION.dat
+++ b/deps/openssl/openssl/VERSION.dat
@@ -1,7 +1,7 @@
 MAJOR=3
 MINOR=0
-PATCH=13
+PATCH=14
 PRE_RELEASE_TAG=
 BUILD_METADATA=quic
-RELEASE_DATE="30 Jan 2024"
+RELEASE_DATE="4 Jun 2024"
 SHLIB_VERSION=81.3
diff --git a/deps/openssl/openssl/apps/lib/s_cb.c b/deps/openssl/openssl/apps/lib/s_cb.c
index f2ddd94c3de4df..7881c166762657 100644
--- a/deps/openssl/openssl/apps/lib/s_cb.c
+++ b/deps/openssl/openssl/apps/lib/s_cb.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1318,7 +1318,8 @@ int ssl_load_stores(SSL_CTX *ctx,
         if (vfyCAstore != NULL && !X509_STORE_load_store(vfy, vfyCAstore))
             goto err;
         add_crls_store(vfy, crls);
-        SSL_CTX_set1_verify_cert_store(ctx, vfy);
+        if (SSL_CTX_set1_verify_cert_store(ctx, vfy) == 0)
+            goto err;
         if (crl_download)
             store_setup_crl_download(vfy);
     }
@@ -1332,7 +1333,8 @@ int ssl_load_stores(SSL_CTX *ctx,
             goto err;
         if (chCAstore != NULL && !X509_STORE_load_store(ch, chCAstore))
             goto err;
-        SSL_CTX_set1_chain_cert_store(ctx, ch);
+        if (SSL_CTX_set1_chain_cert_store(ctx, ch) == 0)
+            goto err;
     }
     rv = 1;
  err:
diff --git a/deps/openssl/openssl/apps/list.c b/deps/openssl/openssl/apps/list.c
index 0fcbcbb083cbbc..7d3136a8a161e1 100644
--- a/deps/openssl/openssl/apps/list.c
+++ b/deps/openssl/openssl/apps/list.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1230,6 +1230,7 @@ static void list_provider_info(void)
     }
 
     if (OSSL_PROVIDER_do_all(NULL, &collect_providers, providers) != 1) {
+        sk_OSSL_PROVIDER_free(providers);
         BIO_printf(bio_err, "ERROR: Memory allocation\n");
         return;
     }
diff --git a/deps/openssl/openssl/apps/ocsp.c b/deps/openssl/openssl/apps/ocsp.c
index 821e224c6ce45d..fb3105da552660 100644
--- a/deps/openssl/openssl/apps/ocsp.c
+++ b/deps/openssl/openssl/apps/ocsp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -11,7 +11,7 @@
 
 #ifdef OPENSSL_SYS_VMS
   /* So fd_set and friends get properly defined on OpenVMS */
-# define _XOPEN_SOURCE_EXTENDED
+# define _XOPEN_SOURCE_EXTENDED 1
 #endif
 
 #include 
diff --git a/deps/openssl/openssl/apps/pkcs12.c b/deps/openssl/openssl/apps/pkcs12.c
index b442d358f8b703..ab78903ee9cdcf 100644
--- a/deps/openssl/openssl/apps/pkcs12.c
+++ b/deps/openssl/openssl/apps/pkcs12.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -712,9 +712,6 @@ int pkcs12_main(int argc, char **argv)
     in = bio_open_default(infile, 'r', FORMAT_PKCS12);
     if (in == NULL)
         goto end;
-    out = bio_open_owner(outfile, FORMAT_PEM, private);
-    if (out == NULL)
-        goto end;
 
     p12 = PKCS12_init_ex(NID_pkcs7_data, app_get0_libctx(), app_get0_propq());
     if (p12 == NULL) {
@@ -814,6 +811,11 @@ int pkcs12_main(int argc, char **argv)
 
  dump:
     assert(private);
+
+    out = bio_open_owner(outfile, FORMAT_PEM, private);
+    if (out == NULL)
+        goto end;
+
     if (!dump_certs_keys_p12(out, p12, cpass, -1, options, passout, enc)) {
         BIO_printf(bio_err, "Error outputting keys and certificates\n");
         ERR_print_errors(bio_err);
@@ -855,7 +857,11 @@ int dump_certs_keys_p12(BIO *out, const PKCS12 *p12, const char *pass,
         } else if (bagnid == NID_pkcs7_encrypted) {
             if (options & INFO) {
                 BIO_printf(bio_err, "PKCS7 Encrypted data: ");
-                alg_print(p7->d.encrypted->enc_data->algorithm);
+                if (p7->d.encrypted == NULL) {
+                    BIO_printf(bio_err, "\n");
+                } else {
+                    alg_print(p7->d.encrypted->enc_data->algorithm);
+                }
             }
             bags = PKCS12_unpack_p7encdata(p7, pass, passlen);
         } else {
diff --git a/deps/openssl/openssl/apps/req.c b/deps/openssl/openssl/apps/req.c
index c7d4c7822cda91..2fc53d4bfcfa23 100644
--- a/deps/openssl/openssl/apps/req.c
+++ b/deps/openssl/openssl/apps/req.c
@@ -569,7 +569,7 @@ int req_main(int argc, char **argv)
         X509V3_CTX ctx;
 
         X509V3_set_ctx_test(&ctx);
-        X509V3_set_nconf(&ctx, addext_conf);
+        X509V3_set_nconf(&ctx, req_conf);
         if (!X509V3_EXT_add_nconf(addext_conf, &ctx, "default", NULL)) {
             BIO_printf(bio_err, "Error checking extensions defined using -addext\n");
             goto end;
diff --git a/deps/openssl/openssl/apps/speed.c b/deps/openssl/openssl/apps/speed.c
index 1113d775b8ab98..d8e2c70e6128b5 100644
--- a/deps/openssl/openssl/apps/speed.c
+++ b/deps/openssl/openssl/apps/speed.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -727,8 +727,12 @@ static int EVP_Update_loop(void *args)
     unsigned char *buf = tempargs->buf;
     EVP_CIPHER_CTX *ctx = tempargs->ctx;
     int outl, count, rc;
+    unsigned char faketag[16] = { 0xcc };
 
     if (decrypt) {
+        if (EVP_CIPHER_get_flags(EVP_CIPHER_CTX_get0_cipher(ctx)) & EVP_CIPH_FLAG_AEAD_CIPHER) {
+            (void)EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_SET_TAG, sizeof(faketag), faketag);
+        }
         for (count = 0; COND(c[D_EVP][testnum]); count++) {
             rc = EVP_DecryptUpdate(ctx, buf, &outl, buf, lengths[testnum]);
             if (rc != 1) {
diff --git a/deps/openssl/openssl/apps/ts.c b/deps/openssl/openssl/apps/ts.c
index 57292e187cd223..01b73f380428e8 100644
--- a/deps/openssl/openssl/apps/ts.c
+++ b/deps/openssl/openssl/apps/ts.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2006-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -535,15 +535,18 @@ static int create_digest(BIO *input, const char *digest, const EVP_MD *md,
 
         *md_value = OPENSSL_hexstr2buf(digest, &digest_len);
         if (*md_value == NULL || md_value_len != digest_len) {
-            OPENSSL_free(*md_value);
-            *md_value = NULL;
             BIO_printf(bio_err, "bad digest, %d bytes "
                        "must be specified\n", md_value_len);
-            return 0;
+            goto err;
         }
     }
     rv = md_value_len;
  err:
+    if (rv <= 0) {
+        OPENSSL_free(*md_value);
+        *md_value = NULL;
+        rv = 0;
+    }
     EVP_MD_CTX_free(md_ctx);
     return rv;
 }
diff --git a/deps/openssl/openssl/crypto/aes/build.info b/deps/openssl/openssl/crypto/aes/build.info
index b250903fa6e26c..271015e35e1bb8 100644
--- a/deps/openssl/openssl/crypto/aes/build.info
+++ b/deps/openssl/openssl/crypto/aes/build.info
@@ -76,7 +76,7 @@ DEFINE[../../providers/libdefault.a]=$AESDEF
 # already gets everything that the static libcrypto.a has, and doesn't need it
 # added again.
 IF[{- !$disabled{module} && !$disabled{shared} -}]
-  DEFINE[../providers/liblegacy.a]=$AESDEF
+  DEFINE[../../providers/liblegacy.a]=$AESDEF
 ENDIF
 
 GENERATE[aes-ia64.s]=asm/aes-ia64.S
diff --git a/deps/openssl/openssl/crypto/bio/bio_lib.c b/deps/openssl/openssl/crypto/bio/bio_lib.c
index c86b9ac198cab0..245a75afa1b820 100644
--- a/deps/openssl/openssl/crypto/bio/bio_lib.c
+++ b/deps/openssl/openssl/crypto/bio/bio_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -869,8 +869,12 @@ static int bio_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds)
         return 1;
 
 #ifndef OPENSSL_NO_SOCK
-    if (BIO_get_fd(bio, &fd) > 0 && fd < FD_SETSIZE)
-        return BIO_socket_wait(fd, BIO_should_read(bio), max_time);
+    if (BIO_get_fd(bio, &fd) > 0) {
+        int ret = BIO_socket_wait(fd, BIO_should_read(bio), max_time);
+
+        if (ret != -1)
+            return ret;
+    }
 #endif
     /* fall back to polling since no sockets are available */
 
diff --git a/deps/openssl/openssl/crypto/bio/bio_sock.c b/deps/openssl/openssl/crypto/bio/bio_sock.c
index 476cbcc5cef161..12e6a68e3a25d8 100644
--- a/deps/openssl/openssl/crypto/bio/bio_sock.c
+++ b/deps/openssl/openssl/crypto/bio/bio_sock.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -396,7 +396,11 @@ int BIO_socket_wait(int fd, int for_read, time_t max_time)
     struct timeval tv;
     time_t now;
 
+#ifdef _WIN32
+    if ((SOCKET)fd == INVALID_SOCKET)
+#else
     if (fd < 0 || fd >= FD_SETSIZE)
+#endif
         return -1;
     if (max_time == 0)
         return 1;
diff --git a/deps/openssl/openssl/crypto/bn/bn_lib.c b/deps/openssl/openssl/crypto/bn/bn_lib.c
index cf1bfe8ab08503..9677a603cb2dae 100644
--- a/deps/openssl/openssl/crypto/bn/bn_lib.c
+++ b/deps/openssl/openssl/crypto/bn/bn_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -618,14 +618,29 @@ int BN_ucmp(const BIGNUM *a, const BIGNUM *b)
     int i;
     BN_ULONG t1, t2, *ap, *bp;
 
+    ap = a->d;
+    bp = b->d;
+
+    if (BN_get_flags(a, BN_FLG_CONSTTIME)
+            && a->top == b->top) {
+        int res = 0;
+
+        for (i = 0; i < b->top; i++) {
+            res = constant_time_select_int(constant_time_lt_bn(ap[i], bp[i]),
+                                           -1, res);
+            res = constant_time_select_int(constant_time_lt_bn(bp[i], ap[i]),
+                                           1, res);
+        }
+        return res;
+    }
+
     bn_check_top(a);
     bn_check_top(b);
 
     i = a->top - b->top;
     if (i != 0)
         return i;
-    ap = a->d;
-    bp = b->d;
+
     for (i = a->top - 1; i >= 0; i--) {
         t1 = ap[i];
         t2 = bp[i];
@@ -737,11 +752,10 @@ int BN_is_bit_set(const BIGNUM *a, int n)
     return (int)(((a->d[i]) >> j) & ((BN_ULONG)1));
 }
 
-int BN_mask_bits(BIGNUM *a, int n)
+int ossl_bn_mask_bits_fixed_top(BIGNUM *a, int n)
 {
     int b, w;
 
-    bn_check_top(a);
     if (n < 0)
         return 0;
 
@@ -755,10 +769,21 @@ int BN_mask_bits(BIGNUM *a, int n)
         a->top = w + 1;
         a->d[w] &= ~(BN_MASK2 << b);
     }
-    bn_correct_top(a);
+    a->flags |= BN_FLG_FIXED_TOP;
     return 1;
 }
 
+int BN_mask_bits(BIGNUM *a, int n)
+{
+    int ret;
+
+    bn_check_top(a);
+    ret = ossl_bn_mask_bits_fixed_top(a, n);
+    if (ret)
+        bn_correct_top(a);
+    return ret;
+}
+
 void BN_set_negative(BIGNUM *a, int b)
 {
     if (b && !BN_is_zero(a))
@@ -935,6 +960,22 @@ int BN_is_word(const BIGNUM *a, const BN_ULONG w)
     return BN_abs_is_word(a, w) && (!w || !a->neg);
 }
 
+int ossl_bn_is_word_fixed_top(const BIGNUM *a, BN_ULONG w)
+{
+    int res, i;
+    const BN_ULONG *ap = a->d;
+
+    if (a->neg || a->top == 0)
+        return 0;
+
+    res = constant_time_select_int(constant_time_eq_bn(ap[0], w), 1, 0);
+
+    for (i = 1; i < a->top; i++)
+        res = constant_time_select_int(constant_time_is_zero_bn(ap[i]),
+                                       res, 0);
+    return res;
+}
+
 int BN_is_odd(const BIGNUM *a)
 {
     return (a->top > 0) && (a->d[0] & 1);
diff --git a/deps/openssl/openssl/crypto/bn/bn_rand.c b/deps/openssl/openssl/crypto/bn/bn_rand.c
index 2ca426ff76ed98..ba0970b1f87dc6 100644
--- a/deps/openssl/openssl/crypto/bn/bn_rand.c
+++ b/deps/openssl/openssl/crypto/bn/bn_rand.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -186,8 +186,8 @@ static int bnrand_range(BNRAND_FLAG flag, BIGNUM *r, const BIGNUM *range,
     } else {
         do {
             /* range = 11..._2  or  range = 101..._2 */
-            if (!bnrand(flag, r, n, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY, 0,
-                        ctx))
+            if (!bnrand(flag, r, n, BN_RAND_TOP_ANY, BN_RAND_BOTTOM_ANY,
+                        strength, ctx))
                 return 0;
 
             if (!--count) {
@@ -240,17 +240,63 @@ int BN_pseudo_rand_range(BIGNUM *r, const BIGNUM *range)
 # endif
 #endif
 
+int ossl_bn_priv_rand_range_fixed_top(BIGNUM *r, const BIGNUM *range,
+                                      unsigned int strength, BN_CTX *ctx)
+{
+    int n;
+    int count = 100;
+
+    if (r == NULL) {
+        ERR_raise(ERR_LIB_BN, ERR_R_PASSED_NULL_PARAMETER);
+        return 0;
+    }
+
+    if (range->neg || BN_is_zero(range)) {
+        ERR_raise(ERR_LIB_BN, BN_R_INVALID_RANGE);
+        return 0;
+    }
+
+    n = BN_num_bits(range);     /* n > 0 */
+
+    /* BN_is_bit_set(range, n - 1) always holds */
+
+    if (n == 1) {
+        BN_zero(r);
+    } else {
+        BN_set_flags(r, BN_FLG_CONSTTIME);
+        do {
+            if (!bnrand(PRIVATE, r, n + 1, BN_RAND_TOP_ONE, BN_RAND_BOTTOM_ANY,
+                        strength, ctx))
+                return 0;
+
+            if (!--count) {
+                ERR_raise(ERR_LIB_BN, BN_R_TOO_MANY_ITERATIONS);
+                return 0;
+            }
+            ossl_bn_mask_bits_fixed_top(r, n);
+        }
+        while (BN_ucmp(r, range) >= 0);
+#ifdef BN_DEBUG
+        /* With BN_DEBUG on a fixed top number cannot be returned */
+        bn_correct_top(r);
+#endif
+    }
+
+    return 1;
+}
+
 /*
- * BN_generate_dsa_nonce generates a random number 0 <= out < range. Unlike
- * BN_rand_range, it also includes the contents of |priv| and |message| in
- * the generation so that an RNG failure isn't fatal as long as |priv|
+ * ossl_bn_gen_dsa_nonce_fixed_top generates a random number 0 <= out < range.
+ * Unlike BN_rand_range, it also includes the contents of |priv| and |message|
+ * in the generation so that an RNG failure isn't fatal as long as |priv|
  * remains secret. This is intended for use in DSA and ECDSA where an RNG
  * weakness leads directly to private key exposure unless this function is
  * used.
  */
-int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
-                          const BIGNUM *priv, const unsigned char *message,
-                          size_t message_len, BN_CTX *ctx)
+int ossl_bn_gen_dsa_nonce_fixed_top(BIGNUM *out, const BIGNUM *range,
+                                    const BIGNUM *priv,
+                                    const unsigned char *message,
+                                    size_t message_len, BN_CTX *ctx)
 {
     EVP_MD_CTX *mdctx = EVP_MD_CTX_new();
     /*
@@ -260,20 +306,24 @@ int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
     unsigned char random_bytes[64];
     unsigned char digest[SHA512_DIGEST_LENGTH];
     unsigned done, todo;
-    /* We generate |range|+8 bytes of random output. */
-    const unsigned num_k_bytes = BN_num_bytes(range) + 8;
+    /* We generate |range|+1 bytes of random output. */
+    const unsigned num_k_bytes = BN_num_bytes(range) + 1;
     unsigned char private_bytes[96];
     unsigned char *k_bytes = NULL;
+    const int max_n = 64;           /* Pr(failure to generate) < 2^max_n */
+    int n;
     int ret = 0;
     EVP_MD *md = NULL;
     OSSL_LIB_CTX *libctx = ossl_bn_get_libctx(ctx);
 
     if (mdctx == NULL)
-        goto err;
+        goto end;
 
     k_bytes = OPENSSL_malloc(num_k_bytes);
     if (k_bytes == NULL)
-        goto err;
+        goto end;
+    /* Ensure top byte is set to avoid non-constant time in bin2bn */
+    k_bytes[0] = 0xff;
 
     /* We copy |priv| into a local buffer to avoid exposing its length. */
     if (BN_bn2binpad(priv, private_bytes, sizeof(private_bytes)) < 0) {
@@ -283,41 +333,60 @@ int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
          * length of the private key.
          */
         ERR_raise(ERR_LIB_BN, BN_R_PRIVATE_KEY_TOO_LARGE);
-        goto err;
+        goto end;
     }
 
     md = EVP_MD_fetch(libctx, "SHA512", NULL);
     if (md == NULL) {
         ERR_raise(ERR_LIB_BN, BN_R_NO_SUITABLE_DIGEST);
-        goto err;
-    }
-    for (done = 0; done < num_k_bytes;) {
-        if (RAND_priv_bytes_ex(libctx, random_bytes, sizeof(random_bytes), 0) <= 0)
-            goto err;
-
-        if (!EVP_DigestInit_ex(mdctx, md, NULL)
-                || !EVP_DigestUpdate(mdctx, &done, sizeof(done))
-                || !EVP_DigestUpdate(mdctx, private_bytes,
-                                     sizeof(private_bytes))
-                || !EVP_DigestUpdate(mdctx, message, message_len)
-                || !EVP_DigestUpdate(mdctx, random_bytes, sizeof(random_bytes))
-                || !EVP_DigestFinal_ex(mdctx, digest, NULL))
-            goto err;
-
-        todo = num_k_bytes - done;
-        if (todo > SHA512_DIGEST_LENGTH)
-            todo = SHA512_DIGEST_LENGTH;
-        memcpy(k_bytes + done, digest, todo);
-        done += todo;
+        goto end;
     }
+    for (n = 0; n < max_n; n++) {
+        unsigned char i = 0;
+
+        for (done = 1; done < num_k_bytes;) {
+            if (RAND_priv_bytes_ex(libctx, random_bytes, sizeof(random_bytes),
+                                   0) <= 0)
+                goto end;
+
+            if (!EVP_DigestInit_ex(mdctx, md, NULL)
+                    || !EVP_DigestUpdate(mdctx, &i, sizeof(i))
+                    || !EVP_DigestUpdate(mdctx, private_bytes,
+                                         sizeof(private_bytes))
+                    || !EVP_DigestUpdate(mdctx, message, message_len)
+                    || !EVP_DigestUpdate(mdctx, random_bytes,
+                                         sizeof(random_bytes))
+                    || !EVP_DigestFinal_ex(mdctx, digest, NULL))
+                goto end;
+
+            todo = num_k_bytes - done;
+            if (todo > SHA512_DIGEST_LENGTH)
+                todo = SHA512_DIGEST_LENGTH;
+            memcpy(k_bytes + done, digest, todo);
+            done += todo;
+            ++i;
+        }
 
-    if (!BN_bin2bn(k_bytes, num_k_bytes, out))
-        goto err;
-    if (BN_mod(out, out, range, ctx) != 1)
-        goto err;
-    ret = 1;
+        if (!BN_bin2bn(k_bytes, num_k_bytes, out))
+            goto end;
 
- err:
+        /* Clear out the top bits and rejection filter into range */
+        BN_set_flags(out, BN_FLG_CONSTTIME);
+        ossl_bn_mask_bits_fixed_top(out, BN_num_bits(range));
+
+        if (BN_ucmp(out, range) < 0) {
+            ret = 1;
+#ifdef BN_DEBUG
+            /* With BN_DEBUG on a fixed top number cannot be returned */
+            bn_correct_top(out);
+#endif
+            goto end;
+        }
+    }
+    /* Failed to generate anything */
+    ERR_raise(ERR_LIB_BN, ERR_R_INTERNAL_ERROR);
+
+ end:
     EVP_MD_CTX_free(mdctx);
     EVP_MD_free(md);
     OPENSSL_clear_free(k_bytes, num_k_bytes);
@@ -326,3 +395,20 @@ int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
     OPENSSL_cleanse(private_bytes, sizeof(private_bytes));
     return ret;
 }
+
+int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
+                          const BIGNUM *priv, const unsigned char *message,
+                          size_t message_len, BN_CTX *ctx)
+{
+    int ret;
+
+    ret = ossl_bn_gen_dsa_nonce_fixed_top(out, range, priv, message,
+                                          message_len, ctx);
+    /*
+     * This call makes the BN_generate_dsa_nonce non-const-time, thus we
+     * do not use it internally. But fixed_top BNs currently cannot be returned
+     * from public API calls.
+     */
+    bn_correct_top(out);
+    return ret;
+}
diff --git a/deps/openssl/openssl/crypto/bn/bn_shift.c b/deps/openssl/openssl/crypto/bn/bn_shift.c
index 8fcb04324e6d59..d67331f1f634cd 100644
--- a/deps/openssl/openssl/crypto/bn/bn_shift.c
+++ b/deps/openssl/openssl/crypto/bn/bn_shift.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -156,6 +156,9 @@ int BN_rshift(BIGNUM *r, const BIGNUM *a, int n)
         return 0;
     }
 
+    bn_check_top(r);
+    bn_check_top(a);
+
     ret = bn_rshift_fixed_top(r, a, n);
 
     bn_correct_top(r);
@@ -177,9 +180,6 @@ int bn_rshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n)
     BN_ULONG *t, *f;
     BN_ULONG l, m, mask;
 
-    bn_check_top(r);
-    bn_check_top(a);
-
     assert(n >= 0);
 
     nw = n / BN_BITS2;
diff --git a/deps/openssl/openssl/crypto/dsa/dsa_check.c b/deps/openssl/openssl/crypto/dsa/dsa_check.c
index fb0e9129a2956b..801b932d87244e 100644
--- a/deps/openssl/openssl/crypto/dsa/dsa_check.c
+++ b/deps/openssl/openssl/crypto/dsa/dsa_check.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -19,8 +19,34 @@
 #include "dsa_local.h"
 #include "crypto/dsa.h"
 
+static int dsa_precheck_params(const DSA *dsa, int *ret)
+{
+    if (dsa->params.p == NULL || dsa->params.q == NULL) {
+        ERR_raise(ERR_LIB_DSA, DSA_R_BAD_FFC_PARAMETERS);
+        *ret = FFC_CHECK_INVALID_PQ;
+        return 0;
+    }
+
+    if (BN_num_bits(dsa->params.p) > OPENSSL_DSA_MAX_MODULUS_BITS) {
+        ERR_raise(ERR_LIB_DSA, DSA_R_MODULUS_TOO_LARGE);
+        *ret = FFC_CHECK_INVALID_PQ;
+        return 0;
+    }
+
+    if (BN_num_bits(dsa->params.q) >= BN_num_bits(dsa->params.p)) {
+        ERR_raise(ERR_LIB_DSA, DSA_R_BAD_Q_VALUE);
+        *ret = FFC_CHECK_INVALID_PQ;
+        return 0;
+    }
+
+    return 1;
+}
+
 int ossl_dsa_check_params(const DSA *dsa, int checktype, int *ret)
 {
+    if (!dsa_precheck_params(dsa, ret))
+        return 0;
+
     if (checktype == OSSL_KEYMGMT_VALIDATE_QUICK_CHECK)
         return ossl_ffc_params_simple_validate(dsa->libctx, &dsa->params,
                                                FFC_PARAM_TYPE_DSA, ret);
@@ -39,6 +65,9 @@ int ossl_dsa_check_params(const DSA *dsa, int checktype, int *ret)
  */
 int ossl_dsa_check_pub_key(const DSA *dsa, const BIGNUM *pub_key, int *ret)
 {
+    if (!dsa_precheck_params(dsa, ret))
+        return 0;
+
     return ossl_ffc_validate_public_key(&dsa->params, pub_key, ret)
            && *ret == 0;
 }
@@ -50,6 +79,9 @@ int ossl_dsa_check_pub_key(const DSA *dsa, const BIGNUM *pub_key, int *ret)
  */
 int ossl_dsa_check_pub_key_partial(const DSA *dsa, const BIGNUM *pub_key, int *ret)
 {
+    if (!dsa_precheck_params(dsa, ret))
+        return 0;
+
     return ossl_ffc_validate_public_key_partial(&dsa->params, pub_key, ret)
            && *ret == 0;
 }
@@ -58,8 +90,10 @@ int ossl_dsa_check_priv_key(const DSA *dsa, const BIGNUM *priv_key, int *ret)
 {
     *ret = 0;
 
-    return (dsa->params.q != NULL
-            && ossl_ffc_validate_private_key(dsa->params.q, priv_key, ret));
+    if (!dsa_precheck_params(dsa, ret))
+        return 0;
+
+    return ossl_ffc_validate_private_key(dsa->params.q, priv_key, ret);
 }
 
 /*
@@ -72,8 +106,10 @@ int ossl_dsa_check_pairwise(const DSA *dsa)
     BN_CTX *ctx = NULL;
     BIGNUM *pub_key = NULL;
 
-    if (dsa->params.p == NULL
-        || dsa->params.g == NULL
+    if (!dsa_precheck_params(dsa, &ret))
+        return 0;
+
+    if (dsa->params.g == NULL
         || dsa->priv_key == NULL
         || dsa->pub_key == NULL)
         return 0;
diff --git a/deps/openssl/openssl/crypto/dsa/dsa_ossl.c b/deps/openssl/openssl/crypto/dsa/dsa_ossl.c
index 8fd66a950e3739..0c18b78f76336a 100644
--- a/deps/openssl/openssl/crypto/dsa/dsa_ossl.c
+++ b/deps/openssl/openssl/crypto/dsa/dsa_ossl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -262,12 +262,13 @@ static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in,
              * We calculate k from SHA512(private_key + H(message) + random).
              * This protects the private key from a weak PRNG.
              */
-            if (!BN_generate_dsa_nonce(k, dsa->params.q, dsa->priv_key, dgst,
-                                       dlen, ctx))
+            if (!ossl_bn_gen_dsa_nonce_fixed_top(k, dsa->params.q,
+                                                 dsa->priv_key, dgst,
+                                                 dlen, ctx))
                 goto err;
-        } else if (!BN_priv_rand_range_ex(k, dsa->params.q, 0, ctx))
+        } else if (!ossl_bn_priv_rand_range_fixed_top(k, dsa->params.q, 0, ctx))
             goto err;
-    } while (BN_is_zero(k));
+    } while (ossl_bn_is_word_fixed_top(k, 0));
 
     BN_set_flags(k, BN_FLG_CONSTTIME);
     BN_set_flags(l, BN_FLG_CONSTTIME);
diff --git a/deps/openssl/openssl/crypto/dsa/dsa_sign.c b/deps/openssl/openssl/crypto/dsa/dsa_sign.c
index ddfbfa18af157e..91d334ea533a50 100644
--- a/deps/openssl/openssl/crypto/dsa/dsa_sign.c
+++ b/deps/openssl/openssl/crypto/dsa/dsa_sign.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -156,6 +156,11 @@ int ossl_dsa_sign_int(int type, const unsigned char *dgst, int dlen,
 {
     DSA_SIG *s;
 
+    if (sig == NULL) {
+        *siglen = DSA_size(dsa);
+        return 1;
+    }
+
     /* legacy case uses the method table */
     if (dsa->libctx == NULL || dsa->meth != DSA_get_default_method())
         s = DSA_do_sign(dgst, dlen, dsa);
@@ -165,7 +170,7 @@ int ossl_dsa_sign_int(int type, const unsigned char *dgst, int dlen,
         *siglen = 0;
         return 0;
     }
-    *siglen = i2d_DSA_SIG(s, sig != NULL ? &sig : NULL);
+    *siglen = i2d_DSA_SIG(s, &sig);
     DSA_SIG_free(s);
     return 1;
 }
diff --git a/deps/openssl/openssl/crypto/ec/build.info b/deps/openssl/openssl/crypto/ec/build.info
index a511e887a9ba19..6dd98e9f4f1724 100644
--- a/deps/openssl/openssl/crypto/ec/build.info
+++ b/deps/openssl/openssl/crypto/ec/build.info
@@ -77,7 +77,7 @@ DEFINE[../../providers/libdefault.a]=$ECDEF
 # Otherwise, it already gets everything that the static libcrypto.a
 # has, and doesn't need it added again.
 IF[{- !$disabled{module} && !$disabled{shared} -}]
-  DEFINE[../providers/liblegacy.a]=$ECDEF
+  DEFINE[../../providers/liblegacy.a]=$ECDEF
 ENDIF
 
 GENERATE[ecp_nistz256-x86.S]=asm/ecp_nistz256-x86.pl
diff --git a/deps/openssl/openssl/crypto/ec/curve448/arch_64/f_impl64.c b/deps/openssl/openssl/crypto/ec/curve448/arch_64/f_impl64.c
index 8f7a7dd391bd8d..dfe75b8fc5caed 100644
--- a/deps/openssl/openssl/crypto/ec/curve448/arch_64/f_impl64.c
+++ b/deps/openssl/openssl/crypto/ec/curve448/arch_64/f_impl64.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2014 Cryptography Research, Inc.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -45,9 +45,9 @@ void gf_mul(gf_s * RESTRICT cs, const gf as, const gf bs)
             accum0 += widemul(a[j + 4], b[i - j + 4]);
         }
         for (; j < 4; j++) {
-            accum2 += widemul(a[j], b[i - j + 8]);
-            accum1 += widemul(aa[j], bbb[i - j + 4]);
-            accum0 += widemul(a[j + 4], bb[i - j + 4]);
+            accum2 += widemul(a[j], b[i + 8 - j]);
+            accum1 += widemul(aa[j], bbb[i + 4 - j]);
+            accum0 += widemul(a[j + 4], bb[i + 4 - j]);
         }
 
         accum1 -= accum2;
diff --git a/deps/openssl/openssl/crypto/ec/ecdsa_ossl.c b/deps/openssl/openssl/crypto/ec/ecdsa_ossl.c
index 0bf4635e2f9723..4b54a30cf9bcd2 100644
--- a/deps/openssl/openssl/crypto/ec/ecdsa_ossl.c
+++ b/deps/openssl/openssl/crypto/ec/ecdsa_ossl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2002-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -70,6 +70,11 @@ int ossl_ecdsa_sign(int type, const unsigned char *dgst, int dlen,
 {
     ECDSA_SIG *s;
 
+    if (sig == NULL && (kinv == NULL || r == NULL)) {
+        *siglen = ECDSA_size(eckey);
+        return 1;
+    }
+
     s = ECDSA_do_sign_ex(dgst, dlen, kinv, r, eckey);
     if (s == NULL) {
         *siglen = 0;
@@ -140,18 +145,18 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in,
         /* get random k */
         do {
             if (dgst != NULL) {
-                if (!BN_generate_dsa_nonce(k, order, priv_key,
-                                           dgst, dlen, ctx)) {
+                if (!ossl_bn_gen_dsa_nonce_fixed_top(k, order, priv_key,
+                                                     dgst, dlen, ctx)) {
                     ERR_raise(ERR_LIB_EC, EC_R_RANDOM_NUMBER_GENERATION_FAILED);
                     goto err;
                 }
             } else {
-                if (!BN_priv_rand_range_ex(k, order, 0, ctx)) {
+                if (!ossl_bn_priv_rand_range_fixed_top(k, order, 0, ctx)) {
                     ERR_raise(ERR_LIB_EC, EC_R_RANDOM_NUMBER_GENERATION_FAILED);
                     goto err;
                 }
             }
-        } while (BN_is_zero(k));
+        } while (ossl_bn_is_word_fixed_top(k, 0));
 
         /* compute r the x-coordinate of generator * k */
         if (!EC_POINT_mul(group, tmp_point, k, NULL, NULL, ctx)) {
diff --git a/deps/openssl/openssl/crypto/encode_decode/encoder_lib.c b/deps/openssl/openssl/crypto/encode_decode/encoder_lib.c
index 7a55c7ab9a2730..a88332b79d5295 100644
--- a/deps/openssl/openssl/crypto/encode_decode/encoder_lib.c
+++ b/deps/openssl/openssl/crypto/encode_decode/encoder_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -59,6 +59,11 @@ int OSSL_ENCODER_to_bio(OSSL_ENCODER_CTX *ctx, BIO *out)
         return 0;
     }
 
+    if (ctx->cleanup == NULL || ctx->construct == NULL) {
+        ERR_raise(ERR_LIB_OSSL_ENCODER, ERR_R_INIT_FAIL);
+        return 0;
+    }
+
     return encoder_process(&data) > 0;
 }
 
diff --git a/deps/openssl/openssl/crypto/engine/eng_pkey.c b/deps/openssl/openssl/crypto/engine/eng_pkey.c
index f84fcde4601629..d18d837e625c03 100644
--- a/deps/openssl/openssl/crypto/engine/eng_pkey.c
+++ b/deps/openssl/openssl/crypto/engine/eng_pkey.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -79,48 +79,6 @@ EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id,
         ERR_raise(ERR_LIB_ENGINE, ENGINE_R_FAILED_LOADING_PRIVATE_KEY);
         return NULL;
     }
-    /* We enforce check for legacy key */
-    switch (EVP_PKEY_get_id(pkey)) {
-    case EVP_PKEY_RSA:
-        {
-        RSA *rsa = EVP_PKEY_get1_RSA(pkey);
-        EVP_PKEY_set1_RSA(pkey, rsa);
-        RSA_free(rsa);
-        }
-        break;
-#  ifndef OPENSSL_NO_EC
-    case EVP_PKEY_SM2:
-    case EVP_PKEY_EC:
-        {
-        EC_KEY *ec = EVP_PKEY_get1_EC_KEY(pkey);
-        EVP_PKEY_set1_EC_KEY(pkey, ec);
-        EC_KEY_free(ec);
-        }
-        break;
-#  endif
-#  ifndef OPENSSL_NO_DSA
-    case EVP_PKEY_DSA:
-        {
-        DSA *dsa = EVP_PKEY_get1_DSA(pkey);
-        EVP_PKEY_set1_DSA(pkey, dsa);
-        DSA_free(dsa);
-        }
-        break;
-#endif
-#  ifndef OPENSSL_NO_DH
-    case EVP_PKEY_DH:
-        {
-        DH *dh = EVP_PKEY_get1_DH(pkey);
-        EVP_PKEY_set1_DH(pkey, dh);
-        DH_free(dh);
-        }
-        break;
-#endif
-    default:
-        /*Do nothing */
-        break;
-    }
-
     return pkey;
 }
 
diff --git a/deps/openssl/openssl/crypto/err/openssl.ec b/deps/openssl/openssl/crypto/err/openssl.ec
index 3612c195f09f3e..f3802a05b5c325 100644
--- a/deps/openssl/openssl/crypto/err/openssl.ec
+++ b/deps/openssl/openssl/crypto/err/openssl.ec
@@ -76,6 +76,6 @@ R SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE          1111
 R SSL_R_TLSV1_UNRECOGNIZED_NAME                 1112
 R SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE   1113
 R SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE        1114
-R TLS1_AD_UNKNOWN_PSK_IDENTITY                  1115
+R SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY        1115
 R SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED       1116
-R TLS1_AD_NO_APPLICATION_PROTOCOL               1120
+R SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL     1120
diff --git a/deps/openssl/openssl/crypto/ess/ess_lib.c b/deps/openssl/openssl/crypto/ess/ess_lib.c
index 65444d383ff4bd..cd42f951f7b815 100644
--- a/deps/openssl/openssl/crypto/ess/ess_lib.c
+++ b/deps/openssl/openssl/crypto/ess/ess_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -293,7 +293,7 @@ int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss,
     int i, ret;
 
     if (require_signing_cert && ss == NULL && ssv2 == NULL) {
-        ERR_raise(ERR_LIB_CMS, ESS_R_MISSING_SIGNING_CERTIFICATE_ATTRIBUTE);
+        ERR_raise(ERR_LIB_ESS, ESS_R_MISSING_SIGNING_CERTIFICATE_ATTRIBUTE);
         return -1;
     }
     if (n_v1 == 0 || n_v2 == 0) {
diff --git a/deps/openssl/openssl/crypto/evp/keymgmt_lib.c b/deps/openssl/openssl/crypto/evp/keymgmt_lib.c
index 8369d9578cbd0e..9512cc9cf0f735 100644
--- a/deps/openssl/openssl/crypto/evp/keymgmt_lib.c
+++ b/deps/openssl/openssl/crypto/evp/keymgmt_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -243,10 +243,15 @@ OP_CACHE_ELEM *evp_keymgmt_util_find_operation_cache(EVP_PKEY *pk,
     /*
      * A comparison and sk_P_CACHE_ELEM_find() are avoided to not cause
      * problems when we've only a read lock.
+     * A keymgmt is a match if the |keymgmt| pointers are identical or if the
+     * provider and the name ID match
      */
     for (i = 0; i < end; i++) {
         p = sk_OP_CACHE_ELEM_value(pk->operation_cache, i);
-        if (keymgmt == p->keymgmt && (p->selection & selection) == selection)
+        if ((p->selection & selection) == selection
+                && (keymgmt == p->keymgmt
+                    || (keymgmt->name_id == p->keymgmt->name_id
+                        && keymgmt->prov == p->keymgmt->prov)))
             return p;
     }
     return NULL;
diff --git a/deps/openssl/openssl/crypto/evp/p_lib.c b/deps/openssl/openssl/crypto/evp/p_lib.c
index 04b148a912187e..6ff7eb7e02cfd4 100644
--- a/deps/openssl/openssl/crypto/evp/p_lib.c
+++ b/deps/openssl/openssl/crypto/evp/p_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1902,7 +1902,15 @@ void *evp_pkey_export_to_provider(EVP_PKEY *pk, OSSL_LIB_CTX *libctx,
              * If |tmp_keymgmt| is present in the operation cache, it means
              * that export doesn't need to be redone.  In that case, we take
              * token copies of the cached pointers, to have token success
-             * values to return.
+             * values to return. It is possible (e.g. in a no-cached-fetch
+             * build), for op->keymgmt to be a different pointer to tmp_keymgmt
+             * even though the name/provider must be the same. In other words
+             * the keymgmt instance may be different but still equivalent, i.e.
+             * same algorithm/provider instance - but we make the simplifying
+             * assumption that the keydata can be used with either keymgmt
+             * instance. Not doing so introduces significant complexity and
+             * probably requires refactoring - since we would have to ripple
+             * the change in keymgmt instance up the call chain.
              */
             if (op != NULL && op->keymgmt != NULL) {
                 keydata = op->keydata;
diff --git a/deps/openssl/openssl/crypto/evp/pmeth_lib.c b/deps/openssl/openssl/crypto/evp/pmeth_lib.c
index ba1971ce461d57..cffd88725c85a8 100644
--- a/deps/openssl/openssl/crypto/evp/pmeth_lib.c
+++ b/deps/openssl/openssl/crypto/evp/pmeth_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2006-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1028,6 +1028,71 @@ static int evp_pkey_ctx_set1_octet_string(EVP_PKEY_CTX *ctx, int fallback,
     return EVP_PKEY_CTX_set_params(ctx, octet_string_params);
 }
 
+static int evp_pkey_ctx_add1_octet_string(EVP_PKEY_CTX *ctx, int fallback,
+                                          const char *param, int op, int ctrl,
+                                          const unsigned char *data,
+                                          int datalen)
+{
+    OSSL_PARAM os_params[2];
+    unsigned char *info = NULL;
+    size_t info_len = 0;
+    size_t info_alloc = 0;
+    int ret = 0;
+
+    if (ctx == NULL || (ctx->operation & op) == 0) {
+        ERR_raise(ERR_LIB_EVP, EVP_R_COMMAND_NOT_SUPPORTED);
+        /* Uses the same return values as EVP_PKEY_CTX_ctrl */
+        return -2;
+    }
+
+    /* Code below to be removed when legacy support is dropped. */
+    if (fallback)
+        return EVP_PKEY_CTX_ctrl(ctx, -1, op, ctrl, datalen, (void *)(data));
+    /* end of legacy support */
+
+    if (datalen < 0) {
+        ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_LENGTH);
+        return 0;
+    } else if (datalen == 0) {
+        return 1;
+    }
+
+    /* Get the original value length */
+    os_params[0] = OSSL_PARAM_construct_octet_string(param, NULL, 0);
+    os_params[1] = OSSL_PARAM_construct_end();
+
+    if (!EVP_PKEY_CTX_get_params(ctx, os_params))
+        return 0;
+
+    /* Older provider that doesn't support getting this parameter */
+    if (os_params[0].return_size == OSSL_PARAM_UNMODIFIED)
+        return evp_pkey_ctx_set1_octet_string(ctx, fallback, param, op, ctrl, data, datalen);
+
+    info_alloc = os_params[0].return_size + datalen;
+    if (info_alloc == 0)
+        return 0;
+    info = OPENSSL_zalloc(info_alloc);
+    if (info == NULL)
+        return 0;
+    info_len = os_params[0].return_size;
+
+    os_params[0] = OSSL_PARAM_construct_octet_string(param, info, info_alloc);
+
+    /* if we have data, then go get it */
+    if (info_len > 0) {
+        if (!EVP_PKEY_CTX_get_params(ctx, os_params))
+            goto error;
+    }
+
+    /* Copy the input data */
+    memcpy(&info[info_len], data, datalen);
+    ret = EVP_PKEY_CTX_set_params(ctx, os_params);
+
+ error:
+    OPENSSL_clear_free(info, info_alloc);
+    return ret;
+}
+
 int EVP_PKEY_CTX_set1_tls1_prf_secret(EVP_PKEY_CTX *ctx,
                                       const unsigned char *sec, int seclen)
 {
@@ -1078,7 +1143,7 @@ int EVP_PKEY_CTX_set1_hkdf_key(EVP_PKEY_CTX *ctx,
 int EVP_PKEY_CTX_add1_hkdf_info(EVP_PKEY_CTX *ctx,
                                       const unsigned char *info, int infolen)
 {
-    return evp_pkey_ctx_set1_octet_string(ctx, ctx->op.kex.algctx == NULL,
+    return evp_pkey_ctx_add1_octet_string(ctx, ctx->op.kex.algctx == NULL,
                                           OSSL_KDF_PARAM_INFO,
                                           EVP_PKEY_OP_DERIVE,
                                           EVP_PKEY_CTRL_HKDF_INFO,
diff --git a/deps/openssl/openssl/crypto/evp/signature.c b/deps/openssl/openssl/crypto/evp/signature.c
index fb269b3bfd0717..8adf254d5eecbe 100644
--- a/deps/openssl/openssl/crypto/evp/signature.c
+++ b/deps/openssl/openssl/crypto/evp/signature.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2006-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -403,8 +403,8 @@ static int evp_pkey_signature_init(EVP_PKEY_CTX *ctx, int operation,
     int iter;
 
     if (ctx == NULL) {
-        ERR_raise(ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
-        return -2;
+        ERR_raise(ERR_LIB_EVP, ERR_R_PASSED_NULL_PARAMETER);
+        return -1;
     }
 
     evp_pkey_ctx_free_old_ops(ctx);
@@ -634,8 +634,8 @@ int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
     int ret;
 
     if (ctx == NULL) {
-        ERR_raise(ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
-        return -2;
+        ERR_raise(ERR_LIB_EVP, ERR_R_PASSED_NULL_PARAMETER);
+        return -1;
     }
 
     if (ctx->operation != EVP_PKEY_OP_SIGN) {
@@ -646,6 +646,11 @@ int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
     if (ctx->op.sig.algctx == NULL)
         goto legacy;
 
+    if (ctx->op.sig.signature->sign == NULL) {
+        ERR_raise(ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
+        return -2;
+    }
+
     ret = ctx->op.sig.signature->sign(ctx->op.sig.algctx, sig, siglen,
                                       (sig == NULL) ? 0 : *siglen, tbs, tbslen);
 
@@ -678,8 +683,8 @@ int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
     int ret;
 
     if (ctx == NULL) {
-        ERR_raise(ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
-        return -2;
+        ERR_raise(ERR_LIB_EVP, ERR_R_PASSED_NULL_PARAMETER);
+        return -1;
     }
 
     if (ctx->operation != EVP_PKEY_OP_VERIFY) {
@@ -690,6 +695,11 @@ int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
     if (ctx->op.sig.algctx == NULL)
         goto legacy;
 
+    if (ctx->op.sig.signature->verify == NULL) {
+        ERR_raise(ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
+        return -2;
+    }
+
     ret = ctx->op.sig.signature->verify(ctx->op.sig.algctx, sig, siglen,
                                         tbs, tbslen);
 
@@ -721,8 +731,8 @@ int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
     int ret;
 
     if (ctx == NULL) {
-        ERR_raise(ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
-        return -2;
+        ERR_raise(ERR_LIB_EVP, ERR_R_PASSED_NULL_PARAMETER);
+        return -1;
     }
 
     if (ctx->operation != EVP_PKEY_OP_VERIFYRECOVER) {
@@ -733,6 +743,11 @@ int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
     if (ctx->op.sig.algctx == NULL)
         goto legacy;
 
+    if (ctx->op.sig.signature->verify_recover == NULL) {
+        ERR_raise(ERR_LIB_EVP, EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
+        return -2;
+    }
+
     ret = ctx->op.sig.signature->verify_recover(ctx->op.sig.algctx, rout,
                                                 routlen,
                                                 (rout == NULL ? 0 : *routlen),
diff --git a/deps/openssl/openssl/crypto/init.c b/deps/openssl/openssl/crypto/init.c
index cacf637c89f8e8..659a660eeced68 100644
--- a/deps/openssl/openssl/crypto/init.c
+++ b/deps/openssl/openssl/crypto/init.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -97,17 +97,19 @@ static int win32atexit(void)
 
 DEFINE_RUN_ONCE_STATIC(ossl_init_register_atexit)
 {
-#ifdef OPENSSL_INIT_DEBUG
+#ifndef OPENSSL_NO_ATEXIT
+# ifdef OPENSSL_INIT_DEBUG
     fprintf(stderr, "OPENSSL_INIT: ossl_init_register_atexit()\n");
-#endif
-#ifndef OPENSSL_SYS_UEFI
-# if defined(_WIN32) && !defined(__BORLANDC__)
+# endif
+# ifndef OPENSSL_SYS_UEFI
+#  if defined(_WIN32) && !defined(__BORLANDC__)
     /* We use _onexit() in preference because it gets called on DLL unload */
     if (_onexit(win32atexit) == NULL)
         return 0;
-# else
+#  else
     if (atexit(OPENSSL_cleanup) != 0)
         return 0;
+#  endif
 # endif
 #endif
 
diff --git a/deps/openssl/openssl/crypto/o_str.c b/deps/openssl/openssl/crypto/o_str.c
index 7fa487dd5fcdec..c631f8aff26a60 100644
--- a/deps/openssl/openssl/crypto/o_str.c
+++ b/deps/openssl/openssl/crypto/o_str.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2003-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -251,7 +251,7 @@ static int buf2hexstr_sep(char *str, size_t str_n, size_t *strlength,
     *q = CH_ZERO;
 
 #ifdef CHARSET_EBCDIC
-    ebcdic2ascii(str, str, q - str - 1);
+    ebcdic2ascii(str, str, q - str);
 #endif
     return 1;
 }
diff --git a/deps/openssl/openssl/crypto/perlasm/x86asm.pl b/deps/openssl/openssl/crypto/perlasm/x86asm.pl
index 98a7159a5f131c..8dcde9eacaa3d1 100644
--- a/deps/openssl/openssl/crypto/perlasm/x86asm.pl
+++ b/deps/openssl/openssl/crypto/perlasm/x86asm.pl
@@ -174,9 +174,9 @@ sub ::vprotd
 
 sub ::endbranch
 {
-    &::generic("%ifdef __CET__\n");
+    &::generic("#ifdef __CET__\n");
     &::data_byte(0xf3,0x0f,0x1e,0xfb);
-    &::generic("%endif\n");
+    &::generic("#endif\n");
 }
 
 # label management
diff --git a/deps/openssl/openssl/crypto/property/property_parse.c b/deps/openssl/openssl/crypto/property/property_parse.c
index 19ea39a786eb05..45c798f1b50b10 100644
--- a/deps/openssl/openssl/crypto/property/property_parse.c
+++ b/deps/openssl/openssl/crypto/property/property_parse.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2019, Oracle and/or its affiliates.  All rights reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -14,6 +14,7 @@
 #include 
 #include "internal/propertyerr.h"
 #include "internal/property.h"
+#include "internal/numbers.h"
 #include "crypto/ctype.h"
 #include "internal/nelem.h"
 #include "property_local.h"
diff --git a/deps/openssl/openssl/crypto/provider_core.c b/deps/openssl/openssl/crypto/provider_core.c
index 4cadb6a9f02e59..cb4233eb52fd8d 100644
--- a/deps/openssl/openssl/crypto/provider_core.c
+++ b/deps/openssl/openssl/crypto/provider_core.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -567,8 +567,15 @@ OSSL_PROVIDER *ossl_provider_new(OSSL_LIB_CTX *libctx, const char *name,
     }
 
     /* provider_new() generates an error, so no need here */
-    if ((prov = provider_new(name, template.init, template.parameters)) == NULL)
+    prov = provider_new(name, template.init, template.parameters);
+
+    if (prov == NULL)
+        return NULL;
+
+    if (!ossl_provider_set_module_path(prov, template.path)) {
+        ossl_provider_free(prov);
         return NULL;
+    }
 
     prov->libctx = libctx;
 #ifndef FIPS_MODULE
diff --git a/deps/openssl/openssl/crypto/sha/build.info b/deps/openssl/openssl/crypto/sha/build.info
index d61f7de9b6bde8..186ec13cc82a12 100644
--- a/deps/openssl/openssl/crypto/sha/build.info
+++ b/deps/openssl/openssl/crypto/sha/build.info
@@ -88,7 +88,7 @@ DEFINE[../../providers/libdefault.a]=$SHA1DEF $KECCAK1600DEF
 # linked with libcrypto.  Otherwise, it already gets everything that
 # the static libcrypto.a has, and doesn't need it added again.
 IF[{- !$disabled{module} && !$disabled{shared} -}]
-  DEFINE[../providers/liblegacy.a]=$SHA1DEF $KECCAK1600DEF
+  DEFINE[../../providers/liblegacy.a]=$SHA1DEF $KECCAK1600DEF
 ENDIF
 
 GENERATE[sha1-586.S]=asm/sha1-586.pl
diff --git a/deps/openssl/openssl/crypto/sm2/sm2_crypt.c b/deps/openssl/openssl/crypto/sm2/sm2_crypt.c
index 5318c6199f6801..ff8171e39280dc 100644
--- a/deps/openssl/openssl/crypto/sm2/sm2_crypt.c
+++ b/deps/openssl/openssl/crypto/sm2/sm2_crypt.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2017 Ribose Inc. All Rights Reserved.
  * Ported from Ribose contributions from Botan.
  *
@@ -67,6 +67,18 @@ static size_t ec_field_size(const EC_GROUP *group)
     return field_size;
 }
 
+static int is_all_zeros(const unsigned char *msg, size_t msglen)
+{
+    unsigned char re = 0;
+    size_t i;
+
+    for (i = 0; i < msglen; i++) {
+        re |= msg[i];
+    }
+
+    return re == 0 ? 1 : 0;
+}
+
 int ossl_sm2_plaintext_size(const unsigned char *ct, size_t ct_size,
                             size_t *pt_size)
 {
@@ -179,6 +191,13 @@ int ossl_sm2_encrypt(const EC_KEY *key,
 
     memset(ciphertext_buf, 0, *ciphertext_len);
 
+    msg_mask = OPENSSL_zalloc(msg_len);
+    if (msg_mask == NULL) {
+       ERR_raise(ERR_LIB_SM2, ERR_R_MALLOC_FAILURE);
+       goto done;
+    }
+
+again:
     if (!BN_priv_rand_range_ex(k, order, 0, ctx)) {
         ERR_raise(ERR_LIB_SM2, ERR_R_INTERNAL_ERROR);
         goto done;
@@ -198,12 +217,6 @@ int ossl_sm2_encrypt(const EC_KEY *key,
         goto done;
     }
 
-    msg_mask = OPENSSL_zalloc(msg_len);
-    if (msg_mask == NULL) {
-       ERR_raise(ERR_LIB_SM2, ERR_R_MALLOC_FAILURE);
-       goto done;
-   }
-
     /* X9.63 with no salt happens to match the KDF used in SM2 */
     if (!ossl_ecdh_kdf_X9_63(msg_mask, msg_len, x2y2, 2 * field_size, NULL, 0,
                              digest, libctx, propq)) {
@@ -211,6 +224,11 @@ int ossl_sm2_encrypt(const EC_KEY *key,
         goto done;
     }
 
+    if (is_all_zeros(msg_mask, msg_len)) {
+        memset(x2y2, 0, 2 * field_size);
+        goto again;
+    }
+
     for (i = 0; i != msg_len; ++i)
         msg_mask[i] ^= msg[i];
 
@@ -364,6 +382,11 @@ int ossl_sm2_decrypt(const EC_KEY *key,
         goto done;
     }
 
+    if (is_all_zeros(msg_mask, msg_len)) {
+        ERR_raise(ERR_LIB_SM2, SM2_R_INVALID_ENCODING);
+        goto done;
+    }
+
     for (i = 0; i != msg_len; ++i)
         ptext_buf[i] = C2[i] ^ msg_mask[i];
 
diff --git a/deps/openssl/openssl/crypto/sm2/sm2_sign.c b/deps/openssl/openssl/crypto/sm2/sm2_sign.c
index ff5be9b73e9fb0..71ccfcfc4c3dee 100644
--- a/deps/openssl/openssl/crypto/sm2/sm2_sign.c
+++ b/deps/openssl/openssl/crypto/sm2/sm2_sign.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2017 Ribose Inc. All Rights Reserved.
  * Ported from Ribose contributions from Botan.
  *
@@ -29,6 +29,7 @@ int ossl_sm2_compute_z_digest(uint8_t *out,
 {
     int rc = 0;
     const EC_GROUP *group = EC_KEY_get0_group(key);
+    const EC_POINT *pubkey = EC_KEY_get0_public_key(key);
     BN_CTX *ctx = NULL;
     EVP_MD_CTX *hash = NULL;
     BIGNUM *p = NULL;
@@ -43,6 +44,12 @@ int ossl_sm2_compute_z_digest(uint8_t *out,
     uint16_t entl = 0;
     uint8_t e_byte = 0;
 
+    /* SM2 Signatures require a public key, check for it */
+    if (pubkey == NULL) {
+        ERR_raise(ERR_LIB_SM2, ERR_R_PASSED_NULL_PARAMETER);
+        goto done;
+    }
+
     hash = EVP_MD_CTX_new();
     ctx = BN_CTX_new_ex(ossl_ec_key_get_libctx(key));
     if (hash == NULL || ctx == NULL) {
@@ -118,7 +125,7 @@ int ossl_sm2_compute_z_digest(uint8_t *out,
             || BN_bn2binpad(yG, buf, p_bytes) < 0
             || !EVP_DigestUpdate(hash, buf, p_bytes)
             || !EC_POINT_get_affine_coordinates(group,
-                                                EC_KEY_get0_public_key(key),
+                                                pubkey,
                                                 xA, yA, ctx)
             || BN_bn2binpad(xA, buf, p_bytes) < 0
             || !EVP_DigestUpdate(hash, buf, p_bytes)
@@ -442,6 +449,11 @@ int ossl_sm2_internal_sign(const unsigned char *dgst, int dgstlen,
     int sigleni;
     int ret = -1;
 
+    if (sig == NULL) {
+        ERR_raise(ERR_LIB_SM2, ERR_R_PASSED_NULL_PARAMETER);
+        goto done;
+    }
+
     e = BN_bin2bn(dgst, dgstlen, NULL);
     if (e == NULL) {
        ERR_raise(ERR_LIB_SM2, ERR_R_BN_LIB);
@@ -454,7 +466,7 @@ int ossl_sm2_internal_sign(const unsigned char *dgst, int dgstlen,
         goto done;
     }
 
-    sigleni = i2d_ECDSA_SIG(s, sig != NULL ? &sig : NULL);
+    sigleni = i2d_ECDSA_SIG(s, &sig);
     if (sigleni < 0) {
        ERR_raise(ERR_LIB_SM2, ERR_R_INTERNAL_ERROR);
        goto done;
diff --git a/deps/openssl/openssl/crypto/x509/v3_addr.c b/deps/openssl/openssl/crypto/x509/v3_addr.c
index 4930f33124222f..20f3d2ba70deaa 100644
--- a/deps/openssl/openssl/crypto/x509/v3_addr.c
+++ b/deps/openssl/openssl/crypto/x509/v3_addr.c
@@ -397,11 +397,11 @@ static int make_addressPrefix(IPAddressOrRange **result, unsigned char *addr,
                               const int prefixlen, const int afilen)
 {
     int bytelen = (prefixlen + 7) / 8, bitlen = prefixlen % 8;
-    IPAddressOrRange *aor = IPAddressOrRange_new();
+    IPAddressOrRange *aor;
 
     if (prefixlen < 0 || prefixlen > (afilen * 8))
         return 0;
-    if (aor == NULL)
+    if ((aor = IPAddressOrRange_new()) == NULL)
         return 0;
     aor->type = IPAddressOrRange_addressPrefix;
     if (aor->u.addressPrefix == NULL &&
diff --git a/deps/openssl/openssl/demos/digest/EVP_MD_demo.c b/deps/openssl/openssl/demos/digest/EVP_MD_demo.c
index 99589bd3446b61..79e585d0ba4f60 100644
--- a/deps/openssl/openssl/demos/digest/EVP_MD_demo.c
+++ b/deps/openssl/openssl/demos/digest/EVP_MD_demo.c
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -83,7 +83,7 @@ int demonstrate_digest(void)
     const char *option_properties = NULL;
     EVP_MD *message_digest = NULL;
     EVP_MD_CTX *digest_context = NULL;
-    unsigned int digest_length;
+    int digest_length;
     unsigned char *digest_value = NULL;
     int j;
 
diff --git a/deps/openssl/openssl/demos/digest/EVP_MD_stdin.c b/deps/openssl/openssl/demos/digest/EVP_MD_stdin.c
index 71a3d325a364e0..47e6b523857c7d 100644
--- a/deps/openssl/openssl/demos/digest/EVP_MD_stdin.c
+++ b/deps/openssl/openssl/demos/digest/EVP_MD_stdin.c
@@ -1,5 +1,5 @@
 /*-
- * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -38,7 +38,7 @@ int demonstrate_digest(BIO *input)
     const char * option_properties = NULL;
     EVP_MD *message_digest = NULL;
     EVP_MD_CTX *digest_context = NULL;
-    unsigned int digest_length;
+    int digest_length;
     unsigned char *digest_value = NULL;
     unsigned char buffer[512];
     int ii;
diff --git a/deps/openssl/openssl/doc/fingerprints.txt b/deps/openssl/openssl/doc/fingerprints.txt
index 9a26f7c66722c8..9613cbac98486d 100644
--- a/deps/openssl/openssl/doc/fingerprints.txt
+++ b/deps/openssl/openssl/doc/fingerprints.txt
@@ -15,6 +15,9 @@ currently in use to sign OpenSSL distributions:
 OpenSSL OMC:
 EFC0 A467 D613 CB83 C7ED 6D30 D894 E2CE 8B3D 79F5
 
+OpenSSL:
+BA54 73A2 B058 7B07 FB27 CF2D 2160 94DF D0CB 81EF
+
 Richard Levitte:
 7953 AC1F BC3D C8B3 B292 393E D5E9 E43F 7DF9 EE8C
 
diff --git a/deps/openssl/openssl/doc/internal/man3/OPTIONS.pod b/deps/openssl/openssl/doc/internal/man3/OPTIONS.pod
index 90593ca46f6fd3..dbdd39a2ee645a 100644
--- a/deps/openssl/openssl/doc/internal/man3/OPTIONS.pod
+++ b/deps/openssl/openssl/doc/internal/man3/OPTIONS.pod
@@ -155,7 +155,7 @@ on multiple lines; each entry should use B, like this:
         {OPT_MORE_STR, 0, 0,
          "This flag is not really needed on Unix systems"},
         {OPT_MORE_STR, 0, 0,
-         "(Unix and descendents for ths win!)"}
+         "(Unix and descendents for the win!)"}
 
 Each subsequent line will be indented the correct amount.
 
@@ -333,7 +333,7 @@ things very differently.
 
 =head1 COPYRIGHT
 
-Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use this
 file except in compliance with the License.  You can obtain a copy in the file
diff --git a/deps/openssl/openssl/doc/internal/man3/ossl_method_construct.pod b/deps/openssl/openssl/doc/internal/man3/ossl_method_construct.pod
index 3683798b06b49b..422d7a5b6850a2 100644
--- a/deps/openssl/openssl/doc/internal/man3/ossl_method_construct.pod
+++ b/deps/openssl/openssl/doc/internal/man3/ossl_method_construct.pod
@@ -93,7 +93,7 @@ This default store should be stored in the library context I.
 The method to be looked up should be identified with data found in I
 (which is the I that was passed to ossl_construct_method()).
 In other words, the ossl_method_construct() caller is entirely responsible
-for ensuring the necesssary data is made available.
+for ensuring the necessary data is made available.
 
 Optionally, I may be given as a search criterion, to narrow down the
 search of a method belonging to just one provider.
@@ -148,7 +148,7 @@ This functionality was added to OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use this
 file except in compliance with the License.  You can obtain a copy in the file
diff --git a/deps/openssl/openssl/doc/internal/man3/ossl_provider_new.pod b/deps/openssl/openssl/doc/internal/man3/ossl_provider_new.pod
index 8bd5594c484c47..193472462b38a6 100644
--- a/deps/openssl/openssl/doc/internal/man3/ossl_provider_new.pod
+++ b/deps/openssl/openssl/doc/internal/man3/ossl_provider_new.pod
@@ -297,7 +297,7 @@ in a bitstring that's internal to I.
 
 ossl_provider_test_operation_bit() checks if the bit operation I
 is set (1) or not (0) in the internal I bitstring, and sets
-I<*result> to 1 or 0 accorddingly.
+I<*result> to 1 or 0 accordingly.
 
 ossl_provider_init_as_child() stores in the library context I references to
 the necessary upcalls for managing child providers. The I and I
@@ -390,7 +390,7 @@ The functions described here were all added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/internal/man3/ossl_random_add_conf_module.pod b/deps/openssl/openssl/doc/internal/man3/ossl_random_add_conf_module.pod
index 6d4f5810dcddb7..a3c1285fe01bb7 100644
--- a/deps/openssl/openssl/doc/internal/man3/ossl_random_add_conf_module.pod
+++ b/deps/openssl/openssl/doc/internal/man3/ossl_random_add_conf_module.pod
@@ -15,7 +15,7 @@ ossl_random_add_conf_module - internal random configuration module
 
 ossl_random_add_conf_module() adds the random configuration module
 for providers.
-This allows the type and parameters of the stardard setup of random number
+This allows the type and parameters of the standard setup of random number
 generators to be configured with an OpenSSL L file.
 
 =head1 RETURN VALUES
@@ -32,7 +32,7 @@ The functions described here were all added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/internal/man7/EVP_PKEY.pod b/deps/openssl/openssl/doc/internal/man7/EVP_PKEY.pod
index cc738b9c28ebcc..3dc10fa4104cf1 100644
--- a/deps/openssl/openssl/doc/internal/man7/EVP_PKEY.pod
+++ b/deps/openssl/openssl/doc/internal/man7/EVP_PKEY.pod
@@ -19,7 +19,7 @@ private/public key pairs, but has had other uses as well.
 
 =for comment "uses" could as well be "abuses"...
 
-The private/public key pair that an B contains is refered to
+The private/public key pair that an B contains is referred to
 as its "internal key" or "origin" (the reason for "origin" is
 explained further down, in L),
 and it can take one of the following forms:
@@ -202,7 +202,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-crl.pod.in b/deps/openssl/openssl/doc/man1/openssl-crl.pod.in
index 7e15f6445a6f25..5ace18f5807f31 100644
--- a/deps/openssl/openssl/doc/man1/openssl-crl.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-crl.pod.in
@@ -95,6 +95,9 @@ Print out the CRL in text form.
 
 Verify the signature in the CRL.
 
+This option is implicitly enabled if any of B<-CApath>, B<-CAfile>
+or B<-CAstore> is specified.
+
 =item B<-noout>
 
 Don't output the encoded version of the CRL.
@@ -162,7 +165,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-mac.pod.in b/deps/openssl/openssl/doc/man1/openssl-mac.pod.in
index 56397479910993..5ed97969738182 100644
--- a/deps/openssl/openssl/doc/man1/openssl-mac.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-mac.pod.in
@@ -123,26 +123,31 @@ To see the list of supported MAC's use the command C
 
 =head1 COPYRIGHT
 
-Copyright 2018-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2018-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-req.pod.in b/deps/openssl/openssl/doc/man1/openssl-req.pod.in
index 31fd71418773cf..a56f548de8ee08 100644
--- a/deps/openssl/openssl/doc/man1/openssl-req.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-req.pod.in
@@ -472,16 +472,29 @@ any digest that has been set.
 =item B
 
 This option masks out the use of certain string types in certain
-fields. Most users will not need to change this option.
+fields. Most users will not need to change this option. It can be set to
+several values:
 
-It can be set to several values B which is also the default
-option uses PrintableStrings, T61Strings and BMPStrings if the
-B value is used then only PrintableStrings and BMPStrings will
-be used. This follows the PKIX recommendation in RFC2459. If the
-B option is used then only UTF8Strings will be used: this
-is the PKIX recommendation in RFC2459 after 2003. Finally the B
-option just uses PrintableStrings and T61Strings: certain software has
-problems with BMPStrings and UTF8Strings: in particular Netscape.
+=over 4
+
+=item B
+- only UTF8Strings are used (this is the default value)
+
+=item B
+- any string type except T61Strings
+
+=item B
+- any string type except BMPStrings and UTF8Strings
+
+=item B
+- any kind of string type
+
+=back
+
+Note that B is the PKIX recommendation in RFC2459 after 2003, and the
+default B; B is not the default option. The B
+value is a workaround for some software that has problems with variable-sized
+BMPStrings and UTF8Strings.
 
 =item B
 
@@ -765,7 +778,7 @@ The <-nodes> option was deprecated in OpenSSL 3.0, too; use B<-noenc> instead.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-smime.pod.in b/deps/openssl/openssl/doc/man1/openssl-smime.pod.in
index e438c866c38307..0b5dbb5df8f7fc 100644
--- a/deps/openssl/openssl/doc/man1/openssl-smime.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-smime.pod.in
@@ -195,14 +195,14 @@ Don't try to verify the signatures on the message.
 
 =item B<-nocerts>
 
-When signing a message the signer's certificate is normally included
-with this option it is excluded. This will reduce the size of the
-signed message but the verifier must have a copy of the signers certificate
+When signing a message, the signer's certificate is normally included.
+With this option it is excluded. This will reduce the size of the
+signed message, but the verifier must have a copy of the signers certificate
 available locally (passed using the B<-certfile> option for example).
 
 =item B<-noattr>
 
-Normally when a message is signed a set of attributes are included which
+Normally, when a message is signed, a set of attributes are included which
 include the signing time and supported symmetric algorithms. With this
 option they are not included.
 
@@ -243,14 +243,6 @@ used multiple times if more than one signer is required. If a message is being
 verified then the signers certificates will be written to this file if the
 verification was successful.
 
-=item B<-nocerts>
-
-Don't include signers certificate when signing.
-
-=item B<-noattr>
-
-Don't include any signed attributes when signing.
-
 =item B<-recip> I
 
 The recipients certificate when decrypting a message. This certificate
@@ -482,7 +474,7 @@ The B<-engine> option was deprecated in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-storeutl.pod.in b/deps/openssl/openssl/doc/man1/openssl-storeutl.pod.in
index 26d5ee28e647d2..2b619d7c356e81 100644
--- a/deps/openssl/openssl/doc/man1/openssl-storeutl.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-storeutl.pod.in
@@ -79,6 +79,9 @@ returned.
 Note that all options must be given before the I argument.
 Otherwise they are ignored.
 
+Note I<-keys> selects exclusively private keys, there is no selector for public
+keys only.
+
 =item B<-subject> I
 
 Search for an object having the subject name I.
@@ -137,7 +140,7 @@ The B<-engine> option was deprecated in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-ts.pod.in b/deps/openssl/openssl/doc/man1/openssl-ts.pod.in
index 3e7f7c4be94b2d..5f4895b34d6c4c 100644
--- a/deps/openssl/openssl/doc/man1/openssl-ts.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-ts.pod.in
@@ -163,9 +163,9 @@ use its own default policy. (Optional)
 =item B<-no_nonce>
 
 No nonce is specified in the request if this option is
-given. Otherwise a 64 bit long pseudo-random none is
-included in the request. It is recommended to use nonce to
-protect against replay-attacks. (Optional)
+given. Otherwise, a 64-bit long pseudo-random nonce is
+included in the request. It is recommended to use a nonce to
+protect against replay attacks. (Optional)
 
 =item B<-cert>
 
@@ -652,7 +652,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2006-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2006-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/DEFINE_STACK_OF.pod b/deps/openssl/openssl/doc/man3/DEFINE_STACK_OF.pod
index 0775214fb5d7e6..3ebd473afcb250 100644
--- a/deps/openssl/openssl/doc/man3/DEFINE_STACK_OF.pod
+++ b/deps/openssl/openssl/doc/man3/DEFINE_STACK_OF.pod
@@ -41,8 +41,8 @@ OPENSSL_sk_unshift, OPENSSL_sk_value, OPENSSL_sk_zero
  STACK_OF(TYPE) *sk_TYPE_new(sk_TYPE_compfunc compare);
  STACK_OF(TYPE) *sk_TYPE_new_null(void);
  int sk_TYPE_reserve(STACK_OF(TYPE) *sk, int n);
- void sk_TYPE_free(const STACK_OF(TYPE) *sk);
- void sk_TYPE_zero(const STACK_OF(TYPE) *sk);
+ void sk_TYPE_free(STACK_OF(TYPE) *sk);
+ void sk_TYPE_zero(STACK_OF(TYPE) *sk);
  TYPE *sk_TYPE_delete(STACK_OF(TYPE) *sk, int i);
  TYPE *sk_TYPE_delete_ptr(STACK_OF(TYPE) *sk, TYPE *ptr);
  int sk_TYPE_push(STACK_OF(TYPE) *sk, const TYPE *ptr);
@@ -297,7 +297,7 @@ B_reserve>() and B_new_reserve>() were added in OpenSSL
 
 =head1 COPYRIGHT
 
-Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_DigestInit.pod b/deps/openssl/openssl/doc/man3/EVP_DigestInit.pod
index 1953df3c5e8d45..d7202c538172a6 100644
--- a/deps/openssl/openssl/doc/man3/EVP_DigestInit.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_DigestInit.pod
@@ -483,7 +483,7 @@ EVP_MD_CTX_get_params() can be used with the following OSSL_PARAM keys:
 
 =over 4
 
-=item "micalg" (B) .
+=item "micalg" (B) .
 
 Gets the digest Message Integrity Check algorithm string. This is used when
 creating S/MIME multipart/signed messages, as specified in RFC 3851.
@@ -784,7 +784,7 @@ in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_KDF.pod b/deps/openssl/openssl/doc/man3/EVP_KDF.pod
index 31d61b2a3df0a7..9447651a340e44 100644
--- a/deps/openssl/openssl/doc/man3/EVP_KDF.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_KDF.pod
@@ -20,7 +20,7 @@ EVP_KDF_CTX_gettable_params, EVP_KDF_CTX_settable_params - EVP KDF routines
  typedef struct evp_kdf_st EVP_KDF;
  typedef struct evp_kdf_ctx_st EVP_KDF_CTX;
 
- EVP_KDF_CTX *EVP_KDF_CTX_new(const EVP_KDF *kdf);
+ EVP_KDF_CTX *EVP_KDF_CTX_new(EVP_KDF *kdf);
  const EVP_KDF *EVP_KDF_CTX_kdf(EVP_KDF_CTX *ctx);
  void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx);
  EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src);
@@ -304,7 +304,7 @@ This functionality was added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_PKEY_CTX_set_params.pod b/deps/openssl/openssl/doc/man3/EVP_PKEY_CTX_set_params.pod
index c02151654c3a62..8947648ccbe699 100644
--- a/deps/openssl/openssl/doc/man3/EVP_PKEY_CTX_set_params.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_PKEY_CTX_set_params.pod
@@ -23,7 +23,9 @@ The EVP_PKEY_CTX_get_params() and EVP_PKEY_CTX_set_params() functions allow
 transfer of arbitrary key parameters to and from providers.
 Not all parameters may be supported by all providers.
 See L for more information on providers.
-See L for more information on parameters.
+The I field is a pointer to a list of B structures,
+terminated with a L struct.
+See L for information about passing parameters.
 These functions must only be called after the EVP_PKEY_CTX has been initialised
 for use in an operation.
 These methods replace the EVP_PKEY_CTX_ctrl() mechanism. (EVP_PKEY_CTX_ctrl now
@@ -84,7 +86,7 @@ All functions were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_PKEY_check.pod b/deps/openssl/openssl/doc/man3/EVP_PKEY_check.pod
index a16fdbbd508f04..04751f0bd5c784 100644
--- a/deps/openssl/openssl/doc/man3/EVP_PKEY_check.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_PKEY_check.pod
@@ -61,6 +61,11 @@ It is not necessary to call these functions after locally calling an approved ke
 generation method, but may be required for assurance purposes when receiving
 keys from a third party.
 
+The EVP_PKEY_pairwise_check() and EVP_PKEY_private_check() might not be bounded
+by any key size limits as private keys are not expected to be supplied by
+attackers. For that reason they might take an unbounded time if run on
+arbitrarily large keys.
+
 =head1 RETURN VALUES
 
 All functions return 1 for success or others for failure.
@@ -86,7 +91,7 @@ EVP_PKEY_private_check() and EVP_PKEY_pairwise_check() were added in OpenSSL 3.0
 
 =head1 COPYRIGHT
 
-Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2006-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/SSL_CIPHER_get_name.pod b/deps/openssl/openssl/doc/man3/SSL_CIPHER_get_name.pod
index 7f00f09d67f8ff..a55ad4d980f9b9 100644
--- a/deps/openssl/openssl/doc/man3/SSL_CIPHER_get_name.pod
+++ b/deps/openssl/openssl/doc/man3/SSL_CIPHER_get_name.pod
@@ -120,7 +120,7 @@ cipher B.
 
 SSL_CIPHER_description() returns a textual description of the cipher used
 into the buffer B of length B provided.  If B is provided, it
-must be at least 128 bytes, otherwise a buffer will be allocated using
+must be at least 128 bytes. If B is NULL it will be allocated using
 OPENSSL_malloc().  If the provided buffer is too small, or the allocation fails,
 B is returned.
 
@@ -216,7 +216,7 @@ The SSL_CIPHER_get_prf_nid() function was added in OpenSSL 3.0.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/SSL_CTX_set_cert_store.pod b/deps/openssl/openssl/doc/man3/SSL_CTX_set_cert_store.pod
index f1fef9e649cd1b..246f413136b64a 100644
--- a/deps/openssl/openssl/doc/man3/SSL_CTX_set_cert_store.pod
+++ b/deps/openssl/openssl/doc/man3/SSL_CTX_set_cert_store.pod
@@ -16,7 +16,9 @@ SSL_CTX_set_cert_store, SSL_CTX_set1_cert_store, SSL_CTX_get_cert_store - manipu
 
 SSL_CTX_set_cert_store() sets/replaces the certificate verification storage
 of B to/with B. If another X509_STORE object is currently
-set in B, it will be X509_STORE_free()ed.
+set in B, it will be X509_STORE_free()ed. SSL_CTX_set_cert_store() will
+take ownership of the B, i.e., the call C is no
+longer needed.
 
 SSL_CTX_set1_cert_store() sets/replaces the certificate verification storage
 of B to/with B. The B's reference count is incremented.
@@ -79,7 +81,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/SSL_CTX_set_verify.pod b/deps/openssl/openssl/doc/man3/SSL_CTX_set_verify.pod
index 9d4abac30eba53..346aa8452974df 100644
--- a/deps/openssl/openssl/doc/man3/SSL_CTX_set_verify.pod
+++ b/deps/openssl/openssl/doc/man3/SSL_CTX_set_verify.pod
@@ -144,6 +144,9 @@ B ignored (see BUGS)
 
 If the B is SSL_VERIFY_NONE none of the other flags may be set.
 
+If verification flags are not modified explicitly by C
+or C, the default value will be SSL_VERIFY_NONE.
+
 The actual verification procedure is performed either using the built-in
 verification procedure or using another application provided verification
 function set with
@@ -363,7 +366,7 @@ and SSL_set_post_handshake_auth() functions were added in OpenSSL 1.1.1.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/SSL_CTX_use_certificate.pod b/deps/openssl/openssl/doc/man3/SSL_CTX_use_certificate.pod
index ca1827dada8a8d..dd6f831b8658cd 100644
--- a/deps/openssl/openssl/doc/man3/SSL_CTX_use_certificate.pod
+++ b/deps/openssl/openssl/doc/man3/SSL_CTX_use_certificate.pod
@@ -68,7 +68,7 @@ SSL_use_certificate() loads B into B. The rest of the
 certificates needed to form the complete certificate chain can be
 specified using the
 L
-function.
+function. On success the reference counter of the B is incremented.
 
 SSL_CTX_use_certificate_ASN1() loads the ASN1 encoded certificate from
 the memory location B (with length B) into B,
@@ -97,6 +97,7 @@ to the certificate an error is returned. To change a [certificate/private-key]
 pair, the new certificate needs to be set first with SSL_use_certificate() or
 SSL_CTX_use_certificate() before setting the private key with
 SSL_CTX_use_PrivateKey() or SSL_use_PrivateKey().
+On success the reference counter of the B/B is incremented.
 
 SSL_CTX_use_cert_and_key() and SSL_use_cert_and_key() assign the X.509
 certificate B, private key B, and certificate B onto the
@@ -195,7 +196,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/SSL_load_client_CA_file.pod b/deps/openssl/openssl/doc/man3/SSL_load_client_CA_file.pod
index 988c7e89340755..08a6c15e46d965 100644
--- a/deps/openssl/openssl/doc/man3/SSL_load_client_CA_file.pod
+++ b/deps/openssl/openssl/doc/man3/SSL_load_client_CA_file.pod
@@ -54,7 +54,8 @@ it is not limited to CA certificates.
 
 =head1 RETURN VALUES
 
-The following return values can occur:
+The following return values can occur for SSL_load_client_CA_file_ex(), and
+SSL_load_client_CA_file():
 
 =over 4
 
@@ -68,6 +69,21 @@ Pointer to the subject names of the successfully read certificates.
 
 =back
 
+The following return values can occur for SSL_add_file_cert_subjects_to_stack(),
+SSL_add_dir_cert_subjects_to_stack(), and SSL_add_store_cert_subjects_to_stack():
+
+=over 4
+
+=item 0 (Failure)
+
+The operation failed.
+
+=item 1 (Success)
+
+The operation succeeded.
+
+=back
+
 =head1 EXAMPLES
 
 Load names of CAs from file and use it as a client CA list:
@@ -96,7 +112,7 @@ were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man7/EVP_PKEY-SM2.pod b/deps/openssl/openssl/doc/man7/EVP_PKEY-SM2.pod
index 8bdc506cec21f7..28a0e995d5d1a6 100644
--- a/deps/openssl/openssl/doc/man7/EVP_PKEY-SM2.pod
+++ b/deps/openssl/openssl/doc/man7/EVP_PKEY-SM2.pod
@@ -38,6 +38,9 @@ Getter that returns the default digest name.
 B signatures can be generated by using the 'DigestSign' series of APIs, for
 instance, EVP_DigestSignInit(), EVP_DigestSignUpdate() and EVP_DigestSignFinal().
 Ditto for the verification process by calling the 'DigestVerify' series of APIs.
+Note that the SM2 algorithm requires the presence of the public key for signatures,
+as such the B option must be set on any key used in signature
+generation.
 
 Before computing an B signature, an B needs to be created,
 and an B ID must be set for it, like this:
@@ -84,7 +87,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2018-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2018-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man7/migration_guide.pod b/deps/openssl/openssl/doc/man7/migration_guide.pod
index 61641324a7fc9d..e5ab29b95370b2 100644
--- a/deps/openssl/openssl/doc/man7/migration_guide.pod
+++ b/deps/openssl/openssl/doc/man7/migration_guide.pod
@@ -136,6 +136,14 @@ To ensure the future compatibility, the engines should be turned to providers.
 To prefer the provider-based hardware offload, you can specify the default
 properties to prefer your provider.
 
+Setting engine-based or application-based default low-level crypto method such
+as B or B is still possible and keys inside the
+default provider will use the engine-based implementation for the crypto
+operations. However Bs created by decoding by using B,
+B or B APIs will be provider-based. To create a fully legacy
+Bs L, L or similar
+functions must be used.
+
 =head3 Versioning Scheme
 
 The OpenSSL versioning scheme has changed with the OpenSSL 3.0 release. The new
@@ -1298,7 +1306,7 @@ d2i_DSAPrivateKey_bio(), d2i_DSAPrivateKey_fp(), d2i_DSA_PUBKEY(),
 d2i_DSA_PUBKEY_bio(), d2i_DSA_PUBKEY_fp(), d2i_DSAPublicKey(),
 d2i_ECParameters(), d2i_ECPrivateKey(), d2i_ECPrivateKey_bio(),
 d2i_ECPrivateKey_fp(), d2i_EC_PUBKEY(), d2i_EC_PUBKEY_bio(),
-d2i_EC_PUBKEY_fp(), o2i_ECPublicKey(), d2i_RSAPrivateKey(),
+d2i_EC_PUBKEY_fp(), d2i_RSAPrivateKey(),
 d2i_RSAPrivateKey_bio(), d2i_RSAPrivateKey_fp(), d2i_RSA_PUBKEY(),
 d2i_RSA_PUBKEY_bio(), d2i_RSA_PUBKEY_fp(), d2i_RSAPublicKey(),
 d2i_RSAPublicKey_bio(), d2i_RSAPublicKey_fp()
@@ -1307,6 +1315,13 @@ See L
 
 =item *
 
+o2i_ECPublicKey()
+
+Use L.
+See L
+
+=item *
+
 DES_crypt(), DES_fcrypt(), DES_encrypt1(), DES_encrypt2(), DES_encrypt3(),
 DES_decrypt3(), DES_ede3_cbc_encrypt(), DES_ede3_cfb64_encrypt(),
 DES_ede3_cfb_encrypt(),DES_ede3_ofb64_encrypt(),
@@ -1857,13 +1872,20 @@ and L
 
 i2d_ECParameters(), i2d_ECPrivateKey(), i2d_ECPrivateKey_bio(),
 i2d_ECPrivateKey_fp(), i2d_EC_PUBKEY(), i2d_EC_PUBKEY_bio(),
-i2d_EC_PUBKEY_fp(), i2o_ECPublicKey()
+i2d_EC_PUBKEY_fp()
 
 See L
 and L
 
 =item *
 
+i2o_ECPublicKey()
+
+Use L.
+See L
+
+=item *
+
 i2d_RSAPrivateKey(), i2d_RSAPrivateKey_bio(), i2d_RSAPrivateKey_fp(),
 i2d_RSA_PUBKEY(), i2d_RSA_PUBKEY_bio(), i2d_RSA_PUBKEY_fp(),
 i2d_RSAPublicKey(), i2d_RSAPublicKey_bio(), i2d_RSAPublicKey_fp()
@@ -2462,7 +2484,7 @@ The migration guide was created for OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/e_os.h b/deps/openssl/openssl/e_os.h
index db05b7f8150f89..72eab92eeb4b89 100644
--- a/deps/openssl/openssl/e_os.h
+++ b/deps/openssl/openssl/e_os.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -296,20 +296,18 @@ static ossl_inline void ossl_sleep(unsigned long millis)
     ts.tv_sec = (long int) (millis / 1000);
     ts.tv_nsec = (long int) (millis % 1000) * 1000000ul;
     nanosleep(&ts, NULL);
-# elif defined(__TANDEM)
-#  if !defined(_REENTRANT)
+# elif defined(__TANDEM) && !defined(_REENTRANT)
 #   include 
+
     /* HPNS does not support usleep for non threaded apps */
     PROCESS_DELAY_(millis * 1000);
-#  elif defined(_SPT_MODEL_)
-#   include 
-#   include 
-    usleep(millis * 1000);
-#  else
-    usleep(millis * 1000);
-#  endif
 # else
-    usleep(millis * 1000);
+    unsigned int s = (unsigned int)(millis / 1000);
+    unsigned int us = (unsigned int)((millis % 1000) * 1000);
+
+    if (s > 0)
+        sleep(s);
+    usleep(us);
 # endif
 }
 #elif defined(_WIN32)
diff --git a/deps/openssl/openssl/engines/e_afalg.c b/deps/openssl/openssl/engines/e_afalg.c
index 2c08cbb28dde39..ec4e21c582c8e8 100644
--- a/deps/openssl/openssl/engines/e_afalg.c
+++ b/deps/openssl/openssl/engines/e_afalg.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -811,8 +811,10 @@ static int bind_helper(ENGINE *e, const char *id)
     if (!afalg_chk_platform())
         return 0;
 
-    if (!bind_afalg(e))
+    if (!bind_afalg(e)) {
+        afalg_destroy(e);
         return 0;
+    }
     return 1;
 }
 
diff --git a/deps/openssl/openssl/engines/e_dasync.c b/deps/openssl/openssl/engines/e_dasync.c
index 7974106ae2197f..329d618f555297 100644
--- a/deps/openssl/openssl/engines/e_dasync.c
+++ b/deps/openssl/openssl/engines/e_dasync.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -985,7 +985,7 @@ static int dasync_rsa_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out,
                              size_t inlen);
 
     if (pdecrypt == NULL)
-        EVP_PKEY_meth_get_encrypt(dasync_rsa_orig, NULL, &pdecrypt);
+        EVP_PKEY_meth_get_decrypt(dasync_rsa_orig, NULL, &pdecrypt);
     return pdecrypt(ctx, out, outlen, in, inlen);
 }
 
diff --git a/deps/openssl/openssl/fuzz/asn1.c b/deps/openssl/openssl/fuzz/asn1.c
index ee602a08a3d912..f7a019774b9ddd 100644
--- a/deps/openssl/openssl/fuzz/asn1.c
+++ b/deps/openssl/openssl/fuzz/asn1.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -312,10 +312,16 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len)
         ASN1_VALUE *o = ASN1_item_d2i(NULL, &b, len, i);
 
         if (o != NULL) {
-            BIO *bio = BIO_new(BIO_s_null());
-            if (bio != NULL) {
-                ASN1_item_print(bio, o, 4, i, pctx);
-                BIO_free(bio);
+            /*
+             * Don't print excessively long output to prevent spurious fuzzer
+             * timeouts.
+             */
+            if (b - buf < 10000) {
+                BIO *bio = BIO_new(BIO_s_null());
+                if (bio != NULL) {
+                    ASN1_item_print(bio, o, 4, i, pctx);
+                    BIO_free(bio);
+                }
             }
             if (ASN1_item_i2d(o, &der, i) > 0) {
                 OPENSSL_free(der);
diff --git a/deps/openssl/openssl/include/crypto/bn.h b/deps/openssl/openssl/include/crypto/bn.h
index fd1c09d997de5b..4cc23bd146fe0b 100644
--- a/deps/openssl/openssl/include/crypto/bn.h
+++ b/deps/openssl/openssl/include/crypto/bn.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2014-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -87,6 +87,14 @@ int bn_lshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n);
 int bn_rshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n);
 int bn_div_fixed_top(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,
                      const BIGNUM *d, BN_CTX *ctx);
+int ossl_bn_mask_bits_fixed_top(BIGNUM *a, int n);
+int ossl_bn_is_word_fixed_top(const BIGNUM *a, BN_ULONG w);
+int ossl_bn_priv_rand_range_fixed_top(BIGNUM *r, const BIGNUM *range,
+                                      unsigned int strength, BN_CTX *ctx);
+int ossl_bn_gen_dsa_nonce_fixed_top(BIGNUM *out, const BIGNUM *range,
+                                    const BIGNUM *priv,
+                                    const unsigned char *message,
+                                    size_t message_len, BN_CTX *ctx);
 
 #define BN_PRIMETEST_COMPOSITE                    0
 #define BN_PRIMETEST_COMPOSITE_WITH_FACTOR        1
diff --git a/deps/openssl/openssl/include/crypto/bn_conf.h b/deps/openssl/openssl/include/crypto/bn_conf.h
deleted file mode 100644
index 79400c6472a49c..00000000000000
--- a/deps/openssl/openssl/include/crypto/bn_conf.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/bn_conf.h"
diff --git a/deps/openssl/openssl/include/crypto/dso_conf.h b/deps/openssl/openssl/include/crypto/dso_conf.h
deleted file mode 100644
index e7f2afa9872320..00000000000000
--- a/deps/openssl/openssl/include/crypto/dso_conf.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/dso_conf.h"
diff --git a/deps/openssl/openssl/include/internal/constant_time.h b/deps/openssl/openssl/include/internal/constant_time.h
index 0ed6f823c11edc..2b49afe1ea2a5c 100644
--- a/deps/openssl/openssl/include/internal/constant_time.h
+++ b/deps/openssl/openssl/include/internal/constant_time.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2014-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -140,6 +140,29 @@ static ossl_inline uint64_t constant_time_lt_64(uint64_t a, uint64_t b)
     return constant_time_msb_64(a ^ ((a ^ b) | ((a - b) ^ b)));
 }
 
+#ifdef BN_ULONG
+static ossl_inline BN_ULONG constant_time_msb_bn(BN_ULONG a)
+{
+    return 0 - (a >> (sizeof(a) * 8 - 1));
+}
+
+static ossl_inline BN_ULONG constant_time_lt_bn(BN_ULONG a, BN_ULONG b)
+{
+    return constant_time_msb_bn(a ^ ((a ^ b) | ((a - b) ^ b)));
+}
+
+static ossl_inline BN_ULONG constant_time_is_zero_bn(BN_ULONG a)
+{
+    return constant_time_msb_bn(~a & (a - 1));
+}
+
+static ossl_inline BN_ULONG constant_time_eq_bn(BN_ULONG a,
+                                                BN_ULONG b)
+{
+    return constant_time_is_zero_bn(a ^ b);
+}
+#endif
+
 static ossl_inline unsigned int constant_time_ge(unsigned int a,
                                                  unsigned int b)
 {
diff --git a/deps/openssl/openssl/include/openssl/asn1.h b/deps/openssl/openssl/include/openssl/asn1.h
deleted file mode 100644
index cd9fc7cc706c37..00000000000000
--- a/deps/openssl/openssl/include/openssl/asn1.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/asn1.h"
diff --git a/deps/openssl/openssl/include/openssl/asn1t.h b/deps/openssl/openssl/include/openssl/asn1t.h
deleted file mode 100644
index 6ff4f574949bbd..00000000000000
--- a/deps/openssl/openssl/include/openssl/asn1t.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/asn1t.h"
diff --git a/deps/openssl/openssl/include/openssl/bio.h b/deps/openssl/openssl/include/openssl/bio.h
deleted file mode 100644
index dcece3cb4d6ebf..00000000000000
--- a/deps/openssl/openssl/include/openssl/bio.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/bio.h"
diff --git a/deps/openssl/openssl/include/openssl/cmp.h b/deps/openssl/openssl/include/openssl/cmp.h
deleted file mode 100644
index 7c8a6dc96fc360..00000000000000
--- a/deps/openssl/openssl/include/openssl/cmp.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/cmp.h"
diff --git a/deps/openssl/openssl/include/openssl/cms.h b/deps/openssl/openssl/include/openssl/cms.h
deleted file mode 100644
index 33a00775c9fa76..00000000000000
--- a/deps/openssl/openssl/include/openssl/cms.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/cms.h"
diff --git a/deps/openssl/openssl/include/openssl/conf.h b/deps/openssl/openssl/include/openssl/conf.h
deleted file mode 100644
index 2712886cafcd78..00000000000000
--- a/deps/openssl/openssl/include/openssl/conf.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/conf.h"
diff --git a/deps/openssl/openssl/include/openssl/configuration.h b/deps/openssl/openssl/include/openssl/configuration.h
deleted file mode 100644
index 8ffad996047c5e..00000000000000
--- a/deps/openssl/openssl/include/openssl/configuration.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/configuration.h"
diff --git a/deps/openssl/openssl/include/openssl/crmf.h b/deps/openssl/openssl/include/openssl/crmf.h
deleted file mode 100644
index 4103852ecb21c2..00000000000000
--- a/deps/openssl/openssl/include/openssl/crmf.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/crmf.h"
diff --git a/deps/openssl/openssl/include/openssl/crypto.h b/deps/openssl/openssl/include/openssl/crypto.h
deleted file mode 100644
index 6d0e701ebd3c19..00000000000000
--- a/deps/openssl/openssl/include/openssl/crypto.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/crypto.h"
diff --git a/deps/openssl/openssl/include/openssl/ct.h b/deps/openssl/openssl/include/openssl/ct.h
deleted file mode 100644
index 7ebb84387135be..00000000000000
--- a/deps/openssl/openssl/include/openssl/ct.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/ct.h"
diff --git a/deps/openssl/openssl/include/openssl/err.h b/deps/openssl/openssl/include/openssl/err.h
deleted file mode 100644
index bf482070474781..00000000000000
--- a/deps/openssl/openssl/include/openssl/err.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/err.h"
diff --git a/deps/openssl/openssl/include/openssl/ess.h b/deps/openssl/openssl/include/openssl/ess.h
deleted file mode 100644
index 64cc016225119f..00000000000000
--- a/deps/openssl/openssl/include/openssl/ess.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/ess.h"
diff --git a/deps/openssl/openssl/include/openssl/fipskey.h b/deps/openssl/openssl/include/openssl/fipskey.h
deleted file mode 100644
index c012013d98d4e8..00000000000000
--- a/deps/openssl/openssl/include/openssl/fipskey.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/fipskey.h"
diff --git a/deps/openssl/openssl/include/openssl/lhash.h b/deps/openssl/openssl/include/openssl/lhash.h
deleted file mode 100644
index 8d824f5cfe6274..00000000000000
--- a/deps/openssl/openssl/include/openssl/lhash.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/lhash.h"
diff --git a/deps/openssl/openssl/include/openssl/ocsp.h b/deps/openssl/openssl/include/openssl/ocsp.h
deleted file mode 100644
index 5b13afedf36bb6..00000000000000
--- a/deps/openssl/openssl/include/openssl/ocsp.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/ocsp.h"
diff --git a/deps/openssl/openssl/include/openssl/opensslv.h b/deps/openssl/openssl/include/openssl/opensslv.h
deleted file mode 100644
index 078cfba40fbe73..00000000000000
--- a/deps/openssl/openssl/include/openssl/opensslv.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/opensslv.h"
diff --git a/deps/openssl/openssl/include/openssl/pkcs12.h b/deps/openssl/openssl/include/openssl/pkcs12.h
deleted file mode 100644
index 2d7e2c08e99175..00000000000000
--- a/deps/openssl/openssl/include/openssl/pkcs12.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/pkcs12.h"
diff --git a/deps/openssl/openssl/include/openssl/pkcs7.h b/deps/openssl/openssl/include/openssl/pkcs7.h
deleted file mode 100644
index b553f9d0f053b0..00000000000000
--- a/deps/openssl/openssl/include/openssl/pkcs7.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/pkcs7.h"
diff --git a/deps/openssl/openssl/include/openssl/safestack.h b/deps/openssl/openssl/include/openssl/safestack.h
deleted file mode 100644
index 989eafb33023b9..00000000000000
--- a/deps/openssl/openssl/include/openssl/safestack.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/safestack.h"
diff --git a/deps/openssl/openssl/include/openssl/srp.h b/deps/openssl/openssl/include/openssl/srp.h
deleted file mode 100644
index 9df42dad4c3127..00000000000000
--- a/deps/openssl/openssl/include/openssl/srp.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/srp.h"
diff --git a/deps/openssl/openssl/include/openssl/ssl.h b/deps/openssl/openssl/include/openssl/ssl.h
deleted file mode 100644
index eb74ca98a9759a..00000000000000
--- a/deps/openssl/openssl/include/openssl/ssl.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/ssl.h"
diff --git a/deps/openssl/openssl/include/openssl/sslerr.h b/deps/openssl/openssl/include/openssl/sslerr.h
index 3d07ecc8135439..b159ef8127c044 100644
--- a/deps/openssl/openssl/include/openssl/sslerr.h
+++ b/deps/openssl/openssl/include/openssl/sslerr.h
@@ -1,6 +1,6 @@
 /*
  * Generated by util/mkerr.pl DO NOT EDIT
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -284,10 +284,12 @@
 # define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK         1086
 # define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY          1071
 # define SSL_R_TLSV1_ALERT_INTERNAL_ERROR                 1080
+# define SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL        1120
 # define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION               1100
 # define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION               1070
 # define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW                1022
 # define SSL_R_TLSV1_ALERT_UNKNOWN_CA                     1048
+# define SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY           1115
 # define SSL_R_TLSV1_ALERT_USER_CANCELLED                 1090
 # define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE           1114
 # define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE      1113
diff --git a/deps/openssl/openssl/include/openssl/ui.h b/deps/openssl/openssl/include/openssl/ui.h
deleted file mode 100644
index f5edb766b4fc6c..00000000000000
--- a/deps/openssl/openssl/include/openssl/ui.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/ui.h"
diff --git a/deps/openssl/openssl/include/openssl/x509.h b/deps/openssl/openssl/include/openssl/x509.h
deleted file mode 100644
index ed28bd68cb2474..00000000000000
--- a/deps/openssl/openssl/include/openssl/x509.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/x509.h"
diff --git a/deps/openssl/openssl/include/openssl/x509_vfy.h b/deps/openssl/openssl/include/openssl/x509_vfy.h
deleted file mode 100644
index 9270a3ee09750a..00000000000000
--- a/deps/openssl/openssl/include/openssl/x509_vfy.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/x509_vfy.h"
diff --git a/deps/openssl/openssl/include/openssl/x509v3.h b/deps/openssl/openssl/include/openssl/x509v3.h
deleted file mode 100644
index 5629ae9a3a90af..00000000000000
--- a/deps/openssl/openssl/include/openssl/x509v3.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../config/x509v3.h"
diff --git a/deps/openssl/openssl/os-dep/Apple/PrivacyInfo.xcprivacy b/deps/openssl/openssl/os-dep/Apple/PrivacyInfo.xcprivacy
new file mode 100644
index 00000000000000..285dd5bebae800
--- /dev/null
+++ b/deps/openssl/openssl/os-dep/Apple/PrivacyInfo.xcprivacy
@@ -0,0 +1,23 @@
+
+
+
+
+	NSPrivacyAccessedAPITypes
+	
+		
+			NSPrivacyAccessedAPIType
+			NSPrivacyAccessedAPICategoryFileTimestamp
+			NSPrivacyAccessedAPITypeReasons
+			
+				C617.1
+			
+		
+	
+	NSPrivacyCollectedDataTypes
+	
+	NSPrivacyTrackingDomains
+	
+	NSPrivacyTracking
+	
+
+
diff --git a/deps/openssl/openssl/providers/fips-sources.checksums b/deps/openssl/openssl/providers/fips-sources.checksums
index c45b030606756c..1a6e3732976392 100644
--- a/deps/openssl/openssl/providers/fips-sources.checksums
+++ b/deps/openssl/openssl/providers/fips-sources.checksums
@@ -4,71 +4,71 @@ c049a936d74100fcced225f575d46662792a6a0039777d2d4df0cf61eff90a68  crypto/aes/aes
 c1e674d08683a25bc053f6233f73a0d0b3a90aafe591ff57b702c7da1582e4a5  crypto/aes/aes_local.h
 a2466f18da5847c7d9fbced17524633c10ce024671a72f53f9c9c55b9b9923dd  crypto/aes/aes_misc.c
 6979c133f76f4623e62e6e970deae70fa025e713a72b71aead5a048d49e47f6f  crypto/aes/asm/aes-586.pl
-92be9ff608331a432e95247a8f4fb9e46897d0cb76f2b6db809b61d44287964a  crypto/aes/asm/aes-armv4.pl
-953897f86e2de9fa27ef411155ab3aed133af94885f1507e76449c142da78656  crypto/aes/asm/aes-c64xplus.pl
+2eef5f20f1410b48bdaaafa24ded24f56f34c4ca79db1d38fa6bf1b3b19535bf  crypto/aes/asm/aes-armv4.pl
+38c2cf8ed3910efd89d8721e1b0763a8fde073b91f6529d251165a0496ef9555  crypto/aes/asm/aes-c64xplus.pl
 00196f01f5218ad731e6a058d406078f7228a9756d9d73f51c0d0c2a68f885af  crypto/aes/asm/aes-ia64.S
-88b6f8396cd9d86004743d5c3b0f72b7b8c3d5a2b00b0bbb761ba91ae5a7cdc8  crypto/aes/asm/aes-mips.pl
-7ff9c96ef3d591d45d776fa4b244601ea0d9328e289aeab1e1b92436ce7d02ad  crypto/aes/asm/aes-parisc.pl
-f1244cdeadcb4e48f35bc5df19d4cfaf07e0086ad951b84f07ff6966501faa5b  crypto/aes/asm/aes-ppc.pl
-ecbfe826f4c514810c3ee20e265f4f621149694c298554b2682e5de4f029f14f  crypto/aes/asm/aes-s390x.pl
-ee4e8cacef972942d2a89c1a83c984df9cad87c61a54383403c5c4864c403ba1  crypto/aes/asm/aes-sparcv9.pl
-2b3b9ac56bf54334d053857a24bdb08592151e8a7a60b89b8195846b7f8ee7b5  crypto/aes/asm/aes-x86_64.pl
-c56c324667b67d726e040d70379efba5b270e2937f403c1b5979018b836903c7  crypto/aes/asm/aesfx-sparcv9.pl
-14359dc32b7f4e5c08227fb9ac8f9232c1287399463b233fec4a2ab0c19f68d1  crypto/aes/asm/aesni-mb-x86_64.pl
-2fe016e8098d1c959b6199ce98e91dfed9a3a543d6b068daf88d4c4c402701ec  crypto/aes/asm/aesni-sha1-x86_64.pl
-1d3acabadedb88d1327eeb76201ea9b3f4814f44898018ffae6c73e3f400b89b  crypto/aes/asm/aesni-sha256-x86_64.pl
+b4ef595194fe1692e1ab2b561f385da01b277cf004902e8fc99e8ac5389bbd35  crypto/aes/asm/aes-mips.pl
+123c4498c94040b70708fdd911cb08c6411b020b4cf3eb761d6fa22c583c3e6f  crypto/aes/asm/aes-parisc.pl
+7a7f2f90791415ef4ffc1ba2a6f6b6fe994bfe0e03d3bf9dab6e428e6874695c  crypto/aes/asm/aes-ppc.pl
+d139e5ad69560fd0ffd8aa2e72304e463650cea4c657be7a90e0d1eb782d580a  crypto/aes/asm/aes-s390x.pl
+133ba35d77002abcd430414749c4e98c4a319630da898e45ff8dbc5800176df1  crypto/aes/asm/aes-sparcv9.pl
+c98690249d490d23e6fee84f672f1463ffc029427110a4329244a59e4e4aaed8  crypto/aes/asm/aes-x86_64.pl
+7ec99947b47e56595f0b085b8bda0b3113112f694e78b1f71b63ecd1f0fa2c67  crypto/aes/asm/aesfx-sparcv9.pl
+ab94a27e533e164bcf09898a6f6019f43609d51a3b374cf75482dcf2914d464e  crypto/aes/asm/aesni-mb-x86_64.pl
+74939261340a0056eb9333fff1c843c8758b9f93de3d94650cd6d2899c6790d8  crypto/aes/asm/aesni-sha1-x86_64.pl
+ce91f0893a2a35fdf4c024ccb0fd8329b30fdbd955f0ae011ab948101ee14951  crypto/aes/asm/aesni-sha256-x86_64.pl
 4ff74d4e629a88ef5a9e3d3f5b340fc0a4793d16d7cc7f1b70da62512a856248  crypto/aes/asm/aesni-x86.pl
-c7c6694480bb5319690f94826139a93f5c460ebea6dba101b520a76cb956ec93  crypto/aes/asm/aesni-x86_64.pl
-f3a8f3c960c0f47aaa8fc2633d18b14e7c7feeccc536b0115a08bc58333122b6  crypto/aes/asm/aesp8-ppc.pl
-e397a5781893e97dd90a5a52049633be12a43f379ec5751bca2a6350c39444c8  crypto/aes/asm/aest4-sparcv9.pl
-e3955352a92d56905d63e68937e4758f13190a14a10a3dcb1e5c641c49913c0c  crypto/aes/asm/aesv8-armx.pl
-5e8005fdb6641df465bdda20c3476f7176e6bcd63d5073044a0c02a327c7f172  crypto/aes/asm/bsaes-armv7.pl
-0726a2c4c15c27a12b2f7d5e16863df4a1b1daa7b7d9b728f621b2b224d290e6  crypto/aes/asm/bsaes-x86_64.pl
-1ff94d6bf6c8ae4809f64657eb89260fe3cb22137f649d3c73f72cb190258196  crypto/aes/asm/vpaes-armv8.pl
-c3541865cd02d81101cdbab4877ed82772e6980d2c677b9008b38fa1b26d36d4  crypto/aes/asm/vpaes-ppc.pl
+30103cfe3b29d06b34feff48a927e0fa649e9109d35a3db64b09cfeb15426fa2  crypto/aes/asm/aesni-x86_64.pl
+67c73dbf78b5f3c8a436800dc43bf122cd1f0c4fefab357359edaae4fbb27e8e  crypto/aes/asm/aesp8-ppc.pl
+a5807ed92ec8a16d123061487c385bf1f65e50878cee95c8e8096844454129f8  crypto/aes/asm/aest4-sparcv9.pl
+d34cf129a8c63e2b77a74117ed4440a4f35408dabd90e21e70eae92d208fa516  crypto/aes/asm/aesv8-armx.pl
+a0b578b7d2787c91013547df07dfa73d8d7a420446dd624c66f7c55159817eb2  crypto/aes/asm/bsaes-armv7.pl
+34accd08242a6bf4a751105f89b0c4de2cd7e54320753587815647abff7124de  crypto/aes/asm/bsaes-x86_64.pl
+d9bc047db9b2f54f27fe0d6e2ede9239b4a1f57a14bf89fa3cfba6b836599386  crypto/aes/asm/vpaes-armv8.pl
+516421b1a321b842f879ad69e7b82ae3e1f3efc8288c83bb34d6577996e85787  crypto/aes/asm/vpaes-ppc.pl
 3ec24185750a995377516bc2fb2eae8b1c52094c6fff093bff591837fc12d6c3  crypto/aes/asm/vpaes-x86.pl
-060bb6620f50af9afecdf97df051b45b9a50be9daf343dfec1cbb29693ce00a4  crypto/aes/asm/vpaes-x86_64.pl
-2bc67270155e2d6c7da87d9070e005ee79cea18311004907edfd6a078003532a  crypto/alphacpuid.pl
-0255a480b78bdcc71f76676f496962a9828eb900f53b7be13be96ae3f67fe6db  crypto/arm64cpuid.pl
+47bedbe6a04254eede121e71f11a657b1f1940aee1916bbfc04fa9fb8454f9b8  crypto/aes/asm/vpaes-x86_64.pl
+1c9a2a0e8cee4a1283c74b2e306f46f79890f6d236394de2a80d1994fd411d1d  crypto/alphacpuid.pl
+7a37cadacdbecb50304228dfcb087ad7fbb6e31f6ab69c52dd161e79afb2f9ca  crypto/arm64cpuid.pl
 e0daf54f72dd8fd1bc537d93f34e2a6a887a9ed6027bb33e15a327ef5ff37a42  crypto/armcap.c
-a43f2c1eef16146943745f684f2add7d186924932a47abf7fb0760cba02804e6  crypto/armv4cpuid.pl
+24cc7611225df0e20e414c14e80516c36d48bf99659946e85a876d8757356686  crypto/armv4cpuid.pl
 16739d54200fb81ca7835b5814f965022a2ab41589c7787e2697e3ea72d4fafa  crypto/asn1_dsa.c
-819c9fd2b0cae9aab81c3cbd1815c2e22949d75f132f649b5883812d0bbaa39a  crypto/bn/asm/alpha-mont.pl
-0070595128b250b9ebdebe48ce53d2d27ca16ec4f7c6c8bd169ab2e4a913b2d1  crypto/bn/asm/armv4-gf2m.pl
-8c1c53a725b8a4f92b8a353bfeeb393be94198df41c912e3270f9e654417b250  crypto/bn/asm/armv4-mont.pl
-8d6192337fedb0012764229d600634f8357c3b74fd38bcbfe8b86ddc6ca96ea2  crypto/bn/asm/armv8-mont.pl
+155eff9d747eed808398cfa2af4b276dfc1f9aac8a0f9d801b314ab3f2bf5b56  crypto/bn/asm/alpha-mont.pl
+894cc71b2d783e4e1b54dbef45e9e9280165a2c43981ebdd03282f0e90914928  crypto/bn/asm/armv4-gf2m.pl
+0d2e31dc9cdce02c619adfc9ac720ccf7171384e76a84cdf0e686a805dd7006e  crypto/bn/asm/armv4-mont.pl
+d7df31176f725c1ae7241fee8f681fdcf2ab9eb4d3cc6c80d49c2248ae40a56a  crypto/bn/asm/armv8-mont.pl
 cb4ad7b7461fcb8e2a0d52881158d0211b79544842d4eae36fc566869a2d62c8  crypto/bn/asm/bn-586.pl
-636da7e2a66272a81f9c99e90b36c6f132ad6236c739e8b9f2e7315f30b72edd  crypto/bn/asm/c64xplus-gf2m.pl
+10fb73a6cc1bc064ebdcf6d7fe3c7407ea1c28b0d65ad0123046f8b1518fa75a  crypto/bn/asm/c64xplus-gf2m.pl
 c86664fb974362ee52a454c83c2c4b23fd5b7d64b3c9e23ef1e0dfd130a46ee5  crypto/bn/asm/co-586.pl
-199b9b100f194a2a128c14f2a71be5a04d50d069666d90ca5b69baee1318ccb7  crypto/bn/asm/ia64-mont.pl
+b88190d748056e6a64988bf1a3d19efc4c292e3d338a65f4505cf769a2041077  crypto/bn/asm/ia64-mont.pl
 a511aafbf76647a0c83705d4491c898a5584d300aa449fa6166c8803372946eb  crypto/bn/asm/ia64.S
-687c5d6606fdfd0e242005972d15db74a9cbac2b8a9a54a56fcb1e99d3880ff3  crypto/bn/asm/mips-mont.pl
-8aca83d2ec45a40af15e59cff1ac2dc33737a3d25f0a0b74d401fa778a5c5eb8  crypto/bn/asm/mips.pl
-b27ec5181e387e812925bb26823b830f49d7a6e4971b6d11ea583f5632a1504b  crypto/bn/asm/parisc-mont.pl
-9973523b361db963eea4938a7a8a3adc692e1a4e1aec4fa1f1e57dc93da37921  crypto/bn/asm/ppc-mont.pl
-59cd27e1e10c4984b7fb684b27f491e7634473b1bcff197a07e0ca653124aa9a  crypto/bn/asm/ppc.pl
+fee42cabeeb87cdf0fa0a6ff3698b2fe98a8a47d10a756052df572097161a8b9  crypto/bn/asm/mips-mont.pl
+b197a8e1be79b8c21f8d26b34b9a282ca42ec4bcd1f3212fde3889747082a1f7  crypto/bn/asm/mips.pl
+13df09cee06a21669137294f92e5c31b4bf05a8035be6800c1cb4403d7cd8290  crypto/bn/asm/parisc-mont.pl
+25c96e545b4981d45557eb14ea5c83aa2d6375ae0df806cb6e6ded2f59ddfed3  crypto/bn/asm/ppc-mont.pl
+1c057083546fa1a3bb1b9819dc5110f5a3b11b7bf5a2fb275012323bd7412403  crypto/bn/asm/ppc.pl
 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  crypto/bn/asm/ppc64-mont-fixed.pl
-a25be64867ab837d93855af232e2bfa71b85b2c6f00e35e620fdc5618187fb6f  crypto/bn/asm/ppc64-mont.pl
-231579e532443665020d4d522d9f11713d9c5d5c814b95b434b0f65452e16de4  crypto/bn/asm/rsaz-avx2.pl
-1657600d320ea549b527b2d878a7658533d60d26eeb38f42ea470fc612f9bb53  crypto/bn/asm/rsaz-avx512.pl
-31e84dc905b13e38850071528d3abbfcaf8910bbc8b46f38d19c2b386a5f838e  crypto/bn/asm/rsaz-x86_64.pl
-30fedf48dfc5fec1c2044b6c226dd9fc42a92522cc589797a23a79d452bdd2cf  crypto/bn/asm/s390x-gf2m.pl
-590388d69d7ac3a0e9af4014792f4f0fdb9552719e8fb48ebc7e5dfca2a491d4  crypto/bn/asm/s390x-mont.pl
+fe9278a2504fb40257637a4718081775c29c4eb81f87a8528e5c85f8d0c6281a  crypto/bn/asm/ppc64-mont.pl
+94b2d5cf0faf2efddeb5fb7c575dabc35c1791715cc9299d59a01d9f96cb2d6f  crypto/bn/asm/rsaz-avx2.pl
+cd0861a565231f67252e172420f6914fe47a324b35916c29f6304491447fe84c  crypto/bn/asm/rsaz-avx512.pl
+c19c717d87dd1ba74f138af05c044c05f5d025e26323637f46ba54a8c871a378  crypto/bn/asm/rsaz-x86_64.pl
+ae26becda9f6d30e9edde8bb89c251a0c40a9a6c879c4cdaec273d8c09af9cd6  crypto/bn/asm/s390x-gf2m.pl
+2700337ef133d6688047a1a8e1c671db06016aae777679923ce2b301896762cf  crypto/bn/asm/s390x-mont.pl
 aa02597f3dc09cfbc190aedb75711859ba0f3efff87067ebfba1ec78ebee40d7  crypto/bn/asm/s390x.S
-2f7cbc2c3d93b1bbc4953dda38b9ae0ab3a0a8331a0418d94d9b286183736c9e  crypto/bn/asm/sparct4-mont.pl
+87d49e83a7df467097fdfc577aa206be9ee622c40fcbbbe5133b35d9783b7816  crypto/bn/asm/sparct4-mont.pl
 ca21a9ccbc54e19fb7c2e6cdf286ce7cb08b0fba960c777c6edce5c57ccc2101  crypto/bn/asm/sparcv8.S
 fbc93c8dbbecefe66086f58fe9719ed87b13b2cdc61454a10e841228296fecef  crypto/bn/asm/sparcv8plus.S
-127832c1e3d298aad805236776488f5f8836b6a0fdbce3f6b42678163df3909f  crypto/bn/asm/sparcv9-gf2m.pl
-1622f04a8918724ac0e8804baf285fdafa0eeaaecc36c7facd459d0ff13a8cac  crypto/bn/asm/sparcv9-mont.pl
-b69083f78b4b4f7097de4462d16649532fb82c453a82cdd9cc1393122661d6e2  crypto/bn/asm/sparcv9a-mont.pl
+2ec1497fa06826f7bc574239e425dd8dda0d4a2743e1fe87669ede900291fcb6  crypto/bn/asm/sparcv9-gf2m.pl
+1f490fe184c7a51b2d0646a59e69aa659bfe51270ad21594951b8d7b785bac38  crypto/bn/asm/sparcv9-mont.pl
+277dcb7faa1913b25fd43946c50039bcdd45cb643fd9ddeedd6c207cefa4dd50  crypto/bn/asm/sparcv9a-mont.pl
 d404375a21d33396824a3da212d6646d4f3150dd141ee4b4a250aefae3482efb  crypto/bn/asm/via-mont.pl
-d24f3e97239c8eed5efc721521b025b7256c15e67a54ea6b5c4cf8f7cd0f89ea  crypto/bn/asm/vis3-mont.pl
+d632edf9b9bab7d2cd2d616512a98d15cf4b3ebba7a8e7b83650d654ceb52ecb  crypto/bn/asm/vis3-mont.pl
 89278854f44d95be916516609ce6f79dcd346bab52574b9b6336a9952aa94bee  crypto/bn/asm/x86-gf2m.pl
 90d4ae234c08267adce9ed38d56e0edc223f7480cb9605f5d7399d0b3914c6be  crypto/bn/asm/x86-mont.pl
 d444ca73875e97e0ea88b20e4c02f2fcf3850e8b9311e3b67a2d04fe2796d543  crypto/bn/asm/x86_64-gcc.c
-709ddee92e9222ee0ed27bfb90db556e85e2d302e4a9131afa25fdc14c4d858f  crypto/bn/asm/x86_64-gf2m.pl
-da7f7780d27eed164797e5334cd45b35d9c113e86afaca051463aef9a8fd787c  crypto/bn/asm/x86_64-mont.pl
-259fb8d7f40c0dba46920b1f169d5b37de03b0fda645463d19e3ae2b56de851d  crypto/bn/asm/x86_64-mont5.pl
+a5481ca55d94dc7ebdc93173610d38ae2569cea1fe9b5180debe0ab94e455ce1  crypto/bn/asm/x86_64-gf2m.pl
+d8cc080824a72774cb3343a3d50ddf8f41a5b8321203d4c9a764762b62498b96  crypto/bn/asm/x86_64-mont.pl
+03788cb685268e6a50ddfa742ea1fe937570c9b86f2ebc88ee35f3304f67c045  crypto/bn/asm/x86_64-mont5.pl
 0ea8185a037a2951bb3d1e590bbbdeac305176d5e618f3e43a04c09733a9de34  crypto/bn/bn_add.c
 759c2b9df808b3562fe8b0c7778dbadbf35f261e14fc2d5090d18c35b4181760  crypto/bn/bn_asm.c
 14bd5a35c05fcf454854b92fb30b356d7ac618c1eb699dd798f6ad2936d1f5ee  crypto/bn/bn_blind.c
@@ -83,7 +83,7 @@ baba7c8ae95af6aa36bc9f4be3a2eed33d500451e568ca4bfc6bc7cb48d4f7ea  crypto/bn/bn_g
 5fbb1ab8463cd5544a1d95cf7996b6387ae634984a42256b7a21482ce3ac30a2  crypto/bn/bn_gf2m.c
 081e8a6abc23599307dab3b1a92113a65e0bf8717cbc40c970c7469350bc4581  crypto/bn/bn_intern.c
 602ed46fbfe12c899dfb7d9d99ff0dbfff96b454fce3cd02817f3e2488dd9192  crypto/bn/bn_kron.c
-bf73a1788a92142963177fb698bc518af9981bbf0ad9784701fbb2462ca10607  crypto/bn/bn_lib.c
+81a4afc27dd1e90c4bfa81c8d385214ce8a2b5884537752944a71ebebd91f4b0  crypto/bn/bn_lib.c
 d5beb9fbac2ff5dc3ccbdfa4d1aabca7225c778cff4e3b05b6d6c63e182637f5  crypto/bn/bn_local.h
 96f98cdf50087c5b567c31bf2581728623206d79b3f97f5a0c5fdaa0009e6e3c  crypto/bn/bn_mod.c
 f60f3d49b183b04bcdf9b82f7c961b8c1bcb00e68a2c1166fe9edd95a783356e  crypto/bn/bn_mont.c
@@ -92,10 +92,10 @@ f60f3d49b183b04bcdf9b82f7c961b8c1bcb00e68a2c1166fe9edd95a783356e  crypto/bn/bn_m
 b3677b73ac29aab660c9a549f7af154ca14347fac5cffd43b153a75211f1373f  crypto/bn/bn_nist.c
 c6760a724d696b7209f0a71f8483fabcf4f081f7e93e2628284c32ef78f69365  crypto/bn/bn_prime.c
 c56ad3073108a0de21c5820a48beae2bccdbf5aa8075ec21738878222eb9adc3  crypto/bn/bn_prime.h
-628419eabdb88b265823e43a7a1c88fdfecef79771180836f6089050dc9eadb1  crypto/bn/bn_rand.c
+71186d5bd40d467a919e6449d8aa23d13df88e0c85765d1a165f3eeec6bd33a7  crypto/bn/bn_rand.c
 4df8f204c8a06de2b4395be613ca0b9943613c523586e2005876d5c7bb891c75  crypto/bn/bn_recp.c
 a5c5c9f99961a5a7f22a3dcdce964c8a330f822be17f08652223a20fed747d0a  crypto/bn/bn_rsa_fips186_4.c
-704b0b4723e5c9e9bae5f3e35f9ae8ae8dca3383929e954de9e5169845abfdb2  crypto/bn/bn_shift.c
+6889866bca4673bccb8adf870859a867757ccd3c8ad4652675615afff710add3  crypto/bn/bn_shift.c
 622e90766b29e0d25f46474429aebda8eba2246835b9e85dc26da7cdbd49334f  crypto/bn/bn_sqr.c
 42c8ce944c889abcfcf089d0ad2744b7587696d8d7785efa91b3f7ec53dc062a  crypto/bn/bn_sqrt.c
 24e62baa56e02f2db6454e10168b7c7fa7638db9221b9acda1803d43f38f36e0  crypto/bn/bn_word.c
@@ -104,7 +104,7 @@ c4d64da1cdc732ea918fccd6a7bb2746b03365dd26f7ba1e74e08c307ca4c58e  crypto/bn/rsaz
 5b82cb8dbf3087c2e671871cb0a92e4039223a51af533a2ee996f3bfd47453a7  crypto/bn/rsaz_exp_x2.c
 834db8ff36006e5cb53e09ca6c44290124bd23692f4341ea6563b66fcade4cea  crypto/bsearch.c
 c39334b70e1394e43f378ae8d31b6e6dc125e4d9181e6536d38e649c4eaadb75  crypto/buffer/buffer.c
-5f43844b5d8665de9ab895f93599150a327d73ec2674bbf7d7c512d30163022d  crypto/c64xpluscpuid.pl
+d2bfdfd96b182741d2d51f91478ffcc48491b0da44662bc1c32bc506b3eef1ba  crypto/c64xpluscpuid.pl
 0e1a41a2d81b5765bca3df448f60bf1fad91e485fe89dd65a7300ffc419e316d  crypto/cmac/cmac.c
 ff9be205d6d7ff00b0e64508f0eb8d9ec0415fbabc0948d26e308212b3f7b2d8  crypto/context.c
 c309d81ea991ddf5be4337afad2fd132169f7443c76f863349d3f3c82f3374e4  crypto/core_algorithm.c
@@ -130,28 +130,28 @@ b0c248efc7dad48eaceb939a18cb2592cbfe5b02dd406592e5e590645488b153  crypto/dh/dh_k
 92345c259ea2a8c09e6d6b069d0942bd6ca4642231580f3e8148ae7a832a1115  crypto/dh/dh_lib.c
 8300775d88db0a1aa26a77eb49d6c4f7252e7fee69e1440de4c40edadc9da044  crypto/dh/dh_local.h
 bbcf4fc3067ac462a27d7277973180b7dc140df9262a686c7fbe4318ca01f7b8  crypto/dsa/dsa_backend.c
-d7e0d87494e3b3f0898a56785a219e87a2ce14416393ec32d8c0b5f539c7bdbf  crypto/dsa/dsa_check.c
+786d6c65ced7ee4e25f5dd7c3150259ec95b6aa321a7590d905757b8139f8230  crypto/dsa/dsa_check.c
 ae727bf6319eb57e682de35d75ea357921987953b3688365c710e7fba51c7c58  crypto/dsa/dsa_gen.c
 b1de1624e590dbf76f76953802ff162cc8de7c5e2eaba897313c866424d6902b  crypto/dsa/dsa_key.c
 9f4837c5abe53613a2dc1c5db81d073d4f42bd28b6a2d1e93a2b350d8e25d52a  crypto/dsa/dsa_lib.c
 f4d52d3897219786c6046bf76abb2f174655c584caa50272bf5d281720df5022  crypto/dsa/dsa_local.h
-c5c252f205482a71efeabe226d51a1c541a6ba2dfa9b8b8a70901087a9dc1667  crypto/dsa/dsa_ossl.c
-d612fd05ff98816ba6cf37f84c0e31443ad9d840ed587a7ab2066027da390325  crypto/dsa/dsa_sign.c
+196dc024873e413d92672c3a9b6c062ed6269250b0da6d41c0da1c03cfec9ef8  crypto/dsa/dsa_ossl.c
+9f501a59c09fc3cb3caafaff25abd44397a94d1062950a4d62e855d2c8986b5a  crypto/dsa/dsa_sign.c
 53fa10cc87ac63e35df661882852dc46ae68e6fee83b842f1aeefe00b8900ee1  crypto/dsa/dsa_vrf.c
-d9722ad8c6b6e209865a921f3cda831d09bf54a55cacd1edd9802edb6559190a  crypto/ec/asm/ecp_nistp521-ppc64.pl
-78ad06b88fcc8689a3a846b82f9ee01546e5734acd1bccf2494e523b71dc74d1  crypto/ec/asm/ecp_nistz256-armv4.pl
-4617351d2de4d0b2abfd358c58050cee00702d0b4c1acca09312ec870e351c7d  crypto/ec/asm/ecp_nistz256-armv8.pl
-3715ddd921425f3018741037f01455ed26a840ace08691a800708170a66cf4d2  crypto/ec/asm/ecp_nistz256-ppc64.pl
-cfe7e75a2fddc87a7251684469a8808b9da82b2f5725eafad5806920f89932bd  crypto/ec/asm/ecp_nistz256-sparcv9.pl
+786779d7014bc04846832f80638743784a3850c7ee36e4a8062fe8eb7ac31c9b  crypto/ec/asm/ecp_nistp521-ppc64.pl
+2e3056ea14fab8b306b0281d6a6f4317a6e86dbf652a79ade726e716cd79bb1e  crypto/ec/asm/ecp_nistz256-armv4.pl
+a02edef19d22c5aba196080942111ab0172fc2ebe6d6c40db2beb6a1a2d885c6  crypto/ec/asm/ecp_nistz256-armv8.pl
+729729f8233c95138158f4647b33a36cf175e707ce29563db0eedc811f324ec0  crypto/ec/asm/ecp_nistz256-ppc64.pl
+78a5b172f7c13ae8ac622439ffb9d99b240dbb4bbda3f5c88d1533ae74a445ad  crypto/ec/asm/ecp_nistz256-sparcv9.pl
 922725c4761cfa567af6ed9ecab04f2c7729ae2595f2fc0fa46dc67879dc87b0  crypto/ec/asm/ecp_nistz256-x86.pl
-ac327475c7ec828d11aa05628b4e3b81ec3b1400f30fe7bec01daf3cf71f2dc9  crypto/ec/asm/ecp_nistz256-x86_64.pl
-cc727533130f5f1a29229929b3d4e8454585d647be25d6344f3c6a0240998368  crypto/ec/asm/x25519-ppc64.pl
-ee897e230964511baa0d1bf95fb938312407a40a88ebe01476879c2763e5f732  crypto/ec/asm/x25519-x86_64.pl
+19ba01af58788e2873ebc1d5b503a76604bec0b9b6296fa794946e141fc945a4  crypto/ec/asm/ecp_nistz256-x86_64.pl
+e806141073aa3792e2748f6feeee6d3017124b3bc6059a9eca0d53a2f5785346  crypto/ec/asm/x25519-ppc64.pl
+a397592dc9fdb13016311db6184b4a3a4f2e198aacb03528f770f30ea4966cc4  crypto/ec/asm/x25519-x86_64.pl
 340336e01aa04fcde9bfd56536f90c9bc0ad56a002b6cfa321a1e421f1e93ceb  crypto/ec/curve25519.c
 9a95ec8366154bb20aeb24f4767a8cbb9953ca0380708eb2f39caca6078cd59e  crypto/ec/curve448/arch_32/f_impl32.c
 063dac1e4a9573c47532123e9e03e3532a7473cc3e146521ba9ec6f486ddf3b1  crypto/ec/curve448/arch_64/arch_intrinsics.h
 43423b7ee85a5c740c1d81499ee06f4a17732c7731a598e7429d5e402ee77cf4  crypto/ec/curve448/arch_64/f_impl.h
-1689097ae10e4982a8cbe50c2f6eddb03c83436f331f0b67edb98d6b58adc962  crypto/ec/curve448/arch_64/f_impl64.c
+012d4a9c8aed4a66cd3a3eef17d4b4d8f3c6f384449cd057bd292b98e072a283  crypto/ec/curve448/arch_64/f_impl64.c
 9b408ec0d43f3b6d714ef5963147e2c2abaddc88633db7dd759193d3c56ed727  crypto/ec/curve448/curve448.c
 3c12d90e3fdd59b5d32d63186f1a6f15c75eb73f5035b844a2054356a9459780  crypto/ec/curve448/curve448_local.h
 178fb9863c33174b633c2e7607160b1bedb506d66cc06d53382d87431441f306  crypto/ec/curve448/curve448_tables.c
@@ -178,7 +178,7 @@ fa901b996eb0e460359cd470843bdb03af7a77a2f1136c5e1d30daef70f3e4d2  crypto/ec/ec_m
 129c6b42417bfcf582f4a959cfd65433e6f85b158274f4fa38f9c62615ac9166  crypto/ec/ec_oct.c
 c7fba2f2c33f67dafa23caef8c3abd12f5336274a9a07d412b83be0366969ee6  crypto/ec/ecdh_kdf.c
 b2cf8f052a5716137da7b0e857ed7a5df5fb513b6d14534199a05e32f2b5a866  crypto/ec/ecdh_ossl.c
-099f7836a31643c58bda3829090ea81fe3d5acaa4c6f7b145d8355a4293d0ccc  crypto/ec/ecdsa_ossl.c
+031f99c746ac746c1d4f243dd71c8246b502ff00c1d7ca29f7ca024f0e37e14a  crypto/ec/ecdsa_ossl.c
 b6baa42b16e8df69a12e0ab101033100cddc808ec2682ba1574373e6ec86ae93  crypto/ec/ecdsa_sign.c
 f686cea8c8a3259d95c1e6142813d9da47b6d624c62f26c7e4a16d5607cddb35  crypto/ec/ecdsa_vrf.c
 141cfc1459214555b623517a054a9e8d5e4065a11301237b7247be2c6f397a0a  crypto/ec/ecp_mont.c
@@ -203,7 +203,7 @@ ca8c6cfd30efd53f2e5d1f19bcf09a3a3d0dff6d8947c3943d07a3f4b354aa86  crypto/evp/exc
 9e25042581b73e295c059c6217f3ecf809134d518eb79b1b67f34e3ca9145677  crypto/evp/kdf_lib.c
 1d72f5506984df1df8606e8c7045f041cf517223e2e1b50c4da8ba8bf1c6c186  crypto/evp/kdf_meth.c
 5179624b8e03615dc9caedc9ec16d094fa081495613dd552d71c2c39475bcd83  crypto/evp/kem.c
-5016dd7ef8b4cf7e9ea8465c18d1daa4c8808cb589261cf236058ee75bc868d7  crypto/evp/keymgmt_lib.c
+5cf3e490bf917bd37ae70313d126ae4720432fbec518e4a45e8fa886d5e1689a  crypto/evp/keymgmt_lib.c
 46ffdc73f8a7fc314dc8988f2751a6e9f9784719f4f162dc4be2450b65b55261  crypto/evp/keymgmt_meth.c
 e1a052839b8b70dca20dbac1282d61abd1c415bf4fb6afb56b811e8770d8a2e1  crypto/evp/m_sigver.c
 4290c95f63b43688a8da57690d122add5161a6811f9753da1444d28f46739961  crypto/evp/mac_lib.c
@@ -212,7 +212,7 @@ e7e8eb5683cd3fbd409df888020dc353b65ac291361829cc4131d5bc86c9fcb3  crypto/evp/mac
 3b4228b92eebd04616ecc3ee58684095313dd5ffd1b43cf698a7d6c202cb4622  crypto/evp/pmeth_check.c
 1f0e9e94e9b0ad322956521b438b78d44cfcd8eb974e8921d05f9e21ba1c05cf  crypto/evp/pmeth_gn.c
 76511fba789089a50ef87774817a5482c33633a76a94ecf7b6e8eb915585575d  crypto/evp/pmeth_lib.c
-4b2dbddf0f9ceed34c3822347138be754fb194febca1c21c46bcc3a5cce33674  crypto/evp/signature.c
+53058617c153a7676e7ca18c98c23df867a93087d67935907076f3c5bd65c15e  crypto/evp/signature.c
 f2acfb82aac20251d05a9c252cc6c282bd44e43feac4ac2e0faf68b9a38aef57  crypto/ex_data.c
 1c8389c5d49616d491978f0f2b2a54ba82d805ec41c8f75c67853216953cf46a  crypto/ffc/ffc_backend.c
 a12af33e605315cdddd6d759e70cd9632f0f33682b9aa7103ed1ecd354fc7e55  crypto/ffc/ffc_dh.c
@@ -228,19 +228,19 @@ f897493b50f4e9dd4cacb2a7accda6683c10ece602641874cdff1dac7128a751  crypto/initthr
 7290d8d7ec31a98b17618f218d4f27b393501c7606c814a43db8af1975ad1d10  crypto/lhash/lhash.c
 5d49ce00fc06df1b64cbc139ef45c71e0faf08a33f966bc608c82d574521a49e  crypto/lhash/lhash_local.h
 f866aafae928db1b439ac950dc90744a2397dfe222672fe68b3798396190c8b0  crypto/mem_clr.c
-e14f48d4112c0efe3826b4aa390cc24045a85298cc551ec7f3f36ac4236d7d81  crypto/modes/asm/aes-gcm-armv8_64.pl
-1d686af304f94743038f916125effcb51790c025f3165d8d37b526bbeee781f0  crypto/modes/asm/aesni-gcm-x86_64.pl
-c2e874a8deb418b5d8c935b2e256370566a5150e040c9fa008cdb5b463c26904  crypto/modes/asm/ghash-alpha.pl
-6bc7d63569c73d7020ede481f2de05221ac92403c7cc11e7263ada7644f6aa9b  crypto/modes/asm/ghash-armv4.pl
-097975df63370de7ebea012d17de14fc1f361fb83acf03b432a99ae7d5bceb24  crypto/modes/asm/ghash-c64xplus.pl
-fdde3bc48b37790c6e0006014da71e7a831bbb4fdbfcda2d01dbe0ceb0ba88fa  crypto/modes/asm/ghash-ia64.pl
-e472d73d06933667a51a0af973479993eed333c71b43af03095450acb36dbeb4  crypto/modes/asm/ghash-parisc.pl
-6fb4332ac88113a20915ad4de1931ef88b0114b5379b16e1d967820e1229fbb0  crypto/modes/asm/ghash-s390x.pl
-6af1a05981e1d41e4dea51e58938360e3abc4a4f58e179908242466d032b1a8a  crypto/modes/asm/ghash-sparcv9.pl
+78a20112586dbce2b8b6e509a0f46f6a36f2a4acf53c3f3511daf7932a71c391  crypto/modes/asm/aes-gcm-armv8_64.pl
+e482f02932d77d61142548ca4f3c8d5709d88ec14ab84723d82331444c0f57da  crypto/modes/asm/aesni-gcm-x86_64.pl
+8fdcb4313fa3a6e541a697525856b9527a06ddf4c794f9393e843f86d67f543c  crypto/modes/asm/ghash-alpha.pl
+ace8c376b394439301cecaf468d2a9a8adae21eff1d43191cefbf6765023452d  crypto/modes/asm/ghash-armv4.pl
+c22f4945e7de3bd7bfef73447f09983e40a3e4dd0938244d902a1c44c98a8467  crypto/modes/asm/ghash-c64xplus.pl
+315a76491cdba48c88df6549c9efd96b50515400810b185a568b7a871681e03d  crypto/modes/asm/ghash-ia64.pl
+25e9f494fcb6eb636c04af2f322736fae8aa339037e199332c96b8c9c3a50afa  crypto/modes/asm/ghash-parisc.pl
+f22d5fa646b4fc2db008b6b05ec07c8790d3ad5485d2b10218fd11d0e81030ba  crypto/modes/asm/ghash-s390x.pl
+de97107e0c19ff9dd4069f0761eccb00e0b3ced345e1f119ab3b918dd2f9c5f6  crypto/modes/asm/ghash-sparcv9.pl
 26f55a57e77f774d17dfba93d757f78edfa3a03f68a71ffa37ccf3bfc468b1e2  crypto/modes/asm/ghash-x86.pl
-72744131007d2389c09665a59a862f5f6bb61b64bd3456e9b400985cb56586b8  crypto/modes/asm/ghash-x86_64.pl
-a4e9f2e496bd9362b17a1b5989aa4682647cefcff6117f0607122a9e11a9dfd9  crypto/modes/asm/ghashp8-ppc.pl
-69a13f423ca74c22543900c14aef4a848e3bc75504b65d2f51c6903aebcc17a7  crypto/modes/asm/ghashv8-armx.pl
+2a0d23a644083e46745c7cb1ca79de393af9336a2e8eab7c85ffeb3b7b1a286f  crypto/modes/asm/ghash-x86_64.pl
+b407d9fc6ea65fe1a05edc2d139298d78391f3c165314fa6d56dd375b8e453cd  crypto/modes/asm/ghashp8-ppc.pl
+d8436f6dc43a18d49b1a16999ecb513ccf4483f418f75edc01ce68e777c614a9  crypto/modes/asm/ghashv8-armx.pl
 65112dfe63cd59487e7bdb1706b44acfcf48ecede12cc3ae51daa5b661f41f06  crypto/modes/cbc128.c
 1611e73dc1e01b5c2201f51756a7405b7673aa0bb872e2957d1ec80c3530486f  crypto/modes/ccm128.c
 d8c2f256532a4b94db6d03aea5cb609cccc938069f644b2fc77c5015648d148d  crypto/modes/cfb128.c
@@ -249,7 +249,7 @@ af1c034152d82b29cb7c938c8516cfd136b62bac0908c1d40eb50790d23b288c  crypto/modes/c
 bdf25257b15eca206be4d950d2dd807ca5f058f91f54edbd7a0d312ed83eef8e  crypto/modes/ofb128.c
 e55a816c356b2d526bc6e40c8b81afa02576e4d44c7d7b6bbe444fb8b01aad41  crypto/modes/wrap128.c
 608a04f387be2a509b4d4ad414b7015ab833e56b85020e692e193160f36883a2  crypto/modes/xts128.c
-8aa2504f84a0637b5122f0c963c9d82773ba248bad972ab92be7169995d162b5  crypto/o_str.c
+fecd75b0e1646fb18eeb6b1f528015296157a9bcf97191d0f32b9619aa4f0ffb  crypto/o_str.c
 8ddbbdf43131c10dcd4428aef0eff2b1e98b0410accada0fad41a4925868beef  crypto/packet.c
 c698d5166d091d6bb6e9df3c211fe1cc916fd43a26ec844f28f547cd708f9c55  crypto/param_build.c
 2a0f272dd553b698e8c6fa57962694ebd6064cb03fe26a60df529205568d315d  crypto/param_build_set.c
@@ -257,14 +257,14 @@ c698d5166d091d6bb6e9df3c211fe1cc916fd43a26ec844f28f547cd708f9c55  crypto/param_b
 4fda13f6af05d80b0ab89ec4f5813c274a21a9b4565be958a02d006236cef05c  crypto/params_dup.c
 b6cbfc8791b31587f32a3f9e4c117549793528ebddc34a361bad1ad8cf8d4c42  crypto/params_from_text.c
 97cb7414dc2f165d5849ee3b46cdfff0afb067729435d9c01a747e0ca41e230c  crypto/ppccap.c
-3ca43596a7528dec8ff9d1a3cd0d68b62640f84b1d6a8b5e4842cfd0be1133ad  crypto/ppccpuid.pl
+826a78afb376cbf1e87f12a2a67eef2ee47059a0fd3f9cba7ce7f035e34f8052  crypto/ppccpuid.pl
 b4d34272a0bd1fbe6562022bf7ea6259b6a5a021a48222d415be47ef5ef2a905  crypto/property/defn_cache.c
 3c4ade2fed4605e374d85ec1134a98da34e7124f89f44b81a754e8cfe81f14ba  crypto/property/property.c
 66da4f28d408133fb544b14aeb9ad4913e7c5c67e2826e53f0dc5bf4d8fada26  crypto/property/property_local.h
-37dba5e1f8a2f8cb8a69e491d52386359c9d08a3c7e43ac1c7a989b72b71593c  crypto/property/property_parse.c
+b0b382ce829192d2537561cfb0fb5c7afb04305f321f7b3c91441b4ba99b9c92  crypto/property/property_parse.c
 a7cefda6a117550e2c76e0f307565ce1e11640b11ba10c80e469a837fd1212a3  crypto/property/property_query.c
 065698c8d88a5facc0cbc02a3bd0c642c94687a8c5dd79901c942138b406067d  crypto/property/property_string.c
-0b38639ffc696d6037ace06cc0169bb5c411ee1c6bacc1fa18b3abd82000e69f  crypto/provider_core.c
+dcc44eba5d01dc248c37ec7b394d48660627c0fa4933d2b93993e1f2ac4b71da  crypto/provider_core.c
 d0af10d4091b2032aac1b7db80f8c2e14fa7176592716b25b9437ab6b53c0a89  crypto/provider_local.h
 5ba2e1c74ddcd0453d02e32612299d1eef18eff8493a7606c15d0dc3738ad1d9  crypto/provider_predefined.c
 a5a4472636b8b0095ad8d4acd37e275ad79da1a67ecff7b7b5c3e46c9ebc65b7  crypto/rand/rand_lib.c
@@ -288,50 +288,50 @@ f01af62704dbf9457e2669c3e7c1d4d740f0388faa49df93611b987a8aa2bf11  crypto/rsa/rsa
 3aba73dacebb046faf8d09dc279149b52c629004b524ec33e6d81c8ad0bc31a8  crypto/rsa/rsa_sp800_56b_gen.c
 1c1c2aeeb18bf1d69e8f134315b7e50d8f43d30eb1aa5bf42983eec9136a2fdc  crypto/rsa/rsa_x931.c
 0acbebed48f6242d595c21e3c1ad69da0daa960d62062e8970209deda144f337  crypto/s390xcap.c
-22205848cfb55116ebf999dced8331b575886a609ce29e6886e6267b2310c337  crypto/s390xcpuid.pl
+370d98549d4d98e04b60677b319b85904259359bd9401dd5385aa728278e6626  crypto/s390xcpuid.pl
 5fa59240ca885cbc0c1cd026934b226d44fc9c3fdf0c2e7e3a7bd7f4963ca2e5  crypto/self_test_core.c
-05c533fde7fdba0c76103e97d881b7224c8427451b453e2f6413552996063e31  crypto/sha/asm/keccak1600-armv4.pl
-ca3b2b654f9a8c4bc2fa2538c1f19d17acd4a6b9e0df6a4b81df04efa697e67e  crypto/sha/asm/keccak1600-armv8.pl
-12b7acce2fba0bc0e1ca07842ec84be6a022f141c86e077abb42c864af1d8d9c  crypto/sha/asm/keccak1600-avx2.pl
-faf0cccb685d5abc807e08db194f847c67b940da2fc3c235c210dc31d73a5334  crypto/sha/asm/keccak1600-avx512.pl
-be1e7dd9998e3f31cfa6e1b17bc198aeec584a8b76820e38f71d51b05f8a9f2a  crypto/sha/asm/keccak1600-avx512vl.pl
-33bdcc6f7668460c3bdf779633e43bfad62b937042a73acb007b462fc5b0a034  crypto/sha/asm/keccak1600-c64x.pl
+58a1a8aeb45421954fa0e4bc87157addb96d086ac4e6aade47da96523cecaa74  crypto/sha/asm/keccak1600-armv4.pl
+d6df6cfdd4e2fee52dc16fd31c91768c45c48c22700c486406d70ecb37e8a8bb  crypto/sha/asm/keccak1600-armv8.pl
+81bfb4484d68a3a3e1d704855f76356090867fe10a75db7707b6f7364e8ee8da  crypto/sha/asm/keccak1600-avx2.pl
+b7bb35d51d439abbf3810454ccb9bfb5a51e2111eaf389fb95796ad6220a61a0  crypto/sha/asm/keccak1600-avx512.pl
+37365dcc576f99006132271968bab990e2bebdab7f4168c726bd449a2fa51c6a  crypto/sha/asm/keccak1600-avx512vl.pl
+2767ae2f379a7a3d0c6dd1471d4d90dd896545b456cb6efd6c230df29e511d70  crypto/sha/asm/keccak1600-c64x.pl
 09fc831dd39bd90a701e9b16d9e9987cc215252a22e1e0355f5da6c495fca35a  crypto/sha/asm/keccak1600-mmx.pl
-ce4a58129e5ee3ac4c9dfec5ecc010440570ebf7bf869e3e9977f2121a64b27a  crypto/sha/asm/keccak1600-ppc64.pl
-a859fc8cb073b2d0012a93f3155a75fb6eb677441462b0de4f8cf8df1445e970  crypto/sha/asm/keccak1600-s390x.pl
-618dcd4891b4064d3b8aa6dcd74bea7ef55f4962a64957b05a05448f6e3e0f17  crypto/sha/asm/keccak1600-x86_64.pl
-831b8b02ab25d78ba6300ce960d96c13439bfba5844e13061e19c4e25cbacc3d  crypto/sha/asm/keccak1600p8-ppc.pl
+485dcc50a51705b86c6dc47e6f58d092fec05dfbfcdf4f2785e4235c67cfe742  crypto/sha/asm/keccak1600-ppc64.pl
+49535b60a1a981059a2a9636fdeeab22942d2a15e775b1ec9b5af8937a46aa76  crypto/sha/asm/keccak1600-s390x.pl
+093751655b460d33b2fa6aa4d63a86e902f7f20b2d2a02ed948b78e5698c0dd5  crypto/sha/asm/keccak1600-x86_64.pl
+e0a4a1df82716053a3f01ec0b096c735a0e3c4f6c9d9ec6b2006b37aaac64448  crypto/sha/asm/keccak1600p8-ppc.pl
 75d832db9bf0e98e7a5c522169060a6dd276c5118cfb297fc3f1111f55cd4007  crypto/sha/asm/sha1-586.pl
-c96e87d4f5311cd73bbdf499acc03418588be12426d878e157dd67e0099e0219  crypto/sha/asm/sha1-alpha.pl
-4ba6d1c7f12fe76bf39babea966f0a4b7f8769e0c0510cbfc2c46a65dd62d45c  crypto/sha/asm/sha1-armv4-large.pl
-efc69cb0d867b7fac6b3fa8985c343d1f984d552bc8e75bbbbace0adf9ee5f15  crypto/sha/asm/sha1-armv8.pl
-11d332b4e058e9fa418d6633316d2e9f9bf520a08b2d933e877bdf38b2edefcf  crypto/sha/asm/sha1-c64xplus.pl
-32ff0e701a7b8f25bcfe8477b20795de54f536527bd87d3ce694fd9aaae356d4  crypto/sha/asm/sha1-ia64.pl
-471c27efca685b2a82ad7fefe329ca54172df9f49b9785da6d706b913b75e693  crypto/sha/asm/sha1-mb-x86_64.pl
-0f5c63cf09e950d1b488935ab3b5562e3e9d5cd1a563fb88a41e3dae90a35e6d  crypto/sha/asm/sha1-mips.pl
-b5ffd7b6dbb04c05de7efa2945adb67ea845e7e61a3bf163a532f7b6acdf4267  crypto/sha/asm/sha1-parisc.pl
-482cd23ca6ec38d6f62b90c68f9f20643579c50f2c0fbb0dab1c10a0e35efe77  crypto/sha/asm/sha1-ppc.pl
-28cf69efd53d7a5a8c32e0f8db32c193f41b91faf44f5f59944334bc3f5aa337  crypto/sha/asm/sha1-s390x.pl
-7fd355b412ddfa1c510e0ba3284f75b1c0d621b6db2ecb1d2a935d5cdb706628  crypto/sha/asm/sha1-sparcv9.pl
-24554e68b0e7b7db7b635ff149549015f623ca0bcd9ae90439586a2076f6ae80  crypto/sha/asm/sha1-sparcv9a.pl
-74d197cdd72400cabbff7e173f72c8976723081508b095dc995e8cd1abf3daa6  crypto/sha/asm/sha1-thumb.pl
-a59a86293e28f5600609dc8af2b39c5285580ae8636520990b000eeeb67bb889  crypto/sha/asm/sha1-x86_64.pl
+8d937771993f04407f5fdcca8ca8565f9f8a4d9c9a8f7bfd4e9f9121dd0450bb  crypto/sha/asm/sha1-alpha.pl
+ab7ecd62896324393b1fd9020515b9c0d2b9cc34d559f2efafa35affc9a1485d  crypto/sha/asm/sha1-armv4-large.pl
+0acc4e40f793d4d2b960af2baaecc91176ba6742ddd62dca0c33ddc838c58772  crypto/sha/asm/sha1-armv8.pl
+c36f51761e7f59bdd0f61230297fb802542ac5d2d1c6d2b1096ed937131bd583  crypto/sha/asm/sha1-c64xplus.pl
+4ab7c9153b085274a579b388ddff97a4ac7e11585e01811ca95b93a3ec786605  crypto/sha/asm/sha1-ia64.pl
+7a392c5ef7dc19c39d67c7080e0c5214e7a80572c85c022be7e7d4378a5f740d  crypto/sha/asm/sha1-mb-x86_64.pl
+c0fea5a0d32001263c8bcf7fc0757aa68c6a7377f20fef8d28708e1b81de5dec  crypto/sha/asm/sha1-mips.pl
+f11b75a54c5f42aa3a052de8091bfba47d7cac01920b2fe0ddcb637d4c9d0eb9  crypto/sha/asm/sha1-parisc.pl
+d46ef3fc166271a83144d90985034e2c514bd1020b84ec0fe5427ad593bfeb74  crypto/sha/asm/sha1-ppc.pl
+a48c7d9403fe99fbd4daec60e96eb22058da766ab9e606d084a63613962851a2  crypto/sha/asm/sha1-s390x.pl
+0e2951e0574c64ee055ffddf16ceefdec00823107d60362976605f139ad8ae68  crypto/sha/asm/sha1-sparcv9.pl
+5da48400d4fae85e205e95a2fa368e7bf525e51e274b1dd680dfb48645426c85  crypto/sha/asm/sha1-sparcv9a.pl
+04b73c902d36c28b5a7eab47cb85f743eb9c648ed5936f64f655524a1010a1b5  crypto/sha/asm/sha1-thumb.pl
+f36d7ec7464c932230585a754b91f13cea4cde5a381fc9f798d959256d07910e  crypto/sha/asm/sha1-x86_64.pl
 c099059ef107f548ea2c2bab64a4eb8c277070ce6d74c4d32bb9808dc19c5fa3  crypto/sha/asm/sha256-586.pl
-b9cee5c5a283f61f601d2dba68a7a76e7aba10bfafffc1a5c4987f9c0aa6f87d  crypto/sha/asm/sha256-armv4.pl
-93ddc97651ee3e779144a3c6b3e46a1bc4aa81e75cd7b9df068a2aef8743d25f  crypto/sha/asm/sha256-c64xplus.pl
-8be5c5d69733ecb16774aa8410b4bcb3623a9f060d2be103d8aa67bf6e4c5843  crypto/sha/asm/sha256-mb-x86_64.pl
+3a8cf38dd398a7ab1d9c6701fa61c428b07c4431a0041ed3a2ddf937897825c1  crypto/sha/asm/sha256-armv4.pl
+c394bb5b0ff05595a9e6848b6602a0f29f73a79fc006593740f3ca645ad9d316  crypto/sha/asm/sha256-c64xplus.pl
+f33af8e2e2f57b7b63b8c8b35722d7d11ca6ef1f73fb6c4ccebdd3e86912f4b1  crypto/sha/asm/sha256-mb-x86_64.pl
 dd82e1311703abb019975fc7b61fb87d67e1ed916dddd065aced051e851114b9  crypto/sha/asm/sha512-586.pl
-8d84164f3cfd53290c0c14bb5655510b7a9238857866328c0604d64b4e76fe21  crypto/sha/asm/sha512-armv4.pl
-dadacb6d66b160913bffb4e1a6c3e5f7be6509b26e2c099701d8d3fdb92c1be0  crypto/sha/asm/sha512-armv8.pl
-6f548a088feae3b6faa179653ba449df9d3f5cda1e0561e5b5f120b32274d1eb  crypto/sha/asm/sha512-c64xplus.pl
-9fa54fbc34fd881f4b344374b9b4f8fb15b641424be7af9a31c71af89ae5d577  crypto/sha/asm/sha512-ia64.pl
-fb06844e7c3b014a58dccc8ec6020c71843cfdc5be08288bc7d204f0a840c474  crypto/sha/asm/sha512-mips.pl
-11548f06d213947104a80898e000218ec0d6ff3f6913f6582de498476482ce9f  crypto/sha/asm/sha512-parisc.pl
-7c0c490ce6bb11a228853aecad5e164ce84e5bdabb8a6658ae7184782076c7d3  crypto/sha/asm/sha512-ppc.pl
-38e0455fd6a2b93a7a5385379ca92bc6526585ca1eb4af365fac4c78f7285c72  crypto/sha/asm/sha512-s390x.pl
-0611845c52091b0208dd41f22ddef9dd1e68d3d92fa4c4360738b840a6314de6  crypto/sha/asm/sha512-sparcv9.pl
-f64d16c1e5c3fa4a7969de494a8372127502171a517c14be7a1e3a43a7308699  crypto/sha/asm/sha512-x86_64.pl
-8725cabb8d695c576619f19283b034074a3fa0f1c0be952a9dbe9793be15b907  crypto/sha/asm/sha512p8-ppc.pl
+1f9ba79b1d591b7aa37b62382422cb025f5b45784d26cc5790c05cf4eb52b792  crypto/sha/asm/sha512-armv4.pl
+8136196fce18b736f671a4b4945cd4aa4ab25a28c90c6fc9ab31ff771e8e0d9f  crypto/sha/asm/sha512-armv8.pl
+5b6796a9978b69fd78ee2ff1adc5cf35d44cad8194a38d1c2aba2023012cf252  crypto/sha/asm/sha512-c64xplus.pl
+e8df660671ba61aa2e8f51358baf5d8ca913093e2ee1a40c9cb46d9c2c0851f6  crypto/sha/asm/sha512-ia64.pl
+525f253ef8051bfb0e344ac2e40688ce359a42707fe360d23a03f522cc88c81a  crypto/sha/asm/sha512-mips.pl
+3c3e03529d8514467f8d77c01978348636bb339315feb8041fbde7640565001e  crypto/sha/asm/sha512-parisc.pl
+952ef1b10e8bbe3f638cc798b91ab9c5b47b66ed8fe94647b1beec9874f2e71e  crypto/sha/asm/sha512-ppc.pl
+193a0ea240264b29dd68a425f604a6da4b18e28838dcf909dd7e711af880f782  crypto/sha/asm/sha512-s390x.pl
+dcb466a1e5938fb64ecb38b0533602192d61334da864ee8dfdcfa12d3cdfa273  crypto/sha/asm/sha512-sparcv9.pl
+bb6503967a58b767a3e73441cfabc77f15c8ac747f377e276d4aa63d05f2c3c4  crypto/sha/asm/sha512-x86_64.pl
+68d2f3b2dccb978ee42640f4fb4d2eae6b74d071017a3eedd9e7cb77762817dc  crypto/sha/asm/sha512p8-ppc.pl
 57f6cf54b1b5d2cac7a8f622b7b6bd1878f360fff3fa0f02352061c24162ebbb  crypto/sha/keccak1600.c
 306cacd3f86e5cacaca74c58ef862516515e5c0cafaff48636d537fd84f1c2fb  crypto/sha/sha1dgst.c
 4d8cf04f5806611e7586aab47fb28165ec1afb00168e2c9876bb36cb5c29bf8b  crypto/sha/sha256.c
@@ -346,12 +346,12 @@ c50c584c55e56347bb43aca4b796b5344d70daece3061f586b79c871c21f5d1a  crypto/sparse_
 a41ae93a755e2ec89b3cb5b4932e2b508fdda92ace2e025a2650a6da0e9e972c  crypto/threads_none.c
 3729e2bd36f945808b578e0d89fac0fcb3114e4fc9381614bcbd8a9869991716  crypto/threads_pthread.c
 88423960f0414f6fd41fba4f4c67f9f7260c2741e4788adcd52493e895ec8027  crypto/threads_win.c
-fd6c27cf7c6b5449b17f2b725f4203c4c10207f1973db09fd41571efe5de08fd  crypto/x86_64cpuid.pl
+af0af59fe2cb8668a96751f343232d7faa3e7a937beb2bda09ed74fe60b9cb5f  crypto/x86_64cpuid.pl
 bbec287bb9bf35379885f8f8998b7fd9e8fc22efee9e1b299109af0f33a7ee16  crypto/x86cpuid.pl
-0a9c484f640d96e918921f57f592e82e99ccdbe35d3138d64b10c7af839e9a07  e_os.h
+acbb841170d4d3eb91d969be1c0e4973b1babfd5fcd76440b0628f509f82fd76  e_os.h
 6f353dc7c8c4d8f24f7ffbf920668ccb224ebb5810805a7c80d96770cd858005  include/crypto/aes_platform.h
 8c6f308c1ca774e6127e325c3b80511dbcdc99631f032694d8db53a5c02364ee  include/crypto/asn1_dsa.h
-8ce1b35c6924555ef316c7c51d6c27656869e6da7f513f45b7a7051579e3e54d  include/crypto/bn.h
+f6b01cff254311e973361190011cb6aa4d24b3a8c92f54e5191b7e2f669b8745  include/crypto/bn.h
 1c46818354d42bd1b1c4e5fdae9e019814936e775fd8c918ca49959c2a6416df  include/crypto/bn_conf.h.in
 7a43a4898fcc8446065e6c99249bcc14e475716e8c1d40d50408c0ab179520e6  include/crypto/bn_dh.h
 e69b2b20fb415e24b970941c84a62b752b5d0175bc68126e467f7cc970495504  include/crypto/cryptlib.h
@@ -373,7 +373,7 @@ f326212c978576c5346c89ae0336c2428594494b54054f6045b1f1038bfbc004  include/crypto
 7676b02824b2d68df6bddeb251e9b8a8fa2e35a95dad9a7ebeca53f9ab8d2dad  include/crypto/sparse_array.h
 7ad02c7de77304c3b298deeb038ab2550cf8b2bce03021994477c6c43dbcf86e  include/crypto/types.h
 782a83d4e489fd865e2768a20bfa31e78c2071fd0ceeb9eb077276ae2bcc6590  include/internal/bio.h
-92aacb3e49288f91b44f97e41933e88fe455706e1dd21a365683c2ab545db131  include/internal/constant_time.h
+8e984890c7c62cdd6356963f034831831f7167c65096cb4d23bc765d84d2c598  include/internal/constant_time.h
 c5bb97f654984130c8b44c09a52395bce0b22985d5dbc9c4d9377d86283f11f8  include/internal/core.h
 0b572801dfb8a41cc239e3439f8097a0ad11bbdf5d54811d10ceba3175cf2f17  include/internal/cryptlib.h
 9571cfd3d5666749084b354a6d65adee443deeb5713a58c098c7b03bc69dbc63  include/internal/deprecated.h
@@ -495,7 +495,7 @@ eec462d685dd3b4764b076a3c18ecd9dd254350a0b78ddc2f8a60587829e1ce3  providers/comm
 5b94312727ca33e4f5c038f4caaae8417bf584cfde22df83d91f3c55c30c81ee  providers/common/securitycheck.c
 527eda471e26763a5fcf123b2d290234d5c836de7b8ef6eef2166ef439919d82  providers/common/securitycheck_fips.c
 abd5997bc33b681a4ab275978b92aebca0806a4a3f0c2f41dacf11b3b6f4e101  providers/fips/fips_entry.c
-0f761a26c8fa6ad8d5a15c817afe1741352b21769b2164a2eb7dd50e1f6fe04f  providers/fips/fipsprov.c
+4a5ed1059ea6c5ef8d4b2a074b3da332443468852f58c18555f67f5d6d98606a  providers/fips/fipsprov.c
 5d24ba30f9cc7ca48546fb85dc285bd68590f3a604a0bd471bcb0c2a61169591  providers/fips/self_test.c
 f822a03138e8b83ccaa910b89d72f31691da6778bf6638181f993ec7ae1167e3  providers/fips/self_test.h
 d3c95c9c6cc4e3b1a5e4b2bfb2ae735a4109d763bcda7b1e9b8f9eb253f79820  providers/fips/self_test_data.inc
@@ -546,8 +546,8 @@ de342d04be6af69037922d5c97bdc40c0c27f6740636e72786a765d0d8ad9173  providers/impl
 b5f94d597df72ca58486c59b2a70b4057d13f09528f861ed41a84b7125b54a82  providers/implementations/exchange/dh_exch.c
 9c46dc0d859875fcc0bc3d61a7b610cd3520b1bf63718775c1124f54a1fe5f24  providers/implementations/exchange/ecdh_exch.c
 9bf87b8429398a6465c7e9f749a33b84974303a458736b56f3359b30726d3969  providers/implementations/exchange/ecx_exch.c
-0cc02005660c5c340660123decac838c59b7460ef1003d9d50edc604cfd8e375  providers/implementations/exchange/kdf_exch.c
-a0d1c1d49557d32497877b2d549d2a7a7729a550306275bfe6ddcefca0d8fc80  providers/implementations/include/prov/ciphercommon.h
+4692ea3852bf5763db576359bd793fc1ec3bcd0ca42fc906991d7ec4cced7b2a  providers/implementations/exchange/kdf_exch.c
+996f1397f61b9eab1e31b5d06bccd9ac958dbd5982fd41fdb263ee889b84275c  providers/implementations/include/prov/ciphercommon.h
 a9f5de1623221f327245957ec1dfd66a1914bff25adf4bcb81213c7955d19382  providers/implementations/include/prov/ciphercommon_aead.h
 dd07797d61988fd4124cfb920616df672938da80649fac5977bfd061c981edc5  providers/implementations/include/prov/ciphercommon_ccm.h
 0c1e99d70155402a790e4de65923228c8df8ad970741caccfe8b513837457d7f  providers/implementations/include/prov/ciphercommon_gcm.h
@@ -557,7 +557,7 @@ b9a61ce951c1904d8315b1bb26c0ab0aaadb47e71d4ead5df0a891608c728c4b  providers/impl
 c95ce5498e724b9b3d58e3c2f4723e7e3e4beb07f9bea9422e43182cbadb43af  providers/implementations/include/prov/macsignature.h
 29d1a112b799e1f45fdf8bcee8361c2ed67428c250c1cdf408a9fbb7ebf4cce1  providers/implementations/include/prov/names.h
 2187713b446d8b6d24ee986748b941ac3e24292c71e07ff9fb53a33021decdda  providers/implementations/include/prov/seeding.h
-4e71ffd329f1715d14b54e14036b4b2618deb2fd81675287ce5eeb6c76a31d54  providers/implementations/kdfs/hkdf.c
+d376c58489ae36fbece94bb88939845ced04a2a0bdd55d6a3562e45a56577ae1  providers/implementations/kdfs/hkdf.c
 a62e3af09f5af84dcf36f951ba4ac90ca1694adaf3747126186020b155f94186  providers/implementations/kdfs/kbkdf.c
 e0644e727aacfea4da3cf2c4d2602d7ef0626ebb760b6467432ffd54d5fbb24d  providers/implementations/kdfs/pbkdf2.c
 c0778565abff112c0c5257329a7750ec4605e62f26cc36851fa1fbee6e03c70c  providers/implementations/kdfs/pbkdf2.h
@@ -580,11 +580,11 @@ e69aa06f8f3c6f5a26702b9f44a844b8589b99dc0ee590953a29e8b9ef10acbe  providers/impl
 895c8dc7235b9ad5ff893be0293cbc245a5455e8850195ac7d446646e4ea71d0  providers/implementations/macs/hmac_prov.c
 8640b63fd8325aaf8f7128d6cc448d9af448a65bf51a8978075467d33a67944e  providers/implementations/macs/kmac_prov.c
 bf30274dd6b528ae913984775bd8f29c6c48c0ef06d464d0f738217727b7aa5c  providers/implementations/rands/crngt.c
-9d23df7f99beec7392c9d4ed813407050bc2d150098888fe802e2c9705fc33fa  providers/implementations/rands/drbg.c
-bb5f8161a80d0d1a7ee919af2b167972b00afd62e326252ca6aa93101f315f19  providers/implementations/rands/drbg_ctr.c
-a05adc3f6d9d6f948e5ead75f0522ed3164cb5b2d301169242f3cb97c4a7fac3  providers/implementations/rands/drbg_hash.c
-0876dfae991028c569631938946e458e6829cacf4cfb673d2b144ae50a3160bb  providers/implementations/rands/drbg_hmac.c
-fc43558964bdf12442d3f6ab6cc3e6849f7adb42f4d0123a1279819befcf71cb  providers/implementations/rands/drbg_local.h
+f9457255fc57ef5739aa2584e535195e38cc947e31fd044d28d64c28c8a946ce  providers/implementations/rands/drbg.c
+7e8fa6333845778474ed1313a66867512512372c9397f699a8f68fa6d5fc05fa  providers/implementations/rands/drbg_ctr.c
+8337994f4bc95e421d6d2833bb4481ad9d84deb3913d0faec6e1791ea372a793  providers/implementations/rands/drbg_hash.c
+1f040090f596f88cb64d6eb89109a8b75e66caee113708fb59335ad2547027fc  providers/implementations/rands/drbg_hmac.c
+7a1b8516f891f25f3dc07ffe0455200f20d3a1f0345a917f00c7d9afe900bb0a  providers/implementations/rands/drbg_local.h
 04339b66c10017229ef368cb48077f58a252ebfda9ab12b9f919e4149b1036ed  providers/implementations/rands/test_rng.c
 cafb9e6f54ad15889fcebddac6df61336bff7d78936f7de3bb5aab8aee5728d2  providers/implementations/signature/dsa_sig.c
 a30dc6308de0ca33406e7ce909f3bcf7580fb84d863b0976b275839f866258df  providers/implementations/signature/ecdsa_sig.c
diff --git a/deps/openssl/openssl/providers/fips.checksum b/deps/openssl/openssl/providers/fips.checksum
index 8fe82e0257063e..7b84d2271d3a9d 100644
--- a/deps/openssl/openssl/providers/fips.checksum
+++ b/deps/openssl/openssl/providers/fips.checksum
@@ -1 +1 @@
-9597c676c418928e2ba5075a6352a7d5b398e64db622b577822391424300ed43  providers/fips-sources.checksums
+4e1960f3d68410e8daf1893c9133ba9840912974ec65f885054c46b6bbeff5cd  providers/fips-sources.checksums
diff --git a/deps/openssl/openssl/providers/fips/fipsprov.c b/deps/openssl/openssl/providers/fips/fipsprov.c
index 6a88039423d9d8..3889dcd88a71a2 100644
--- a/deps/openssl/openssl/providers/fips/fipsprov.c
+++ b/deps/openssl/openssl/providers/fips/fipsprov.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -655,6 +655,8 @@ int OSSL_provider_init_int(const OSSL_CORE_HANDLE *handle,
         }
     }
 
+    OPENSSL_cpuid_setup();
+
     /*  Create a context. */
     if ((*provctx = ossl_prov_ctx_new()) == NULL
         || (libctx = OSSL_LIB_CTX_new()) == NULL) {
diff --git a/deps/openssl/openssl/providers/implementations/exchange/kdf_exch.c b/deps/openssl/openssl/providers/implementations/exchange/kdf_exch.c
index 527a866c3d8dcc..148a3c422a8fc4 100644
--- a/deps/openssl/openssl/providers/implementations/exchange/kdf_exch.c
+++ b/deps/openssl/openssl/providers/implementations/exchange/kdf_exch.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -28,9 +28,13 @@ static OSSL_FUNC_keyexch_derive_fn kdf_derive;
 static OSSL_FUNC_keyexch_freectx_fn kdf_freectx;
 static OSSL_FUNC_keyexch_dupctx_fn kdf_dupctx;
 static OSSL_FUNC_keyexch_set_ctx_params_fn kdf_set_ctx_params;
+static OSSL_FUNC_keyexch_get_ctx_params_fn kdf_get_ctx_params;
 static OSSL_FUNC_keyexch_settable_ctx_params_fn kdf_tls1_prf_settable_ctx_params;
 static OSSL_FUNC_keyexch_settable_ctx_params_fn kdf_hkdf_settable_ctx_params;
 static OSSL_FUNC_keyexch_settable_ctx_params_fn kdf_scrypt_settable_ctx_params;
+static OSSL_FUNC_keyexch_gettable_ctx_params_fn kdf_tls1_prf_gettable_ctx_params;
+static OSSL_FUNC_keyexch_gettable_ctx_params_fn kdf_hkdf_gettable_ctx_params;
+static OSSL_FUNC_keyexch_gettable_ctx_params_fn kdf_scrypt_gettable_ctx_params;
 
 typedef struct {
     void *provctx;
@@ -169,6 +173,13 @@ static int kdf_set_ctx_params(void *vpkdfctx, const OSSL_PARAM params[])
     return EVP_KDF_CTX_set_params(pkdfctx->kdfctx, params);
 }
 
+static int kdf_get_ctx_params(void *vpkdfctx, OSSL_PARAM params[])
+{
+    PROV_KDF_CTX *pkdfctx = (PROV_KDF_CTX *)vpkdfctx;
+
+    return EVP_KDF_CTX_get_params(pkdfctx->kdfctx, params);
+}
+
 static const OSSL_PARAM *kdf_settable_ctx_params(ossl_unused void *vpkdfctx,
                                                  void *provctx,
                                                  const char *kdfname)
@@ -197,6 +208,34 @@ KDF_SETTABLE_CTX_PARAMS(tls1_prf, "TLS1-PRF")
 KDF_SETTABLE_CTX_PARAMS(hkdf, "HKDF")
 KDF_SETTABLE_CTX_PARAMS(scrypt, "SCRYPT")
 
+static const OSSL_PARAM *kdf_gettable_ctx_params(ossl_unused void *vpkdfctx,
+                                                 void *provctx,
+                                                 const char *kdfname)
+{
+    EVP_KDF *kdf = EVP_KDF_fetch(PROV_LIBCTX_OF(provctx), kdfname,
+                                 NULL);
+    const OSSL_PARAM *params;
+
+    if (kdf == NULL)
+        return NULL;
+
+    params = EVP_KDF_gettable_ctx_params(kdf);
+    EVP_KDF_free(kdf);
+
+    return params;
+}
+
+#define KDF_GETTABLE_CTX_PARAMS(funcname, kdfname) \
+    static const OSSL_PARAM *kdf_##funcname##_gettable_ctx_params(void *vpkdfctx, \
+                                                                  void *provctx) \
+    { \
+        return kdf_gettable_ctx_params(vpkdfctx, provctx, kdfname); \
+    }
+
+KDF_GETTABLE_CTX_PARAMS(tls1_prf, "TLS1-PRF")
+KDF_GETTABLE_CTX_PARAMS(hkdf, "HKDF")
+KDF_GETTABLE_CTX_PARAMS(scrypt, "SCRYPT")
+
 #define KDF_KEYEXCH_FUNCTIONS(funcname) \
     const OSSL_DISPATCH ossl_kdf_##funcname##_keyexch_functions[] = { \
         { OSSL_FUNC_KEYEXCH_NEWCTX, (void (*)(void))kdf_##funcname##_newctx }, \
@@ -205,8 +244,11 @@ KDF_SETTABLE_CTX_PARAMS(scrypt, "SCRYPT")
         { OSSL_FUNC_KEYEXCH_FREECTX, (void (*)(void))kdf_freectx }, \
         { OSSL_FUNC_KEYEXCH_DUPCTX, (void (*)(void))kdf_dupctx }, \
         { OSSL_FUNC_KEYEXCH_SET_CTX_PARAMS, (void (*)(void))kdf_set_ctx_params }, \
+        { OSSL_FUNC_KEYEXCH_GET_CTX_PARAMS, (void (*)(void))kdf_get_ctx_params }, \
         { OSSL_FUNC_KEYEXCH_SETTABLE_CTX_PARAMS, \
         (void (*)(void))kdf_##funcname##_settable_ctx_params }, \
+        { OSSL_FUNC_KEYEXCH_GETTABLE_CTX_PARAMS, \
+        (void (*)(void))kdf_##funcname##_gettable_ctx_params }, \
         { 0, NULL } \
     };
 
diff --git a/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon.h b/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon.h
index 383b759304d45c..aacd49707f84c6 100644
--- a/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon.h
+++ b/deps/openssl/openssl/providers/implementations/include/prov/ciphercommon.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -42,6 +42,13 @@ typedef int (PROV_CIPHER_HW_FN)(PROV_CIPHER_CTX *dat, unsigned char *out,
 #define PROV_CIPHER_FLAG_INVERSE_CIPHER   0x0200
 
 struct prov_cipher_ctx_st {
+    /* place buffer at the beginning for memory alignment */
+    /* The original value of the iv */
+    unsigned char oiv[GENERIC_BLOCK_SIZE];
+    /* Buffer of partial blocks processed via update calls */
+    unsigned char buf[GENERIC_BLOCK_SIZE];
+    unsigned char iv[GENERIC_BLOCK_SIZE];
+
     block128_f block;
     union {
         cbc128_f cbc;
@@ -83,12 +90,6 @@ struct prov_cipher_ctx_st {
      * manage partial blocks themselves.
      */
     unsigned int num;
-
-    /* The original value of the iv */
-    unsigned char oiv[GENERIC_BLOCK_SIZE];
-    /* Buffer of partial blocks processed via update calls */
-    unsigned char buf[GENERIC_BLOCK_SIZE];
-    unsigned char iv[GENERIC_BLOCK_SIZE];
     const PROV_CIPHER_HW *hw; /* hardware specific functions */
     const void *ks; /* Pointer to algorithm specific key data */
     OSSL_LIB_CTX *libctx;
diff --git a/deps/openssl/openssl/providers/implementations/kdfs/hkdf.c b/deps/openssl/openssl/providers/implementations/kdfs/hkdf.c
index 25819ea2397765..3db8b43891a000 100644
--- a/deps/openssl/openssl/providers/implementations/kdfs/hkdf.c
+++ b/deps/openssl/openssl/providers/implementations/kdfs/hkdf.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -340,6 +340,13 @@ static int kdf_hkdf_get_ctx_params(void *vctx, OSSL_PARAM params[])
             return 0;
         return OSSL_PARAM_set_size_t(p, sz);
     }
+    if ((p = OSSL_PARAM_locate(params, OSSL_KDF_PARAM_INFO)) != NULL) {
+        if (ctx->info == NULL || ctx->info_len == 0) {
+            p->return_size = 0;
+            return 1;
+        }
+        return OSSL_PARAM_set_octet_string(p, ctx->info, ctx->info_len);
+    }
     return -2;
 }
 
@@ -348,6 +355,7 @@ static const OSSL_PARAM *kdf_hkdf_gettable_ctx_params(ossl_unused void *ctx,
 {
     static const OSSL_PARAM known_gettable_ctx_params[] = {
         OSSL_PARAM_size_t(OSSL_KDF_PARAM_SIZE, NULL),
+        OSSL_PARAM_octet_string(OSSL_KDF_PARAM_INFO, NULL, 0),
         OSSL_PARAM_END
     };
     return known_gettable_ctx_params;
diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg.c b/deps/openssl/openssl/providers/implementations/rands/drbg.c
index e30836c53cabbb..41ff2a8e33f6e8 100644
--- a/deps/openssl/openssl/providers/implementations/rands/drbg.c
+++ b/deps/openssl/openssl/providers/implementations/rands/drbg.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2011-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -765,6 +765,7 @@ int ossl_drbg_enable_locking(void *vctx)
 PROV_DRBG *ossl_rand_drbg_new
     (void *provctx, void *parent, const OSSL_DISPATCH *p_dispatch,
      int (*dnew)(PROV_DRBG *ctx),
+     void (*dfree)(void *vctx),
      int (*instantiate)(PROV_DRBG *drbg,
                         const unsigned char *entropy, size_t entropylen,
                         const unsigned char *nonce, size_t noncelen,
@@ -844,7 +845,7 @@ PROV_DRBG *ossl_rand_drbg_new
     return drbg;
 
  err:
-    ossl_rand_drbg_free(drbg);
+    dfree(drbg);
     return NULL;
 }
 
diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg_ctr.c b/deps/openssl/openssl/providers/implementations/rands/drbg_ctr.c
index 451113c4d16205..21fdce640816dc 100644
--- a/deps/openssl/openssl/providers/implementations/rands/drbg_ctr.c
+++ b/deps/openssl/openssl/providers/implementations/rands/drbg_ctr.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2011-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -581,7 +581,7 @@ static int drbg_ctr_init(PROV_DRBG *drbg)
     EVP_CIPHER_CTX_free(ctr->ctx_ecb);
     EVP_CIPHER_CTX_free(ctr->ctx_ctr);
     ctr->ctx_ecb = ctr->ctx_ctr = NULL;
-    return 0;    
+    return 0;
 }
 
 static int drbg_ctr_new(PROV_DRBG *drbg)
@@ -602,7 +602,8 @@ static int drbg_ctr_new(PROV_DRBG *drbg)
 static void *drbg_ctr_new_wrapper(void *provctx, void *parent,
                                    const OSSL_DISPATCH *parent_dispatch)
 {
-    return ossl_rand_drbg_new(provctx, parent, parent_dispatch, &drbg_ctr_new,
+    return ossl_rand_drbg_new(provctx, parent, parent_dispatch,
+                              &drbg_ctr_new, &drbg_ctr_free,
                               &drbg_ctr_instantiate, &drbg_ctr_uninstantiate,
                               &drbg_ctr_reseed, &drbg_ctr_generate);
 }
diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg_hash.c b/deps/openssl/openssl/providers/implementations/rands/drbg_hash.c
index 6deb0a29256b23..de9375793d5a63 100644
--- a/deps/openssl/openssl/providers/implementations/rands/drbg_hash.c
+++ b/deps/openssl/openssl/providers/implementations/rands/drbg_hash.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2011-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -410,7 +410,8 @@ static int drbg_hash_new(PROV_DRBG *ctx)
 static void *drbg_hash_new_wrapper(void *provctx, void *parent,
                                    const OSSL_DISPATCH *parent_dispatch)
 {
-    return ossl_rand_drbg_new(provctx, parent, parent_dispatch, &drbg_hash_new,
+    return ossl_rand_drbg_new(provctx, parent, parent_dispatch,
+                              &drbg_hash_new, &drbg_hash_free,
                               &drbg_hash_instantiate, &drbg_hash_uninstantiate,
                               &drbg_hash_reseed, &drbg_hash_generate);
 }
diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c b/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c
index e68465a78cd9c1..4eb78de0653da5 100644
--- a/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c
+++ b/deps/openssl/openssl/providers/implementations/rands/drbg_hmac.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2011-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -296,7 +296,8 @@ static int drbg_hmac_new(PROV_DRBG *drbg)
 static void *drbg_hmac_new_wrapper(void *provctx, void *parent,
                                    const OSSL_DISPATCH *parent_dispatch)
 {
-    return ossl_rand_drbg_new(provctx, parent, parent_dispatch, &drbg_hmac_new,
+    return ossl_rand_drbg_new(provctx, parent, parent_dispatch,
+                              &drbg_hmac_new, &drbg_hmac_free,
                               &drbg_hmac_instantiate, &drbg_hmac_uninstantiate,
                               &drbg_hmac_reseed, &drbg_hmac_generate);
 }
diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg_local.h b/deps/openssl/openssl/providers/implementations/rands/drbg_local.h
index 8bc5df89c2363b..2f3aacdea8714a 100644
--- a/deps/openssl/openssl/providers/implementations/rands/drbg_local.h
+++ b/deps/openssl/openssl/providers/implementations/rands/drbg_local.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -181,6 +181,7 @@ struct prov_drbg_st {
 PROV_DRBG *ossl_rand_drbg_new
     (void *provctx, void *parent, const OSSL_DISPATCH *parent_dispatch,
      int (*dnew)(PROV_DRBG *ctx),
+     void (*dfree)(void *vctx),
      int (*instantiate)(PROV_DRBG *drbg,
                         const unsigned char *entropy, size_t entropylen,
                         const unsigned char *nonce, size_t noncelen,
diff --git a/deps/openssl/openssl/ssl/record/rec_layer_s3.c b/deps/openssl/openssl/ssl/record/rec_layer_s3.c
index 4bcffcc41e3649..779e998bb6ee06 100644
--- a/deps/openssl/openssl/ssl/record/rec_layer_s3.c
+++ b/deps/openssl/openssl/ssl/record/rec_layer_s3.c
@@ -81,6 +81,15 @@ int RECORD_LAYER_read_pending(const RECORD_LAYER *rl)
     return SSL3_BUFFER_get_left(&rl->rbuf) != 0;
 }
 
+int RECORD_LAYER_data_present(const RECORD_LAYER *rl)
+{
+    if (rl->rstate == SSL_ST_READ_BODY)
+        return 1;
+    if (RECORD_LAYER_processed_read_pending(rl))
+        return 1;
+    return 0;
+}
+
 /* Checks if we have decrypted unread record data pending */
 int RECORD_LAYER_processed_read_pending(const RECORD_LAYER *rl)
 {
@@ -221,6 +230,12 @@ int ssl3_read_n(SSL *s, size_t n, size_t max, int extend, int clearold,
         /* ... now we can act as if 'extend' was set */
     }
 
+    if (!ossl_assert(s->rlayer.packet != NULL)) {
+        /* does not happen */
+        SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
+        return -1;
+    }
+
     len = s->rlayer.packet_length;
     pkt = rb->buf + align;
     /*
diff --git a/deps/openssl/openssl/ssl/record/record.h b/deps/openssl/openssl/ssl/record/record.h
index 234656bf939421..a2db6aa88e14b0 100644
--- a/deps/openssl/openssl/ssl/record/record.h
+++ b/deps/openssl/openssl/ssl/record/record.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -205,6 +205,7 @@ void RECORD_LAYER_release(RECORD_LAYER *rl);
 int RECORD_LAYER_read_pending(const RECORD_LAYER *rl);
 int RECORD_LAYER_processed_read_pending(const RECORD_LAYER *rl);
 int RECORD_LAYER_write_pending(const RECORD_LAYER *rl);
+int RECORD_LAYER_data_present(const RECORD_LAYER *rl);
 void RECORD_LAYER_reset_read_sequence(RECORD_LAYER *rl);
 void RECORD_LAYER_reset_write_sequence(RECORD_LAYER *rl);
 int RECORD_LAYER_is_sslv2_record(RECORD_LAYER *rl);
diff --git a/deps/openssl/openssl/ssl/record/ssl3_buffer.c b/deps/openssl/openssl/ssl/record/ssl3_buffer.c
index 97b0c26ced81e9..e769235fe0dea6 100644
--- a/deps/openssl/openssl/ssl/record/ssl3_buffer.c
+++ b/deps/openssl/openssl/ssl/record/ssl3_buffer.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -191,5 +191,7 @@ int ssl3_release_read_buffer(SSL *s)
         OPENSSL_cleanse(b->buf, b->len);
     OPENSSL_free(b->buf);
     b->buf = NULL;
+    s->rlayer.packet = NULL;
+    s->rlayer.packet_length = 0;
     return 1;
 }
diff --git a/deps/openssl/openssl/ssl/ssl_err.c b/deps/openssl/openssl/ssl/ssl_err.c
index 79c2ed95c1859f..fe0d9c280f7e55 100644
--- a/deps/openssl/openssl/ssl/ssl_err.c
+++ b/deps/openssl/openssl/ssl/ssl_err.c
@@ -1,6 +1,6 @@
 /*
  * Generated by util/mkerr.pl DO NOT EDIT
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -459,6 +459,8 @@ static const ERR_STRING_DATA SSL_str_reasons[] = {
     "tlsv1 alert insufficient security"},
     {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_TLSV1_ALERT_INTERNAL_ERROR),
     "tlsv1 alert internal error"},
+    {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_TLSV1_ALERT_NO_APPLICATION_PROTOCOL),
+    "tlsv1 alert no application protocol"},
     {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_TLSV1_ALERT_NO_RENEGOTIATION),
     "tlsv1 alert no renegotiation"},
     {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_TLSV1_ALERT_PROTOCOL_VERSION),
@@ -467,6 +469,8 @@ static const ERR_STRING_DATA SSL_str_reasons[] = {
     "tlsv1 alert record overflow"},
     {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_TLSV1_ALERT_UNKNOWN_CA),
     "tlsv1 alert unknown ca"},
+    {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_TLSV1_ALERT_UNKNOWN_PSK_IDENTITY),
+    "tlsv1 alert unknown psk identity"},
     {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_TLSV1_ALERT_USER_CANCELLED),
     "tlsv1 alert user cancelled"},
     {ERR_PACK(ERR_LIB_SSL, 0, SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE),
diff --git a/deps/openssl/openssl/ssl/ssl_lib.c b/deps/openssl/openssl/ssl/ssl_lib.c
index 20ddf8d2fb045a..2ea39b745a6893 100644
--- a/deps/openssl/openssl/ssl/ssl_lib.c
+++ b/deps/openssl/openssl/ssl/ssl_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  * Copyright 2005 Nokia. All rights reserved.
  *
@@ -3821,9 +3821,10 @@ void ssl_update_cache(SSL *s, int mode)
 
     /*
      * If the session_id_length is 0, we are not supposed to cache it, and it
-     * would be rather hard to do anyway :-)
+     * would be rather hard to do anyway :-). Also if the session has already
+     * been marked as not_resumable we should not cache it for later reuse.
      */
-    if (s->session->session_id_length == 0)
+    if (s->session->session_id_length == 0 || s->session->not_resumable)
         return;
 
     /*
@@ -5596,6 +5597,9 @@ int SSL_free_buffers(SSL *ssl)
     if (RECORD_LAYER_read_pending(rl) || RECORD_LAYER_write_pending(rl))
         return 0;
 
+    if (RECORD_LAYER_data_present(rl))
+        return 0;
+
     RECORD_LAYER_release(rl);
     return 1;
 }
diff --git a/deps/openssl/openssl/ssl/ssl_sess.c b/deps/openssl/openssl/ssl/ssl_sess.c
index d836b33ed0e81d..56854fc8902301 100644
--- a/deps/openssl/openssl/ssl/ssl_sess.c
+++ b/deps/openssl/openssl/ssl/ssl_sess.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright 2005 Nokia. All rights reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -152,16 +152,11 @@ SSL_SESSION *SSL_SESSION_new(void)
     return ss;
 }
 
-SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src)
-{
-    return ssl_session_dup(src, 1);
-}
-
 /*
  * Create a new SSL_SESSION and duplicate the contents of |src| into it. If
  * ticket == 0 then no ticket information is duplicated, otherwise it is.
  */
-SSL_SESSION *ssl_session_dup(const SSL_SESSION *src, int ticket)
+static SSL_SESSION *ssl_session_dup_intern(const SSL_SESSION *src, int ticket)
 {
     SSL_SESSION *dest;
 
@@ -285,6 +280,27 @@ SSL_SESSION *ssl_session_dup(const SSL_SESSION *src, int ticket)
     return NULL;
 }
 
+SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src)
+{
+    return ssl_session_dup_intern(src, 1);
+}
+
+/*
+ * Used internally when duplicating a session which might be already shared.
+ * We will have resumed the original session. Subsequently we might have marked
+ * it as non-resumable (e.g. in another thread) - but this copy should be ok to
+ * resume from.
+ */
+SSL_SESSION *ssl_session_dup(const SSL_SESSION *src, int ticket)
+{
+    SSL_SESSION *sess = ssl_session_dup_intern(src, ticket);
+
+    if (sess != NULL)
+        sess->not_resumable = 0;
+
+    return sess;
+}
+
 const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, unsigned int *len)
 {
     if (len)
@@ -515,6 +531,12 @@ SSL_SESSION *lookup_sess_in_cache(SSL *s, const unsigned char *sess_id,
         ret = s->session_ctx->get_session_cb(s, sess_id, sess_id_len, ©);
 
         if (ret != NULL) {
+            if (ret->not_resumable) {
+                /* If its not resumable then ignore this session */
+                if (!copy)
+                    SSL_SESSION_free(ret);
+                return NULL;
+            }
             ssl_tsan_counter(s->session_ctx,
                              &s->session_ctx->stats.sess_cb_hit);
 
diff --git a/deps/openssl/openssl/ssl/statem/statem_srvr.c b/deps/openssl/openssl/ssl/statem/statem_srvr.c
index ddd85cc38c4a95..92e4f793ab24e9 100644
--- a/deps/openssl/openssl/ssl/statem/statem_srvr.c
+++ b/deps/openssl/openssl/ssl/statem/statem_srvr.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  * Copyright 2005 Nokia. All rights reserved.
  *
@@ -2358,9 +2358,8 @@ int tls_construct_server_hello(SSL *s, WPACKET *pkt)
      * so the following won't overwrite an ID that we're supposed
      * to send back.
      */
-    if (s->session->not_resumable ||
-        (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_SERVER)
-         && !s->hit))
+    if (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_SERVER)
+            && !s->hit)
         s->session->session_id_length = 0;
 
     if (usetls13) {
@@ -3155,7 +3154,7 @@ static int tls_process_cke_gost(SSL *s, PACKET *pkt)
     }
     if (EVP_PKEY_decrypt_init(pkey_ctx) <= 0) {
         SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR);
-        return 0;
+        goto err;
     }
     /*
      * If client certificate is present and is of the same type, maybe
diff --git a/deps/openssl/openssl/ssl/t1_lib.c b/deps/openssl/openssl/ssl/t1_lib.c
index 8be00a4f340598..673e2f0f0248d7 100644
--- a/deps/openssl/openssl/ssl/t1_lib.c
+++ b/deps/openssl/openssl/ssl/t1_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -734,7 +734,8 @@ static int gid_cb(const char *elem, int len, void *arg)
         return 0;
     if (garg->gidcnt == garg->gidmax) {
         uint16_t *tmp =
-            OPENSSL_realloc(garg->gid_arr, garg->gidmax + GROUPLIST_INCREMENT);
+            OPENSSL_realloc(garg->gid_arr,
+                            (garg->gidmax + GROUPLIST_INCREMENT) * sizeof(*garg->gid_arr));
         if (tmp == NULL)
             return 0;
         garg->gidmax += GROUPLIST_INCREMENT;
diff --git a/deps/openssl/openssl/test/bad_dtls_test.c b/deps/openssl/openssl/test/bad_dtls_test.c
index e6ee1ea09f6de9..dc3d4bc0d75001 100644
--- a/deps/openssl/openssl/test/bad_dtls_test.c
+++ b/deps/openssl/openssl/test/bad_dtls_test.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -503,7 +503,6 @@ static int test_bad_dtls(void)
     if (!TEST_ptr(con)
             || !TEST_true(SSL_set_session(con, sess)))
         goto end;
-    SSL_SESSION_free(sess);
 
     rbio = BIO_new(BIO_s_mem());
     wbio = BIO_new(BIO_s_mem());
@@ -591,6 +590,7 @@ static int test_bad_dtls(void)
     testresult = 1;
 
  end:
+    SSL_SESSION_free(sess);
     BIO_free(rbio);
     BIO_free(wbio);
     SSL_free(con);
diff --git a/deps/openssl/openssl/test/build.info b/deps/openssl/openssl/test/build.info
index 416c2270771aa9..25ab0430b731a2 100644
--- a/deps/openssl/openssl/test/build.info
+++ b/deps/openssl/openssl/test/build.info
@@ -874,6 +874,7 @@ IF[{- !$disabled{tests} -}]
   ENDIF
   IF[{- $disabled{module} || !$target{dso_scheme} -}]
     DEFINE[provider_test]=NO_PROVIDER_MODULE
+    DEFINE[prov_config_test]=NO_PROVIDER_MODULE
     DEFINE[provider_internal_test]=NO_PROVIDER_MODULE
   ENDIF
   DEPEND[]=provider_internal_test.cnf
diff --git a/deps/openssl/openssl/test/cmp_hdr_test.c b/deps/openssl/openssl/test/cmp_hdr_test.c
index ed49a0bb619901..e2bd210118d893 100644
--- a/deps/openssl/openssl/test/cmp_hdr_test.c
+++ b/deps/openssl/openssl/test/cmp_hdr_test.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright Nokia 2007-2019
  * Copyright Siemens AG 2015-2019
  *
@@ -71,25 +71,30 @@ static int test_HDR_set_get_pvno(void)
 
 static int execute_HDR_get0_senderNonce_test(CMP_HDR_TEST_FIXTURE *fixture)
 {
+    int res = 0;
     X509_NAME *sender = X509_NAME_new();
     ASN1_OCTET_STRING *sn;
 
     if (!TEST_ptr(sender))
-        return 0;
+        goto err;
 
     X509_NAME_ADD(sender, "CN", "A common sender name");
     if (!TEST_int_eq(OSSL_CMP_CTX_set1_subjectName(fixture->cmp_ctx, sender),
                      1))
-        return 0;
+        goto err;
     if (!TEST_int_eq(ossl_cmp_hdr_init(fixture->cmp_ctx, fixture->hdr),
                      1))
-        return 0;
+        goto err;
     sn = ossl_cmp_hdr_get0_senderNonce(fixture->hdr);
     if (!TEST_int_eq(ASN1_OCTET_STRING_cmp(fixture->cmp_ctx->senderNonce, sn),
                      0))
-        return 0;
+        goto err;
+
+    res = 1;
+err:
     X509_NAME_free(sender);
-    return 1;
+
+    return res;
 }
 
 static int test_HDR_get0_senderNonce(void)
@@ -102,23 +107,28 @@ static int test_HDR_get0_senderNonce(void)
 
 static int execute_HDR_set1_sender_test(CMP_HDR_TEST_FIXTURE *fixture)
 {
+    int res = 0;
     X509_NAME *x509name = X509_NAME_new();
 
     if (!TEST_ptr(x509name))
-        return 0;
+        goto err;
 
     X509_NAME_ADD(x509name, "CN", "A common sender name");
     if (!TEST_int_eq(ossl_cmp_hdr_set1_sender(fixture->hdr, x509name), 1))
-        return 0;
+        goto err;
+
     if (!TEST_int_eq(fixture->hdr->sender->type, GEN_DIRNAME))
-        return 0;
+        goto err;
 
     if (!TEST_int_eq(X509_NAME_cmp(fixture->hdr->sender->d.directoryName,
                                    x509name), 0))
-        return 0;
+        goto err;
 
+    res = 1;
+err:
     X509_NAME_free(x509name);
-    return 1;
+
+    return res;
 }
 
 static int test_HDR_set1_sender(void)
@@ -131,24 +141,28 @@ static int test_HDR_set1_sender(void)
 
 static int execute_HDR_set1_recipient_test(CMP_HDR_TEST_FIXTURE *fixture)
 {
+    int res = 0;
     X509_NAME *x509name = X509_NAME_new();
 
     if (!TEST_ptr(x509name))
-        return 0;
+        goto err;
 
     X509_NAME_ADD(x509name, "CN", "A common recipient name");
     if (!TEST_int_eq(ossl_cmp_hdr_set1_recipient(fixture->hdr, x509name), 1))
-        return 0;
+        goto err;
 
     if (!TEST_int_eq(fixture->hdr->recipient->type, GEN_DIRNAME))
-        return 0;
+        goto err;
 
     if (!TEST_int_eq(X509_NAME_cmp(fixture->hdr->recipient->d.directoryName,
                                    x509name), 0))
-        return 0;
+        goto err;
 
+    res = 1;
+err:
     X509_NAME_free(x509name);
-    return 1;
+
+    return res;
 }
 
 static int test_HDR_set1_recipient(void)
@@ -203,7 +217,7 @@ static int execute_HDR_set1_senderKID_test(CMP_HDR_TEST_FIXTURE *fixture)
     int res = 0;
 
     if (!TEST_ptr(senderKID))
-        return 0;
+        goto err;
 
     if (!TEST_int_eq(ASN1_OCTET_STRING_set(senderKID, rand_data,
                                            sizeof(rand_data)), 1))
@@ -265,7 +279,7 @@ static int execute_HDR_push1_freeText_test(CMP_HDR_TEST_FIXTURE *fixture)
     int res = 0;
 
     if (!TEST_ptr(text))
-        return 0;
+        goto err;
 
     if (!ASN1_STRING_set(text, "A free text", -1))
         goto err;
@@ -280,6 +294,7 @@ static int execute_HDR_push1_freeText_test(CMP_HDR_TEST_FIXTURE *fixture)
     res = 1;
  err:
     ASN1_UTF8STRING_free(text);
+
     return res;
 }
 
diff --git a/deps/openssl/openssl/test/ct_test.c b/deps/openssl/openssl/test/ct_test.c
index 26d5bc1084503d..ff253414f8063f 100644
--- a/deps/openssl/openssl/test/ct_test.c
+++ b/deps/openssl/openssl/test/ct_test.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -450,13 +450,18 @@ static int test_encode_tls_sct(void)
 
     fixture->sct_list = sk_SCT_new_null();
     if (fixture->sct_list == NULL)
-	    return 0;
+    {
+        tear_down(fixture);
+        return 0;
+    }
 
     if (!TEST_ptr(sct = SCT_new_from_base64(SCT_VERSION_V1, log_id,
                                             CT_LOG_ENTRY_TYPE_X509, timestamp,
                                             extensions, signature)))
-
+    {
+        tear_down(fixture);
         return 0;
+    }
 
     sk_SCT_push(fixture->sct_list, sct);
     fixture->sct_dir = ct_dir;
diff --git a/deps/openssl/openssl/test/dsatest.c b/deps/openssl/openssl/test/dsatest.c
index 5fa83020f87a22..b849105d33d8f2 100644
--- a/deps/openssl/openssl/test/dsatest.c
+++ b/deps/openssl/openssl/test/dsatest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -332,6 +332,7 @@ static int test_dsa_sig_infinite_loop(void)
     BIGNUM *p = NULL, *q = NULL, *g = NULL, *priv = NULL, *pub = NULL, *priv2 = NULL;
     BIGNUM *badq = NULL, *badpriv = NULL;
     const unsigned char msg[] = { 0x00 };
+    unsigned int signature_len0;
     unsigned int signature_len;
     unsigned char signature[64];
 
@@ -375,10 +376,13 @@ static int test_dsa_sig_infinite_loop(void)
         goto err;
 
     /* Test passing signature as NULL */
-    if (!TEST_true(DSA_sign(0, msg, sizeof(msg), NULL, &signature_len, dsa)))
+    if (!TEST_true(DSA_sign(0, msg, sizeof(msg), NULL, &signature_len0, dsa))
+        || !TEST_int_gt(signature_len0, 0))
         goto err;
 
-    if (!TEST_true(DSA_sign(0, msg, sizeof(msg), signature, &signature_len, dsa)))
+    if (!TEST_true(DSA_sign(0, msg, sizeof(msg), signature, &signature_len, dsa))
+        || !TEST_int_gt(signature_len, 0)
+        || !TEST_int_le(signature_len, signature_len0))
         goto err;
 
     /* Test using a private key of zero fails - this causes an infinite loop without the retry test */
diff --git a/deps/openssl/openssl/test/ecdsatest.c b/deps/openssl/openssl/test/ecdsatest.c
index 33a52eb1b5624d..0ddbf6690dcace 100644
--- a/deps/openssl/openssl/test/ecdsatest.c
+++ b/deps/openssl/openssl/test/ecdsatest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2002-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -350,15 +350,39 @@ static int test_builtin_as_sm2(int n)
 static int test_ecdsa_sig_NULL(void)
 {
     int ret;
+    unsigned int siglen0;
     unsigned int siglen;
     unsigned char dgst[128] = { 0 };
     EC_KEY *eckey = NULL;
+    unsigned char *sig = NULL;
+    BIGNUM *kinv = NULL, *rp = NULL;
 
     ret = TEST_ptr(eckey = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1))
           && TEST_int_eq(EC_KEY_generate_key(eckey), 1)
-          && TEST_int_eq(ECDSA_sign(0, dgst, sizeof(dgst), NULL, &siglen, eckey), 1)
-          && TEST_int_gt(siglen, 0);
+          && TEST_int_eq(ECDSA_sign(0, dgst, sizeof(dgst), NULL, &siglen0,
+                                    eckey), 1)
+          && TEST_int_gt(siglen0, 0)
+          && TEST_ptr(sig = OPENSSL_malloc(siglen0))
+          && TEST_int_eq(ECDSA_sign(0, dgst, sizeof(dgst), sig, &siglen,
+                                    eckey), 1)
+          && TEST_int_gt(siglen, 0)
+          && TEST_int_le(siglen, siglen0)
+          && TEST_int_eq(ECDSA_verify(0, dgst, sizeof(dgst), sig, siglen,
+                                      eckey), 1)
+          && TEST_int_eq(ECDSA_sign_setup(eckey, NULL, &kinv, &rp), 1)
+          && TEST_int_eq(ECDSA_sign_ex(0, dgst, sizeof(dgst), NULL, &siglen,
+                                       kinv, rp, eckey), 1)
+          && TEST_int_gt(siglen, 0)
+          && TEST_int_le(siglen, siglen0)
+          && TEST_int_eq(ECDSA_sign_ex(0, dgst, sizeof(dgst), sig, &siglen0,
+                                       kinv, rp, eckey), 1)
+          && TEST_int_eq(siglen, siglen0)
+          && TEST_int_eq(ECDSA_verify(0, dgst, sizeof(dgst), sig, siglen,
+                                      eckey), 1);
     EC_KEY_free(eckey);
+    OPENSSL_free(sig);
+    BN_free(kinv);
+    BN_free(rp);
     return ret;
 }
 
diff --git a/deps/openssl/openssl/test/ecstresstest.c b/deps/openssl/openssl/test/ecstresstest.c
index 22d46c50da2cc9..237def095c7e24 100644
--- a/deps/openssl/openssl/test/ecstresstest.c
+++ b/deps/openssl/openssl/test/ecstresstest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -79,7 +79,7 @@ static int test_curve(void)
             || !TEST_ptr(point = EC_POINT_dup(EC_GROUP_get0_generator(group),
                                               group))
             || !TEST_ptr(result = walk_curve(group, point, num_repeats)))
-        return 0;
+        goto err;
 
     if (print_mode) {
         BN_print(bio_out, result);
diff --git a/deps/openssl/openssl/test/evp_extra_test.c b/deps/openssl/openssl/test/evp_extra_test.c
index 6b484f8711ce65..7e97e2d34d5dc7 100644
--- a/deps/openssl/openssl/test/evp_extra_test.c
+++ b/deps/openssl/openssl/test/evp_extra_test.c
@@ -1100,7 +1100,7 @@ static int test_EC_priv_only_legacy(void)
         goto err;
     eckey = NULL;
 
-    while (dup_pk == NULL) {
+    for (;;) {
         ret = 0;
         ctx = EVP_MD_CTX_new();
         if (!TEST_ptr(ctx))
@@ -1116,6 +1116,9 @@ static int test_EC_priv_only_legacy(void)
         EVP_MD_CTX_free(ctx);
         ctx = NULL;
 
+        if (dup_pk != NULL)
+            break;
+
         if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pkey)))
             goto err;
         /* EVP_PKEY_eq() returns -2 with missing public keys */
@@ -1125,6 +1128,7 @@ static int test_EC_priv_only_legacy(void)
         if (!ret)
             goto err;
     }
+    ret = 1;
 
  err:
     EVP_MD_CTX_free(ctx);
@@ -2583,6 +2587,47 @@ static int test_emptyikm_HKDF(void)
     return ret;
 }
 
+static int test_empty_salt_info_HKDF(void)
+{
+    EVP_PKEY_CTX *pctx;
+    unsigned char out[20];
+    size_t outlen;
+    int ret = 0;
+    unsigned char salt[] = "";
+    unsigned char key[] = "012345678901234567890123456789";
+    unsigned char info[] = "";
+    const unsigned char expected[] = {
+	0x67, 0x12, 0xf9, 0x27, 0x8a, 0x8a, 0x3a, 0x8f, 0x7d, 0x2c, 0xa3, 0x6a,
+	0xaa, 0xe9, 0xb3, 0xb9, 0x52, 0x5f, 0xe0, 0x06,
+    };
+    size_t expectedlen = sizeof(expected);
+
+    if (!TEST_ptr(pctx = EVP_PKEY_CTX_new_from_name(testctx, "HKDF", testpropq)))
+        goto done;
+
+    outlen = sizeof(out);
+    memset(out, 0, outlen);
+
+    if (!TEST_int_gt(EVP_PKEY_derive_init(pctx), 0)
+            || !TEST_int_gt(EVP_PKEY_CTX_set_hkdf_md(pctx, EVP_sha256()), 0)
+            || !TEST_int_gt(EVP_PKEY_CTX_set1_hkdf_salt(pctx, salt,
+                                                        sizeof(salt) - 1), 0)
+            || !TEST_int_gt(EVP_PKEY_CTX_set1_hkdf_key(pctx, key,
+                                                       sizeof(key) - 1), 0)
+            || !TEST_int_gt(EVP_PKEY_CTX_add1_hkdf_info(pctx, info,
+                                                        sizeof(info) - 1), 0)
+            || !TEST_int_gt(EVP_PKEY_derive(pctx, out, &outlen), 0)
+            || !TEST_mem_eq(out, outlen, expected, expectedlen))
+        goto done;
+
+    ret = 1;
+
+ done:
+    EVP_PKEY_CTX_free(pctx);
+
+    return ret;
+}
+
 #ifndef OPENSSL_NO_EC
 static int test_X509_PUBKEY_inplace(void)
 {
@@ -5381,6 +5426,7 @@ int setup_tests(void)
 #endif
     ADD_TEST(test_HKDF);
     ADD_TEST(test_emptyikm_HKDF);
+    ADD_TEST(test_empty_salt_info_HKDF);
 #ifndef OPENSSL_NO_EC
     ADD_TEST(test_X509_PUBKEY_inplace);
     ADD_TEST(test_X509_PUBKEY_dup);
diff --git a/deps/openssl/openssl/test/evp_pkey_provided_test.c b/deps/openssl/openssl/test/evp_pkey_provided_test.c
index 27f90e42a7c1c3..688a8c1c5e558c 100644
--- a/deps/openssl/openssl/test/evp_pkey_provided_test.c
+++ b/deps/openssl/openssl/test/evp_pkey_provided_test.c
@@ -389,7 +389,7 @@ static int test_fromdata_rsa(void)
                                           fromdata_params), 1))
         goto err;
 
-    while (dup_pk == NULL) {
+    for (;;) {
         ret = 0;
         if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 32)
             || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 8)
@@ -417,7 +417,10 @@ static int test_fromdata_rsa(void)
         ret = test_print_key_using_pem("RSA", pk)
               && test_print_key_using_encoder("RSA", pk);
 
-        if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
+        if (!ret || dup_pk != NULL)
+            break;
+
+        if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
             goto err;
         ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1);
         EVP_PKEY_free(pk);
@@ -602,7 +605,7 @@ static int test_fromdata_dh_named_group(void)
                                                       &len)))
         goto err;
 
-    while (dup_pk == NULL) {
+    for (;;) {
         ret = 0;
         if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048)
             || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112)
@@ -682,7 +685,10 @@ static int test_fromdata_dh_named_group(void)
         ret = test_print_key_using_pem("DH", pk)
               && test_print_key_using_encoder("DH", pk);
 
-        if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
+        if (!ret || dup_pk != NULL)
+            break;
+
+        if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
             goto err;
         ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1);
         EVP_PKEY_free(pk);
@@ -783,7 +789,7 @@ static int test_fromdata_dh_fips186_4(void)
                                           fromdata_params), 1))
         goto err;
 
-    while (dup_pk == NULL) {
+    for (;;) {
         ret = 0;
         if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048)
             || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112)
@@ -857,7 +863,10 @@ static int test_fromdata_dh_fips186_4(void)
         ret = test_print_key_using_pem("DH", pk)
               && test_print_key_using_encoder("DH", pk);
 
-        if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
+        if (!ret || dup_pk != NULL)
+            break;
+
+        if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
             goto err;
         ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1);
         EVP_PKEY_free(pk);
@@ -1090,7 +1099,7 @@ static int test_fromdata_ecx(int tst)
                                           fromdata_params), 1))
         goto err;
 
-    while (dup_pk == NULL) {
+    for (;;) {
         ret = 0;
         if (!TEST_int_eq(EVP_PKEY_get_bits(pk), bits)
             || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), security_bits)
@@ -1145,7 +1154,10 @@ static int test_fromdata_ecx(int tst)
             ret = test_print_key_using_pem(alg, pk)
                   && test_print_key_using_encoder(alg, pk);
 
-        if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
+        if (!ret || dup_pk != NULL)
+            break;
+
+        if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
             goto err;
         ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1);
         EVP_PKEY_free(pk);
@@ -1262,7 +1274,7 @@ static int test_fromdata_ec(void)
                                           fromdata_params), 1))
         goto err;
 
-    while (dup_pk == NULL) {
+    for (;;) {
         ret = 0;
         if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 256)
             || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 128)
@@ -1301,6 +1313,15 @@ static int test_fromdata_ec(void)
             || !TEST_BN_eq(group_b, b))
             goto err;
 
+        EC_GROUP_free(group);
+        group = NULL;
+        BN_free(group_p);
+        group_p = NULL;
+        BN_free(group_a);
+        group_a = NULL;
+        BN_free(group_b);
+        group_b = NULL;
+
         if (!EVP_PKEY_get_utf8_string_param(pk, OSSL_PKEY_PARAM_GROUP_NAME,
                                             out_curve_name,
                                             sizeof(out_curve_name),
@@ -1329,7 +1350,10 @@ static int test_fromdata_ec(void)
         ret = test_print_key_using_pem(alg, pk)
               && test_print_key_using_encoder(alg, pk);
 
-        if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
+        if (!ret || dup_pk != NULL)
+            break;
+
+        if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
             goto err;
         ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1);
         EVP_PKEY_free(pk);
@@ -1575,7 +1599,7 @@ static int test_fromdata_dsa_fips186_4(void)
                                           fromdata_params), 1))
         goto err;
 
-    while (dup_pk == NULL) {
+    for (;;) {
         ret = 0;
         if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048)
             || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112)
@@ -1624,12 +1648,12 @@ static int test_fromdata_dsa_fips186_4(void)
                                                  &pcounter_out))
             || !TEST_int_eq(pcounter, pcounter_out))
             goto err;
-        BN_free(p);
-        p = NULL;
-        BN_free(q);
-        q = NULL;
-        BN_free(g);
-        g = NULL;
+        BN_free(p_out);
+        p_out = NULL;
+        BN_free(q_out);
+        q_out = NULL;
+        BN_free(g_out);
+        g_out = NULL;
         BN_free(j_out);
         j_out = NULL;
         BN_free(pub_out);
@@ -1657,7 +1681,10 @@ static int test_fromdata_dsa_fips186_4(void)
         ret = test_print_key_using_pem("DSA", pk)
               && test_print_key_using_encoder("DSA", pk);
 
-        if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
+        if (!ret || dup_pk != NULL)
+            break;
+
+        if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
             goto err;
         ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1);
         EVP_PKEY_free(pk);
diff --git a/deps/openssl/openssl/test/evp_test.c b/deps/openssl/openssl/test/evp_test.c
index 782841a69258b0..2701040dabe7fc 100644
--- a/deps/openssl/openssl/test/evp_test.c
+++ b/deps/openssl/openssl/test/evp_test.c
@@ -2773,30 +2773,33 @@ static int kdf_test_ctrl(EVP_TEST *t, EVP_KDF_CTX *kctx,
     if (!TEST_ptr(name = OPENSSL_strdup(value)))
         return 0;
     p = strchr(name, ':');
-    if (p != NULL)
+    if (p == NULL)
+        p = "";
+    else
         *p++ = '\0';
 
     rv = OSSL_PARAM_allocate_from_text(kdata->p, defs, name, p,
-                                       p != NULL ? strlen(p) : 0, NULL);
+                                       strlen(p), NULL);
     *++kdata->p = OSSL_PARAM_construct_end();
     if (!rv) {
         t->err = "KDF_PARAM_ERROR";
         OPENSSL_free(name);
         return 0;
     }
-    if (p != NULL && strcmp(name, "digest") == 0) {
+    if (strcmp(name, "digest") == 0) {
         if (is_digest_disabled(p)) {
             TEST_info("skipping, '%s' is disabled", p);
             t->skip = 1;
         }
     }
-    if (p != NULL
-        && (strcmp(name, "cipher") == 0
-            || strcmp(name, "cekalg") == 0)
+
+    if ((strcmp(name, "cipher") == 0
+        || strcmp(name, "cekalg") == 0)
         && is_cipher_disabled(p)) {
         TEST_info("skipping, '%s' is disabled", p);
         t->skip = 1;
     }
+
     OPENSSL_free(name);
     return 1;
 }
diff --git a/deps/openssl/openssl/test/helpers/ssltestlib.c b/deps/openssl/openssl/test/helpers/ssltestlib.c
index ef4a6177aa7ddc..b0ef7d719c5366 100644
--- a/deps/openssl/openssl/test/helpers/ssltestlib.c
+++ b/deps/openssl/openssl/test/helpers/ssltestlib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -7,8 +7,17 @@
  * https://www.openssl.org/source/license.html
  */
 
+/*
+ * We need access to the deprecated low level ENGINE APIs for legacy purposes
+ * when the deprecated calls are not hidden
+ */
+#ifndef OPENSSL_NO_DEPRECATED_3_0
+# define OPENSSL_SUPPRESS_DEPRECATED
+#endif
+
 #include 
 
+#include 
 #include "internal/nelem.h"
 #include "ssltestlib.h"
 #include "../testutil.h"
@@ -1182,3 +1191,27 @@ void shutdown_ssl_connection(SSL *serverssl, SSL *clientssl)
     SSL_free(serverssl);
     SSL_free(clientssl);
 }
+
+ENGINE *load_dasync(void)
+{
+#if !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_DYNAMIC_ENGINE)
+    ENGINE *e;
+
+    if (!TEST_ptr(e = ENGINE_by_id("dasync")))
+        return NULL;
+
+    if (!TEST_true(ENGINE_init(e))) {
+        ENGINE_free(e);
+        return NULL;
+    }
+
+    if (!TEST_true(ENGINE_register_ciphers(e))) {
+        ENGINE_free(e);
+        return NULL;
+    }
+
+    return e;
+#else
+    return NULL;
+#endif
+}
diff --git a/deps/openssl/openssl/test/helpers/ssltestlib.h b/deps/openssl/openssl/test/helpers/ssltestlib.h
index 8e9daa5601d3ea..0fbca34afa7504 100644
--- a/deps/openssl/openssl/test/helpers/ssltestlib.h
+++ b/deps/openssl/openssl/test/helpers/ssltestlib.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -59,4 +59,5 @@ typedef struct mempacket_st MEMPACKET;
 
 DEFINE_STACK_OF(MEMPACKET)
 
+ENGINE *load_dasync(void);
 #endif /* OSSL_TEST_SSLTESTLIB_H */
diff --git a/deps/openssl/openssl/test/keymgmt_internal_test.c b/deps/openssl/openssl/test/keymgmt_internal_test.c
index ce2e458f8c311d..8d5aa22dab3ec8 100644
--- a/deps/openssl/openssl/test/keymgmt_internal_test.c
+++ b/deps/openssl/openssl/test/keymgmt_internal_test.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -224,7 +224,7 @@ static int test_pass_rsa(FIXTURE *fixture)
         || !TEST_ptr_ne(km1, km2))
         goto err;
 
-    while (dup_pk == NULL) {
+    for (;;) {
         ret = 0;
         km = km3;
         /* Check that we can't export an RSA key into an RSA-PSS keymanager */
@@ -255,7 +255,11 @@ static int test_pass_rsa(FIXTURE *fixture)
         }
 
         ret = (ret == OSSL_NELEM(expected));
-        if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
+
+        if (!ret || dup_pk != NULL)
+            break;
+
+        if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk)))
             goto err;
 
         ret = TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1);
diff --git a/deps/openssl/openssl/test/pathed.cnf b/deps/openssl/openssl/test/pathed.cnf
new file mode 100644
index 00000000000000..07bdc1fdb209a5
--- /dev/null
+++ b/deps/openssl/openssl/test/pathed.cnf
@@ -0,0 +1,22 @@
+openssl_conf = openssl_init
+
+# Comment out the next line to ignore configuration errors
+config_diagnostics = 1
+
+[openssl_init]
+providers = provider_sect
+
+[provider_sect]
+default = default_sect
+legacy  = legacy_sect
+test    = test_sect
+
+[test_sect]
+module = ../test/p_test.so
+activate = false
+
+[default_sect]
+activate = true
+
+[legacy_sect]
+activate = false
diff --git a/deps/openssl/openssl/test/pkey_meth_kdf_test.c b/deps/openssl/openssl/test/pkey_meth_kdf_test.c
index f816d24fb56fa5..ad58adf4826143 100644
--- a/deps/openssl/openssl/test/pkey_meth_kdf_test.c
+++ b/deps/openssl/openssl/test/pkey_meth_kdf_test.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -16,7 +16,7 @@
 #include 
 #include "testutil.h"
 
-static int test_kdf_tls1_prf(void)
+static int test_kdf_tls1_prf(int index)
 {
     int ret = 0;
     EVP_PKEY_CTX *pctx;
@@ -40,10 +40,23 @@ static int test_kdf_tls1_prf(void)
         TEST_error("EVP_PKEY_CTX_set1_tls1_prf_secret");
         goto err;
     }
-    if (EVP_PKEY_CTX_add1_tls1_prf_seed(pctx,
-                                        (unsigned char *)"seed", 4) <= 0) {
-        TEST_error("EVP_PKEY_CTX_add1_tls1_prf_seed");
-        goto err;
+    if (index == 0) {
+        if (EVP_PKEY_CTX_add1_tls1_prf_seed(pctx,
+                                            (unsigned char *)"seed", 4) <= 0) {
+            TEST_error("EVP_PKEY_CTX_add1_tls1_prf_seed");
+            goto err;
+        }
+    } else {
+        if (EVP_PKEY_CTX_add1_tls1_prf_seed(pctx,
+                                            (unsigned char *)"se", 2) <= 0) {
+            TEST_error("EVP_PKEY_CTX_add1_tls1_prf_seed");
+            goto err;
+        }
+        if (EVP_PKEY_CTX_add1_tls1_prf_seed(pctx,
+                                            (unsigned char *)"ed", 2) <= 0) {
+            TEST_error("EVP_PKEY_CTX_add1_tls1_prf_seed");
+            goto err;
+        }
     }
     if (EVP_PKEY_derive(pctx, out, &outlen) <= 0) {
         TEST_error("EVP_PKEY_derive");
@@ -65,7 +78,7 @@ static int test_kdf_tls1_prf(void)
     return ret;
 }
 
-static int test_kdf_hkdf(void)
+static int test_kdf_hkdf(int index)
 {
     int ret = 0;
     EVP_PKEY_CTX *pctx;
@@ -94,10 +107,23 @@ static int test_kdf_hkdf(void)
         TEST_error("EVP_PKEY_CTX_set1_hkdf_key");
         goto err;
     }
-    if (EVP_PKEY_CTX_add1_hkdf_info(pctx, (const unsigned char *)"label", 5)
+    if (index == 0) {
+        if (EVP_PKEY_CTX_add1_hkdf_info(pctx, (const unsigned char *)"label", 5)
             <= 0) {
-        TEST_error("EVP_PKEY_CTX_set1_hkdf_info");
-        goto err;
+            TEST_error("EVP_PKEY_CTX_add1_hkdf_info");
+            goto err;
+        }
+    } else {
+        if (EVP_PKEY_CTX_add1_hkdf_info(pctx, (const unsigned char *)"lab", 3)
+            <= 0) {
+            TEST_error("EVP_PKEY_CTX_add1_hkdf_info");
+            goto err;
+        }
+        if (EVP_PKEY_CTX_add1_hkdf_info(pctx, (const unsigned char *)"el", 2)
+            <= 0) {
+            TEST_error("EVP_PKEY_CTX_add1_hkdf_info");
+            goto err;
+        }
     }
     if (EVP_PKEY_derive(pctx, out, &outlen) <= 0) {
         TEST_error("EVP_PKEY_derive");
@@ -195,8 +221,13 @@ static int test_kdf_scrypt(void)
 
 int setup_tests(void)
 {
-    ADD_TEST(test_kdf_tls1_prf);
-    ADD_TEST(test_kdf_hkdf);
+    int tests = 1;
+
+    if (fips_provider_version_ge(NULL, 3, 3, 1))
+        tests = 2;
+
+    ADD_ALL_TESTS(test_kdf_tls1_prf, tests);
+    ADD_ALL_TESTS(test_kdf_hkdf, tests);
 #ifndef OPENSSL_NO_SCRYPT
     ADD_TEST(test_kdf_scrypt);
 #endif
diff --git a/deps/openssl/openssl/test/prov_config_test.c b/deps/openssl/openssl/test/prov_config_test.c
index b44ec78d8d24b4..f93d8d62be6a14 100644
--- a/deps/openssl/openssl/test/prov_config_test.c
+++ b/deps/openssl/openssl/test/prov_config_test.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -7,12 +7,14 @@
  * https://www.openssl.org/source/license.html
  */
 
+#include 
 #include 
 #include 
 #include "testutil.h"
 
 static char *configfile = NULL;
 static char *recurseconfigfile = NULL;
+static char *pathedconfig = NULL;
 
 /*
  * Test to make sure there are no leaks or failures from loading the config
@@ -70,6 +72,54 @@ static int test_recursive_config(void)
     return testresult;
 }
 
+#define P_TEST_PATH "/../test/p_test.so"
+static int test_path_config(void)
+{
+    OSSL_LIB_CTX *ctx = NULL;
+    OSSL_PROVIDER *prov;
+    int testresult = 0;
+    struct stat sbuf;
+    char *module_path = getenv("OPENSSL_MODULES");
+    char *full_path = NULL;
+    int rc;
+
+    if (!TEST_ptr(module_path))
+        return 0;
+
+    full_path = OPENSSL_zalloc(strlen(module_path) + strlen(P_TEST_PATH) + 1);
+    if (!TEST_ptr(full_path))
+        return 0;
+
+    strcpy(full_path, module_path);
+    full_path = strcat(full_path, P_TEST_PATH);
+    TEST_info("full path is %s", full_path);
+    rc = stat(full_path, &sbuf);
+    OPENSSL_free(full_path);
+    if (rc == -1)
+        return TEST_skip("Skipping modulepath test as provider not present");
+
+    if (!TEST_ptr(pathedconfig))
+        return 0;
+
+    ctx = OSSL_LIB_CTX_new();
+    if (!TEST_ptr(ctx))
+        return 0;
+
+    if (!TEST_true(OSSL_LIB_CTX_load_config(ctx, pathedconfig)))
+        goto err;
+
+    /* attempt to manually load the test provider */
+    if (!TEST_ptr(prov = OSSL_PROVIDER_load(ctx, "test")))
+        goto err;
+
+    OSSL_PROVIDER_unload(prov);
+
+    testresult = 1;
+ err:
+    OSSL_LIB_CTX_free(ctx);
+    return testresult;
+}
+
 OPT_TEST_DECLARE_USAGE("configfile\n")
 
 int setup_tests(void)
@@ -85,7 +135,11 @@ int setup_tests(void)
     if (!TEST_ptr(recurseconfigfile = test_get_argument(1)))
         return 0;
 
+    if (!TEST_ptr(pathedconfig = test_get_argument(2)))
+        return 0;
+
     ADD_TEST(test_recursive_config);
     ADD_TEST(test_double_config);
+    ADD_TEST(test_path_config);
     return 1;
 }
diff --git a/deps/openssl/openssl/test/recipes/15-test_dsaparam_data/invalid/p10240_q256_too_big.pem b/deps/openssl/openssl/test/recipes/15-test_dsaparam_data/invalid/p10240_q256_too_big.pem
new file mode 100644
index 00000000000000..e85e2953b7a241
--- /dev/null
+++ b/deps/openssl/openssl/test/recipes/15-test_dsaparam_data/invalid/p10240_q256_too_big.pem
@@ -0,0 +1,57 @@
+-----BEGIN DSA PARAMETERS-----
+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
+vKuje86bePD6kD/LH3wmkA==
+-----END DSA PARAMETERS-----
diff --git a/deps/openssl/openssl/test/recipes/25-test_req.t b/deps/openssl/openssl/test/recipes/25-test_req.t
index fe02d29c634f2f..932635f4b2c182 100644
--- a/deps/openssl/openssl/test/recipes/25-test_req.t
+++ b/deps/openssl/openssl/test/recipes/25-test_req.t
@@ -15,7 +15,7 @@ use OpenSSL::Test qw/:DEFAULT srctop_file/;
 
 setup("test_req");
 
-plan tests => 49;
+plan tests => 50;
 
 require_ok(srctop_file('test', 'recipes', 'tconversion.pl'));
 
@@ -53,6 +53,7 @@ ok(!run(app([@addext_args, "-addext", $val, "-addext", $val2])));
 ok(!run(app([@addext_args, "-addext", $val, "-addext", $val3])));
 ok(!run(app([@addext_args, "-addext", $val2, "-addext", $val3])));
 ok(run(app([@addext_args, "-addext", "SXNetID=1:one, 2:two, 3:three"])));
+ok(run(app([@addext_args, "-addext", "subjectAltName=dirName:dirname_sec"])));
 
 # If a CSR is provided with neither of -key or -CA/-CAkey, this should fail.
 ok(!run(app(["openssl", "req", "-x509",
diff --git a/deps/openssl/openssl/test/recipes/30-test_prov_config.t b/deps/openssl/openssl/test/recipes/30-test_prov_config.t
index 7f6350fd84e116..1ef8736209c6f7 100644
--- a/deps/openssl/openssl/test/recipes/30-test_prov_config.t
+++ b/deps/openssl/openssl/test/recipes/30-test_prov_config.t
@@ -1,5 +1,5 @@
 #! /usr/bin/env perl
-# Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -23,13 +23,15 @@ my $no_fips = disabled('fips') || ($ENV{NO_FIPS} // 0);
 plan tests => 2;
 
 ok(run(test(["prov_config_test", srctop_file("test", "default.cnf"),
-                                 srctop_file("test", "recursive.cnf")])),
+                                 srctop_file("test", "recursive.cnf"),
+                                 srctop_file("test", "pathed.cnf")])),
     "running prov_config_test default.cnf");
 
 SKIP: {
     skip "Skipping FIPS test in this build", 1 if $no_fips;
 
     ok(run(test(["prov_config_test", srctop_file("test", "fips.cnf"),
-                                     srctop_file("test", "recursive.cnf")])),
+                                     srctop_file("test", "recursive.cnf"),
+                                     srctop_file("test", "pathed.cnf")])),
        "running prov_config_test fips.cnf");
 }
diff --git a/deps/openssl/openssl/test/recipes/80-test_pkcs12.t b/deps/openssl/openssl/test/recipes/80-test_pkcs12.t
index 4c5bb5744b8c59..de26cbdca4dc71 100644
--- a/deps/openssl/openssl/test/recipes/80-test_pkcs12.t
+++ b/deps/openssl/openssl/test/recipes/80-test_pkcs12.t
@@ -54,7 +54,7 @@ if (eval { require Win32::API; 1; }) {
 }
 $ENV{OPENSSL_WIN32_UTF8}=1;
 
-plan tests => 17;
+plan tests => 20;
 
 # Test different PKCS#12 formats
 ok(run(test(["pkcs12_format_test"])), "test pkcs12 formats");
@@ -162,11 +162,23 @@ with({ exit_checker => sub { return shift == 1; } },
                     "-nomacver"])),
            "test bad pkcs12 file 1 (nomacver)");
 
+        ok(run(app(["openssl", "pkcs12", "-in", $bad1, "-password", "pass:",
+                    "-info"])),
+           "test bad pkcs12 file 1 (info)");
+
         ok(run(app(["openssl", "pkcs12", "-in", $bad2, "-password", "pass:"])),
            "test bad pkcs12 file 2");
 
+        ok(run(app(["openssl", "pkcs12", "-in", $bad2, "-password", "pass:",
+                    "-info"])),
+           "test bad pkcs12 file 2 (info)");
+
         ok(run(app(["openssl", "pkcs12", "-in", $bad3, "-password", "pass:"])),
            "test bad pkcs12 file 3");
+
+        ok(run(app(["openssl", "pkcs12", "-in", $bad3, "-password", "pass:",
+                    "-info"])),
+           "test bad pkcs12 file 3 (info)");
      });
 
 SetConsoleOutputCP($savedcp) if (defined($savedcp));
diff --git a/deps/openssl/openssl/test/recipes/90-test_shlibload.t b/deps/openssl/openssl/test/recipes/90-test_shlibload.t
index 8f691dee38e823..67afff607e0456 100644
--- a/deps/openssl/openssl/test/recipes/90-test_shlibload.t
+++ b/deps/openssl/openssl/test/recipes/90-test_shlibload.t
@@ -1,5 +1,5 @@
 #! /usr/bin/env perl
-# Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -23,6 +23,7 @@ plan skip_all => "Test is disabled on AIX" if config('target') =~ m|^aix|;
 plan skip_all => "Test is disabled on NonStop" if config('target') =~ m|^nonstop|;
 plan skip_all => "Test only supported in a dso build" if disabled("dso");
 plan skip_all => "Test is disabled in an address sanitizer build" unless disabled("asan");
+plan skip_all => "Test is disabled in no-atexit build" if disabled("atexit");
 
 plan tests => 10;
 
diff --git a/deps/openssl/openssl/test/sm2_internal_test.c b/deps/openssl/openssl/test/sm2_internal_test.c
index 4899d5e21313c1..bd0bf0efa74d5b 100644
--- a/deps/openssl/openssl/test/sm2_internal_test.c
+++ b/deps/openssl/openssl/test/sm2_internal_test.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -305,7 +305,8 @@ static int test_sm2_sign(const EC_GROUP *group,
                          const char *message,
                          const char *k_hex,
                          const char *r_hex,
-                         const char *s_hex)
+                         const char *s_hex,
+                         int omit_pubkey)
 {
     const size_t msg_len = strlen(message);
     int ok = 0;
@@ -327,11 +328,13 @@ static int test_sm2_sign(const EC_GROUP *group,
             || !TEST_true(EC_KEY_set_private_key(key, priv)))
         goto done;
 
-    pt = EC_POINT_new(group);
-    if (!TEST_ptr(pt)
-            || !TEST_true(EC_POINT_mul(group, pt, priv, NULL, NULL, NULL))
-            || !TEST_true(EC_KEY_set_public_key(key, pt)))
-        goto done;
+    if (omit_pubkey == 0) {
+        pt = EC_POINT_new(group);
+        if (!TEST_ptr(pt)
+                || !TEST_true(EC_POINT_mul(group, pt, priv, NULL, NULL, NULL))
+                || !TEST_true(EC_KEY_set_public_key(key, pt)))
+            goto done;
+    }
 
     start_fake_rand(k_hex);
     sig = ossl_sm2_do_sign(key, EVP_sm3(), (const uint8_t *)userid,
@@ -392,7 +395,25 @@ static int sm2_sig_test(void)
                         "006CB28D99385C175C94F94E934817663FC176D925DD72B727260DBAAE1FB2F96F"
                         "007c47811054c6f99613a578eb8453706ccb96384fe7df5c171671e760bfa8be3a",
                         "40F1EC59F793D9F49E09DCEF49130D4194F79FB1EED2CAA55BACDB49C4E755D1",
-                        "6FC6DAC32C5D5CF10C77DFB20F7C2EB667A457872FB09EC56327A67EC7DEEBE7")))
+                        "6FC6DAC32C5D5CF10C77DFB20F7C2EB667A457872FB09EC56327A67EC7DEEBE7", 0)))
+        goto done;
+
+    /* Make sure we fail if we omit the public portion of the key */
+    if (!TEST_false(test_sm2_sign(
+                     test_group,
+                     /* the default ID specified in GM/T 0009-2012 (Sec. 10).*/
+                     SM2_DEFAULT_USERID,
+                     /* privkey */
+                     "3945208F7B2144B13F36E38AC6D39F95889393692860B51A42FB81EF4DF7C5B8",
+                     /* plaintext message */
+                     "message digest",
+                     /* ephemeral nonce k */
+                     "59276E27D506861A16680F3AD9C02DCCEF3CC1FA3CDBE4CE6D54B80DEAC1BC21",
+                     /* expected signature, */
+                     /* signature R, 0x20 bytes */
+                     "F5A03B0648D2C4630EEAC513E1BB81A15944DA3827D5B74143AC7EACEEE720B3",
+                     /* signature S, 0x20 bytes */
+                     "B1B6AA29DF212FD8763182BC0D421CA1BB9038FD1F7F42D4840B69C485BBC1AA", 1)))
         goto done;
 
     testresult = 1;
diff --git a/deps/openssl/openssl/test/ssl-tests/14-curves.cnf.in b/deps/openssl/openssl/test/ssl-tests/14-curves.cnf.in
index 1e003bace0b7a4..33201df281f70f 100644
--- a/deps/openssl/openssl/test/ssl-tests/14-curves.cnf.in
+++ b/deps/openssl/openssl/test/ssl-tests/14-curves.cnf.in
@@ -12,8 +12,11 @@ use OpenSSL::Test::Utils qw(anydisabled);
 
 our $fips_mode;
 
-my @curves = ("prime256v1", "secp384r1", "secp521r1", "X25519",
-              "X448");
+my @curves = ("prime256v1", "secp384r1", "secp521r1");
+
+my @curves_no_fips = ("X25519", "X448");
+
+push @curves, @curves_no_fips if !$fips_mode;
 
 #Curves *only* suitable for use in TLSv1.3
 my @curves_tls_1_3 = ("ffdhe2048", "ffdhe3072", "ffdhe4096", "ffdhe6144",
diff --git a/deps/openssl/openssl/test/ssl-tests/20-cert-select.cnf b/deps/openssl/openssl/test/ssl-tests/20-cert-select.cnf
index 79dcd4c8f4e2ed..6888d538ba354d 100644
--- a/deps/openssl/openssl/test/ssl-tests/20-cert-select.cnf
+++ b/deps/openssl/openssl/test/ssl-tests/20-cert-select.cnf
@@ -19,12 +19,12 @@ test-13 = 13-Suite B P-256 Hash Algorithm Selection
 test-14 = 14-Suite B P-384 Hash Algorithm Selection
 test-15 = 15-Ed25519 CipherString and Signature Algorithm Selection
 test-16 = 16-Ed448 CipherString and Signature Algorithm Selection
-test-17 = 17-Ed25519 CipherString and Curves Selection
-test-18 = 18-Ed448 CipherString and Curves Selection
-test-19 = 19-TLS 1.2 Ed25519 Client Auth
-test-20 = 20-TLS 1.2 Ed448 Client Auth
-test-21 = 21-ECDSA Signature Algorithm Selection SHA1
-test-22 = 22-ECDSA with brainpool
+test-17 = 17-TLS 1.2 Ed25519 Client Auth
+test-18 = 18-TLS 1.2 Ed448 Client Auth
+test-19 = 19-ECDSA Signature Algorithm Selection SHA1
+test-20 = 20-ECDSA with brainpool
+test-21 = 21-Ed25519 CipherString and Curves Selection
+test-22 = 22-Ed448 CipherString and Curves Selection
 test-23 = 23-RSA-PSS Certificate CipherString Selection
 test-24 = 24-RSA-PSS Certificate Legacy Signature Algorithm Selection
 test-25 = 25-RSA-PSS Certificate Unified Signature Algorithm Selection
@@ -602,91 +602,21 @@ ExpectedServerSignType = Ed448
 
 # ===========================================================
 
-[17-Ed25519 CipherString and Curves Selection]
-ssl_conf = 17-Ed25519 CipherString and Curves Selection-ssl
+[17-TLS 1.2 Ed25519 Client Auth]
+ssl_conf = 17-TLS 1.2 Ed25519 Client Auth-ssl
 
-[17-Ed25519 CipherString and Curves Selection-ssl]
-server = 17-Ed25519 CipherString and Curves Selection-server
-client = 17-Ed25519 CipherString and Curves Selection-client
+[17-TLS 1.2 Ed25519 Client Auth-ssl]
+server = 17-TLS 1.2 Ed25519 Client Auth-server
+client = 17-TLS 1.2 Ed25519 Client Auth-client
 
-[17-Ed25519 CipherString and Curves Selection-server]
-Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-CipherString = DEFAULT
-ECDSA.Certificate = ${ENV::TEST_CERTS_DIR}/server-ecdsa-cert.pem
-ECDSA.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ecdsa-key.pem
-Ed25519.Certificate = ${ENV::TEST_CERTS_DIR}/server-ed25519-cert.pem
-Ed25519.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed25519-key.pem
-Ed448.Certificate = ${ENV::TEST_CERTS_DIR}/server-ed448-cert.pem
-Ed448.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem
-MaxProtocol = TLSv1.2
-PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-
-[17-Ed25519 CipherString and Curves Selection-client]
-CipherString = aECDSA
-Curves = X25519
-MaxProtocol = TLSv1.2
-SignatureAlgorithms = ECDSA+SHA256:ed25519
-VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
-VerifyMode = Peer
-
-[test-17]
-ExpectedResult = Success
-ExpectedServerCertType = Ed25519
-ExpectedServerSignType = Ed25519
-
-
-# ===========================================================
-
-[18-Ed448 CipherString and Curves Selection]
-ssl_conf = 18-Ed448 CipherString and Curves Selection-ssl
-
-[18-Ed448 CipherString and Curves Selection-ssl]
-server = 18-Ed448 CipherString and Curves Selection-server
-client = 18-Ed448 CipherString and Curves Selection-client
-
-[18-Ed448 CipherString and Curves Selection-server]
-Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
-CipherString = DEFAULT
-ECDSA.Certificate = ${ENV::TEST_CERTS_DIR}/server-ecdsa-cert.pem
-ECDSA.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ecdsa-key.pem
-Ed25519.Certificate = ${ENV::TEST_CERTS_DIR}/server-ed25519-cert.pem
-Ed25519.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed25519-key.pem
-Ed448.Certificate = ${ENV::TEST_CERTS_DIR}/server-ed448-cert.pem
-Ed448.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem
-MaxProtocol = TLSv1.2
-PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
-
-[18-Ed448 CipherString and Curves Selection-client]
-CipherString = aECDSA
-Curves = X448
-MaxProtocol = TLSv1.2
-SignatureAlgorithms = ECDSA+SHA256:ed448
-VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem
-VerifyMode = Peer
-
-[test-18]
-ExpectedResult = Success
-ExpectedServerCertType = Ed448
-ExpectedServerSignType = Ed448
-
-
-# ===========================================================
-
-[19-TLS 1.2 Ed25519 Client Auth]
-ssl_conf = 19-TLS 1.2 Ed25519 Client Auth-ssl
-
-[19-TLS 1.2 Ed25519 Client Auth-ssl]
-server = 19-TLS 1.2 Ed25519 Client Auth-server
-client = 19-TLS 1.2 Ed25519 Client Auth-client
-
-[19-TLS 1.2 Ed25519 Client Auth-server]
+[17-TLS 1.2 Ed25519 Client Auth-server]
 Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 CipherString = DEFAULT
 PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 VerifyMode = Require
 
-[19-TLS 1.2 Ed25519 Client Auth-client]
+[17-TLS 1.2 Ed25519 Client Auth-client]
 CipherString = DEFAULT
 Ed25519.Certificate = ${ENV::TEST_CERTS_DIR}/client-ed25519-cert.pem
 Ed25519.PrivateKey = ${ENV::TEST_CERTS_DIR}/client-ed25519-key.pem
@@ -695,7 +625,7 @@ MinProtocol = TLSv1.2
 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 VerifyMode = Peer
 
-[test-19]
+[test-17]
 ExpectedClientCertType = Ed25519
 ExpectedClientSignType = Ed25519
 ExpectedResult = Success
@@ -703,21 +633,21 @@ ExpectedResult = Success
 
 # ===========================================================
 
-[20-TLS 1.2 Ed448 Client Auth]
-ssl_conf = 20-TLS 1.2 Ed448 Client Auth-ssl
+[18-TLS 1.2 Ed448 Client Auth]
+ssl_conf = 18-TLS 1.2 Ed448 Client Auth-ssl
 
-[20-TLS 1.2 Ed448 Client Auth-ssl]
-server = 20-TLS 1.2 Ed448 Client Auth-server
-client = 20-TLS 1.2 Ed448 Client Auth-client
+[18-TLS 1.2 Ed448 Client Auth-ssl]
+server = 18-TLS 1.2 Ed448 Client Auth-server
+client = 18-TLS 1.2 Ed448 Client Auth-client
 
-[20-TLS 1.2 Ed448 Client Auth-server]
+[18-TLS 1.2 Ed448 Client Auth-server]
 Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 CipherString = DEFAULT
 PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 VerifyMode = Require
 
-[20-TLS 1.2 Ed448 Client Auth-client]
+[18-TLS 1.2 Ed448 Client Auth-client]
 CipherString = DEFAULT
 Ed448.Certificate = ${ENV::TEST_CERTS_DIR}/client-ed448-cert.pem
 Ed448.PrivateKey = ${ENV::TEST_CERTS_DIR}/client-ed448-key.pem
@@ -726,7 +656,7 @@ MinProtocol = TLSv1.2
 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 VerifyMode = Peer
 
-[test-20]
+[test-18]
 ExpectedClientCertType = Ed448
 ExpectedClientSignType = Ed448
 ExpectedResult = Success
@@ -734,14 +664,14 @@ ExpectedResult = Success
 
 # ===========================================================
 
-[21-ECDSA Signature Algorithm Selection SHA1]
-ssl_conf = 21-ECDSA Signature Algorithm Selection SHA1-ssl
+[19-ECDSA Signature Algorithm Selection SHA1]
+ssl_conf = 19-ECDSA Signature Algorithm Selection SHA1-ssl
 
-[21-ECDSA Signature Algorithm Selection SHA1-ssl]
-server = 21-ECDSA Signature Algorithm Selection SHA1-server
-client = 21-ECDSA Signature Algorithm Selection SHA1-client
+[19-ECDSA Signature Algorithm Selection SHA1-ssl]
+server = 19-ECDSA Signature Algorithm Selection SHA1-server
+client = 19-ECDSA Signature Algorithm Selection SHA1-client
 
-[21-ECDSA Signature Algorithm Selection SHA1-server]
+[19-ECDSA Signature Algorithm Selection SHA1-server]
 Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
 CipherString = DEFAULT:@SECLEVEL=0
 ECDSA.Certificate = ${ENV::TEST_CERTS_DIR}/server-ecdsa-cert.pem
@@ -753,13 +683,13 @@ Ed448.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem
 MaxProtocol = TLSv1.2
 PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
 
-[21-ECDSA Signature Algorithm Selection SHA1-client]
+[19-ECDSA Signature Algorithm Selection SHA1-client]
 CipherString = DEFAULT:@SECLEVEL=0
 SignatureAlgorithms = ECDSA+SHA1
 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 VerifyMode = Peer
 
-[test-21]
+[test-19]
 ExpectedResult = Success
 ExpectedServerCertType = P-256
 ExpectedServerSignHash = SHA1
@@ -768,20 +698,20 @@ ExpectedServerSignType = EC
 
 # ===========================================================
 
-[22-ECDSA with brainpool]
-ssl_conf = 22-ECDSA with brainpool-ssl
+[20-ECDSA with brainpool]
+ssl_conf = 20-ECDSA with brainpool-ssl
 
-[22-ECDSA with brainpool-ssl]
-server = 22-ECDSA with brainpool-server
-client = 22-ECDSA with brainpool-client
+[20-ECDSA with brainpool-ssl]
+server = 20-ECDSA with brainpool-server
+client = 20-ECDSA with brainpool-client
 
-[22-ECDSA with brainpool-server]
+[20-ECDSA with brainpool-server]
 Certificate = ${ENV::TEST_CERTS_DIR}/server-ecdsa-brainpoolP256r1-cert.pem
 CipherString = DEFAULT
 Groups = brainpoolP256r1
 PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ecdsa-brainpoolP256r1-key.pem
 
-[22-ECDSA with brainpool-client]
+[20-ECDSA with brainpool-client]
 CipherString = aECDSA
 Groups = brainpoolP256r1
 MaxProtocol = TLSv1.2
@@ -789,13 +719,83 @@ RequestCAFile = ${ENV::TEST_CERTS_DIR}/root-cert.pem
 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
 VerifyMode = Peer
 
-[test-22]
+[test-20]
 ExpectedResult = Success
 ExpectedServerCANames = empty
 ExpectedServerCertType = brainpoolP256r1
 ExpectedServerSignType = EC
 
 
+# ===========================================================
+
+[21-Ed25519 CipherString and Curves Selection]
+ssl_conf = 21-Ed25519 CipherString and Curves Selection-ssl
+
+[21-Ed25519 CipherString and Curves Selection-ssl]
+server = 21-Ed25519 CipherString and Curves Selection-server
+client = 21-Ed25519 CipherString and Curves Selection-client
+
+[21-Ed25519 CipherString and Curves Selection-server]
+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+CipherString = DEFAULT
+ECDSA.Certificate = ${ENV::TEST_CERTS_DIR}/server-ecdsa-cert.pem
+ECDSA.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ecdsa-key.pem
+Ed25519.Certificate = ${ENV::TEST_CERTS_DIR}/server-ed25519-cert.pem
+Ed25519.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed25519-key.pem
+Ed448.Certificate = ${ENV::TEST_CERTS_DIR}/server-ed448-cert.pem
+Ed448.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem
+MaxProtocol = TLSv1.2
+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
+
+[21-Ed25519 CipherString and Curves Selection-client]
+CipherString = aECDSA
+Curves = X25519
+MaxProtocol = TLSv1.2
+SignatureAlgorithms = ECDSA+SHA256:ed25519
+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem
+VerifyMode = Peer
+
+[test-21]
+ExpectedResult = Success
+ExpectedServerCertType = Ed25519
+ExpectedServerSignType = Ed25519
+
+
+# ===========================================================
+
+[22-Ed448 CipherString and Curves Selection]
+ssl_conf = 22-Ed448 CipherString and Curves Selection-ssl
+
+[22-Ed448 CipherString and Curves Selection-ssl]
+server = 22-Ed448 CipherString and Curves Selection-server
+client = 22-Ed448 CipherString and Curves Selection-client
+
+[22-Ed448 CipherString and Curves Selection-server]
+Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem
+CipherString = DEFAULT
+ECDSA.Certificate = ${ENV::TEST_CERTS_DIR}/server-ecdsa-cert.pem
+ECDSA.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ecdsa-key.pem
+Ed25519.Certificate = ${ENV::TEST_CERTS_DIR}/server-ed25519-cert.pem
+Ed25519.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed25519-key.pem
+Ed448.Certificate = ${ENV::TEST_CERTS_DIR}/server-ed448-cert.pem
+Ed448.PrivateKey = ${ENV::TEST_CERTS_DIR}/server-ed448-key.pem
+MaxProtocol = TLSv1.2
+PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem
+
+[22-Ed448 CipherString and Curves Selection-client]
+CipherString = aECDSA
+Curves = X448
+MaxProtocol = TLSv1.2
+SignatureAlgorithms = ECDSA+SHA256:ed448
+VerifyCAFile = ${ENV::TEST_CERTS_DIR}/root-ed448-cert.pem
+VerifyMode = Peer
+
+[test-22]
+ExpectedResult = Success
+ExpectedServerCertType = Ed448
+ExpectedServerSignType = Ed448
+
+
 # ===========================================================
 
 [23-RSA-PSS Certificate CipherString Selection]
diff --git a/deps/openssl/openssl/test/ssl-tests/20-cert-select.cnf.in b/deps/openssl/openssl/test/ssl-tests/20-cert-select.cnf.in
index 30cde592c6d0e9..435932c4c1810c 100644
--- a/deps/openssl/openssl/test/ssl-tests/20-cert-select.cnf.in
+++ b/deps/openssl/openssl/test/ssl-tests/20-cert-select.cnf.in
@@ -328,41 +328,6 @@ our @tests = (
             "ExpectedResult" => "Success"
         },
     },
-    {
-        name => "Ed25519 CipherString and Curves Selection",
-        server => $server,
-        client => {
-            "CipherString" => "aECDSA",
-            "MaxProtocol" => "TLSv1.2",
-            "SignatureAlgorithms" => "ECDSA+SHA256:ed25519",
-            # Excluding P-256 from the supported curves list means server
-            # certificate should be Ed25519 and not P-256
-            "Curves" => "X25519"
-        },
-        test   => {
-            "ExpectedServerCertType" =>, "Ed25519",
-            "ExpectedServerSignType" =>, "Ed25519",
-            "ExpectedResult" => "Success"
-        },
-    },
-    {
-        name => "Ed448 CipherString and Curves Selection",
-        server => $server,
-        client => {
-            "CipherString" => "aECDSA",
-            "MaxProtocol" => "TLSv1.2",
-            "SignatureAlgorithms" => "ECDSA+SHA256:ed448",
-            "VerifyCAFile" => test_pem("root-ed448-cert.pem"),
-            # Excluding P-256 from the supported curves list means server
-            # certificate should be Ed25519 and not P-256
-            "Curves" => "X448"
-        },
-        test   => {
-            "ExpectedServerCertType" =>, "Ed448",
-            "ExpectedServerSignType" =>, "Ed448",
-            "ExpectedResult" => "Success"
-        },
-    },
     {
         name => "TLS 1.2 Ed25519 Client Auth",
         server => {
@@ -446,6 +411,41 @@ my @tests_non_fips = (
             "ExpectedResult" => "Success"
         },
     },
+    {
+        name => "Ed25519 CipherString and Curves Selection",
+        server => $server,
+        client => {
+            "CipherString" => "aECDSA",
+            "MaxProtocol" => "TLSv1.2",
+            "SignatureAlgorithms" => "ECDSA+SHA256:ed25519",
+            # Excluding P-256 from the supported curves list means server
+            # certificate should be Ed25519 and not P-256
+            "Curves" => "X25519"
+        },
+        test   => {
+            "ExpectedServerCertType" =>, "Ed25519",
+            "ExpectedServerSignType" =>, "Ed25519",
+            "ExpectedResult" => "Success"
+        },
+    },
+    {
+        name => "Ed448 CipherString and Curves Selection",
+        server => $server,
+        client => {
+            "CipherString" => "aECDSA",
+            "MaxProtocol" => "TLSv1.2",
+            "SignatureAlgorithms" => "ECDSA+SHA256:ed448",
+            "VerifyCAFile" => test_pem("root-ed448-cert.pem"),
+            # Excluding P-256 from the supported curves list means server
+            # certificate should be Ed25519 and not P-256
+            "Curves" => "X448"
+        },
+        test   => {
+            "ExpectedServerCertType" =>, "Ed448",
+            "ExpectedServerSignType" =>, "Ed448",
+            "ExpectedResult" => "Success"
+        },
+    },
 );
 
 my @tests_pss = (
diff --git a/deps/openssl/openssl/test/ssl-tests/28-seclevel.cnf.in b/deps/openssl/openssl/test/ssl-tests/28-seclevel.cnf.in
index 945f4599d10ef8..3b97ac68eb3a71 100644
--- a/deps/openssl/openssl/test/ssl-tests/28-seclevel.cnf.in
+++ b/deps/openssl/openssl/test/ssl-tests/28-seclevel.cnf.in
@@ -1,5 +1,5 @@
 # -*- mode: perl; -*-
-# Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -56,7 +56,10 @@ our @tests_ec = (
         client => { "CipherString" => "DEFAULT:\@SECLEVEL=5",
                     "VerifyCAFile" => test_pem("root-ed448-cert.pem") },
         test   => { "ExpectedResult" => "ServerFail" },
-    },
+    }
+);
+
+our @tests_ec_non_fips = (
     {
         name => "SECLEVEL 3 with P-384 key, X25519 ECDHE",
         server => { "CipherString" => "DEFAULT:\@SECLEVEL=3",
@@ -81,5 +84,6 @@ our @tests_tls1_2 = (
     },
 );
 
+push @tests_ec, @tests_ec_non_fips unless $fips_mode;
 push @tests, @tests_ec unless disabled("ec");
 push @tests, @tests_tls1_2 unless disabled("tls1_2") || disabled("ec");
diff --git a/deps/openssl/openssl/test/sslapitest.c b/deps/openssl/openssl/test/sslapitest.c
index 20b5ac194663b3..057c0dddaccc0a 100644
--- a/deps/openssl/openssl/test/sslapitest.c
+++ b/deps/openssl/openssl/test/sslapitest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -2402,7 +2402,6 @@ static int test_session_wo_ca_names(void)
 #endif
 }
 
-
 #ifndef OSSL_NO_USABLE_TLS1_3
 static SSL_SESSION *sesscache[6];
 static int do_cache;
@@ -3490,6 +3489,25 @@ static int setupearly_data_test(SSL_CTX **cctx, SSL_CTX **sctx, SSL **clientssl,
     return 1;
 }
 
+static int check_early_data_timeout(time_t timer)
+{
+    int res = 0;
+
+    /*
+     * Early data is time sensitive. We have an approx 8 second allowance
+     * between writing the early data and reading it. If we exceed that time
+     * then this test will fail. This can sometimes (rarely) occur in normal CI
+     * operation. We can try and detect this and just ignore the result of this
+     * test if it has taken too long. We assume anything over 7 seconds is too
+     * long
+     */
+    timer = time(NULL) - timer;
+    if (timer >= 7)
+        res = TEST_skip("Test took too long, ignoring result");
+
+    return res;
+}
+
 static int test_early_data_read_write(int idx)
 {
     SSL_CTX *cctx = NULL, *sctx = NULL;
@@ -3499,6 +3517,7 @@ static int test_early_data_read_write(int idx)
     unsigned char buf[20], data[1024];
     size_t readbytes, written, eoedlen, rawread, rawwritten;
     BIO *rbio;
+    time_t timer;
 
     if (!TEST_true(setupearly_data_test(&cctx, &sctx, &clientssl,
                                         &serverssl, &sess, idx,
@@ -3506,13 +3525,20 @@ static int test_early_data_read_write(int idx)
         goto end;
 
     /* Write and read some early data */
+    timer = time(NULL);
     if (!TEST_true(SSL_write_early_data(clientssl, MSG1, strlen(MSG1),
                                         &written))
-            || !TEST_size_t_eq(written, strlen(MSG1))
-            || !TEST_int_eq(SSL_read_early_data(serverssl, buf,
-                                                sizeof(buf), &readbytes),
-                            SSL_READ_EARLY_DATA_SUCCESS)
-            || !TEST_mem_eq(MSG1, readbytes, buf, strlen(MSG1))
+            || !TEST_size_t_eq(written, strlen(MSG1)))
+        goto end;
+
+    if (!TEST_int_eq(SSL_read_early_data(serverssl, buf, sizeof(buf),
+                                         &readbytes),
+                     SSL_READ_EARLY_DATA_SUCCESS)) {
+        testresult = check_early_data_timeout(timer);
+        goto end;
+    }
+
+    if (!TEST_mem_eq(MSG1, readbytes, buf, strlen(MSG1))
             || !TEST_int_eq(SSL_get_early_data_status(serverssl),
                             SSL_EARLY_DATA_ACCEPTED))
         goto end;
@@ -3729,6 +3755,7 @@ static int test_early_data_replay_int(int idx, int usecb, int confopt)
     SSL_SESSION *sess = NULL;
     size_t readbytes, written;
     unsigned char buf[20];
+    time_t timer;
 
     allow_ed_cb_called = 0;
 
@@ -3783,6 +3810,7 @@ static int test_early_data_replay_int(int idx, int usecb, int confopt)
         goto end;
 
     /* Write and read some early data */
+    timer = time(NULL);
     if (!TEST_true(SSL_write_early_data(clientssl, MSG1, strlen(MSG1),
                                         &written))
             || !TEST_size_t_eq(written, strlen(MSG1)))
@@ -3803,8 +3831,11 @@ static int test_early_data_replay_int(int idx, int usecb, int confopt)
         /* In this case the callback decides to accept the early data */
         if (!TEST_int_eq(SSL_read_early_data(serverssl, buf, sizeof(buf),
                                              &readbytes),
-                         SSL_READ_EARLY_DATA_SUCCESS)
-                || !TEST_mem_eq(MSG1, strlen(MSG1), buf, readbytes)
+                         SSL_READ_EARLY_DATA_SUCCESS)) {
+            testresult = check_early_data_timeout(timer);
+            goto end;
+        }
+        if (!TEST_mem_eq(MSG1, strlen(MSG1), buf, readbytes)
                    /*
                     * Server will have sent its flight so client can now send
                     * end of early data and complete its half of the handshake
@@ -4321,13 +4352,19 @@ static int test_early_data_psk(int idx)
                 || !TEST_int_eq(ERR_GET_REASON(ERR_get_error()), err))
             goto end;
     } else {
+        time_t timer = time(NULL);
+
         if (!TEST_true(SSL_write_early_data(clientssl, MSG1, strlen(MSG1),
                                             &written)))
             goto end;
 
         if (!TEST_int_eq(SSL_read_early_data(serverssl, buf, sizeof(buf),
-                                             &readbytes), readearlyres)
-                || (readearlyres == SSL_READ_EARLY_DATA_SUCCESS
+                                             &readbytes), readearlyres)) {
+            testresult = check_early_data_timeout(timer);
+            goto end;
+        }
+
+        if ((readearlyres == SSL_READ_EARLY_DATA_SUCCESS
                     && !TEST_mem_eq(buf, readbytes, MSG1, strlen(MSG1)))
                 || !TEST_int_eq(SSL_get_early_data_status(serverssl), edstatus)
                 || !TEST_int_eq(SSL_connect(clientssl), connectres))
@@ -4365,6 +4402,7 @@ static int test_early_data_psk_with_all_ciphers(int idx)
     unsigned char buf[20];
     size_t readbytes, written;
     const SSL_CIPHER *cipher;
+    time_t timer;
     const char *cipher_str[] = {
         TLS1_3_RFC_AES_128_GCM_SHA256,
         TLS1_3_RFC_AES_256_GCM_SHA384,
@@ -4416,14 +4454,19 @@ static int test_early_data_psk_with_all_ciphers(int idx)
         goto end;
 
     SSL_set_connect_state(clientssl);
+    timer = time(NULL);
     if (!TEST_true(SSL_write_early_data(clientssl, MSG1, strlen(MSG1),
                                         &written)))
         goto end;
 
     if (!TEST_int_eq(SSL_read_early_data(serverssl, buf, sizeof(buf),
                                          &readbytes),
-                                         SSL_READ_EARLY_DATA_SUCCESS)
-            || !TEST_mem_eq(buf, readbytes, MSG1, strlen(MSG1))
+                                         SSL_READ_EARLY_DATA_SUCCESS)) {
+        testresult = check_early_data_timeout(timer);
+        goto end;
+    }
+
+    if (!TEST_mem_eq(buf, readbytes, MSG1, strlen(MSG1))
             || !TEST_int_eq(SSL_get_early_data_status(serverssl),
                                                       SSL_EARLY_DATA_ACCEPTED)
             || !TEST_int_eq(SSL_connect(clientssl), 1)
@@ -4864,10 +4907,14 @@ static int test_key_exchange(int idx)
             kexch_name0 = "secp521r1";
             break;
         case 4:
+            if (is_fips)
+                return TEST_skip("X25519 might not be supported by fips provider.");
             kexch_alg = NID_X25519;
             kexch_name0 = "x25519";
             break;
         case 5:
+            if (is_fips)
+                return TEST_skip("X448 might not be supported by fips provider.");
             kexch_alg = NID_X448;
             kexch_name0 = "x448";
             break;
@@ -5082,6 +5129,9 @@ static int test_negotiated_group(int idx)
     else
         expectednid = kexch_alg;
 
+    if (is_fips && (kexch_alg == NID_X25519 || kexch_alg == NID_X448))
+        return TEST_skip("X25519 and X448 might not be available in fips provider.");
+
     if (!istls13)
         max_version = TLS1_2_VERSION;
 
@@ -7467,6 +7517,7 @@ static int test_info_callback(int tst)
         SSL_SESSION *sess = NULL;
         size_t written, readbytes;
         unsigned char buf[80];
+        time_t timer;
 
         /* early_data tests */
         if (!TEST_true(setupearly_data_test(&cctx, &sctx, &clientssl,
@@ -7481,13 +7532,20 @@ static int test_info_callback(int tst)
                               sslapi_info_callback);
 
         /* Write and read some early data and then complete the connection */
+        timer = time(NULL);
         if (!TEST_true(SSL_write_early_data(clientssl, MSG1, strlen(MSG1),
                                             &written))
-                || !TEST_size_t_eq(written, strlen(MSG1))
-                || !TEST_int_eq(SSL_read_early_data(serverssl, buf,
-                                                    sizeof(buf), &readbytes),
-                                SSL_READ_EARLY_DATA_SUCCESS)
-                || !TEST_mem_eq(MSG1, readbytes, buf, strlen(MSG1))
+                || !TEST_size_t_eq(written, strlen(MSG1)))
+            goto end;
+
+        if (!TEST_int_eq(SSL_read_early_data(serverssl, buf,
+                                             sizeof(buf), &readbytes),
+                         SSL_READ_EARLY_DATA_SUCCESS)) {
+            testresult = check_early_data_timeout(timer);
+            goto end;
+        }
+
+        if (!TEST_mem_eq(MSG1, readbytes, buf, strlen(MSG1))
                 || !TEST_int_eq(SSL_get_early_data_status(serverssl),
                                 SSL_EARLY_DATA_ACCEPTED)
                 || !TEST_true(create_ssl_connection(serverssl, clientssl,
@@ -8954,6 +9012,126 @@ static int test_session_timeout(int test)
     return testresult;
 }
 
+/*
+ * Test that a session cache overflow works as expected
+ * Test 0: TLSv1.3, timeout on new session later than old session
+ * Test 1: TLSv1.2, timeout on new session later than old session
+ * Test 2: TLSv1.3, timeout on new session earlier than old session
+ * Test 3: TLSv1.2, timeout on new session earlier than old session
+ */
+#if !defined(OSSL_NO_USABLE_TLS1_3) || !defined(OPENSSL_NO_TLS1_2)
+static int test_session_cache_overflow(int idx)
+{
+    SSL_CTX *sctx = NULL, *cctx = NULL;
+    SSL *serverssl = NULL, *clientssl = NULL;
+    int testresult = 0;
+    SSL_SESSION *sess = NULL;
+
+#ifdef OSSL_NO_USABLE_TLS1_3
+    /* If no TLSv1.3 available then do nothing in this case */
+    if (idx % 2 == 0)
+        return TEST_skip("No TLSv1.3 available");
+#endif
+#ifdef OPENSSL_NO_TLS1_2
+    /* If no TLSv1.2 available then do nothing in this case */
+    if (idx % 2 == 1)
+        return TEST_skip("No TLSv1.2 available");
+#endif
+
+    if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(),
+                                       TLS_client_method(), TLS1_VERSION,
+                                       (idx % 2 == 0) ? TLS1_3_VERSION
+                                                      : TLS1_2_VERSION,
+                                       &sctx, &cctx, cert, privkey))
+            || !TEST_true(SSL_CTX_set_options(sctx, SSL_OP_NO_TICKET)))
+        goto end;
+
+    SSL_CTX_sess_set_get_cb(sctx, get_session_cb);
+    get_sess_val = NULL;
+
+    SSL_CTX_sess_set_cache_size(sctx, 1);
+
+    if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl,
+                                      NULL, NULL)))
+        goto end;
+
+    if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)))
+        goto end;
+
+    if (idx > 1) {
+        sess = SSL_get_session(serverssl);
+        if (!TEST_ptr(sess))
+            goto end;
+
+        /*
+         * Cause this session to have a longer timeout than the next session to
+         * be added.
+         */
+        if (!TEST_true(SSL_SESSION_set_timeout(sess, LONG_MAX / 2))) {
+            sess = NULL;
+            goto end;
+        }
+        sess = NULL;
+    }
+
+    SSL_shutdown(serverssl);
+    SSL_shutdown(clientssl);
+    SSL_free(serverssl);
+    SSL_free(clientssl);
+    serverssl = clientssl = NULL;
+
+    /*
+     * Session cache size is 1 and we already populated the cache with a session
+     * so the next connection should cause an overflow.
+     */
+
+    if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl,
+                                      NULL, NULL)))
+        goto end;
+
+    if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)))
+        goto end;
+
+    /*
+     * The session we just negotiated may have been already removed from the
+     * internal cache - but we will return it anyway from our external cache.
+     */
+    get_sess_val = SSL_get_session(serverssl);
+    if (!TEST_ptr(get_sess_val))
+        goto end;
+    sess = SSL_get1_session(clientssl);
+    if (!TEST_ptr(sess))
+        goto end;
+
+    SSL_shutdown(serverssl);
+    SSL_shutdown(clientssl);
+    SSL_free(serverssl);
+    SSL_free(clientssl);
+    serverssl = clientssl = NULL;
+
+    if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl,
+                                      NULL, NULL)))
+        goto end;
+
+    if (!TEST_true(SSL_set_session(clientssl, sess)))
+        goto end;
+
+    if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)))
+        goto end;
+
+    testresult = 1;
+
+ end:
+    SSL_free(serverssl);
+    SSL_free(clientssl);
+    SSL_CTX_free(sctx);
+    SSL_CTX_free(cctx);
+    SSL_SESSION_free(sess);
+
+    return testresult;
+}
+#endif /* !defined(OSSL_NO_USABLE_TLS1_3) || !defined(OPENSSL_NO_TLS1_2) */
+
 /*
  * Test 0: Client sets servername and server acknowledges it (TLSv1.2)
  * Test 1: Client sets servername and server does not acknowledge it (TLSv1.2)
@@ -9269,20 +9447,11 @@ static int test_pluggable_group(int idx)
     OSSL_PROVIDER *tlsprov = OSSL_PROVIDER_load(libctx, "tls-provider");
     /* Check that we are not impacted by a provider without any groups */
     OSSL_PROVIDER *legacyprov = OSSL_PROVIDER_load(libctx, "legacy");
-    const char *group_name = idx == 0 ? "xorgroup" : "xorkemgroup";
+    const char *group_name = idx == 0 ? "xorkemgroup" : "xorgroup";
 
     if (!TEST_ptr(tlsprov))
         goto end;
 
-    if (legacyprov == NULL) {
-        /*
-         * In this case we assume we've been built with "no-legacy" and skip
-         * this test (there is no OPENSSL_NO_LEGACY)
-         */
-        testresult = 1;
-        goto end;
-    }
-
     if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(),
                                        TLS_client_method(),
                                        TLS1_3_VERSION,
@@ -9292,7 +9461,9 @@ static int test_pluggable_group(int idx)
                                              NULL, NULL)))
         goto end;
 
-    if (!TEST_true(SSL_set1_groups_list(serverssl, group_name))
+    /* ensure GROUPLIST_INCREMENT (=40) logic triggers: */
+    if (!TEST_true(SSL_set1_groups_list(serverssl, "xorgroup:xorkemgroup:dummy1:dummy2:dummy3:dummy4:dummy5:dummy6:dummy7:dummy8:dummy9:dummy10:dummy11:dummy12:dummy13:dummy14:dummy15:dummy16:dummy17:dummy18:dummy19:dummy20:dummy21:dummy22:dummy23:dummy24:dummy25:dummy26:dummy27:dummy28:dummy29:dummy30:dummy31:dummy32:dummy33:dummy34:dummy35:dummy36:dummy37:dummy38:dummy39:dummy40:dummy41:dummy42:dummy43"))
+    /* removing a single algorithm from the list makes the test pass */
             || !TEST_true(SSL_set1_groups_list(clientssl, group_name)))
         goto end;
 
@@ -10128,27 +10299,6 @@ static int test_load_dhfile(void)
 }
 
 #if !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_DYNAMIC_ENGINE)
-
-static ENGINE *load_dasync(void)
-{
-    ENGINE *e;
-
-    if (!TEST_ptr(e = ENGINE_by_id("dasync")))
-        return NULL;
-
-    if (!TEST_true(ENGINE_init(e))) {
-        ENGINE_free(e);
-        return NULL;
-    }
-
-    if (!TEST_true(ENGINE_register_ciphers(e))) {
-        ENGINE_free(e);
-        return NULL;
-    }
-
-    return e;
-}
-
 /*
  * Test TLSv1.2 with a pipeline capable cipher. TLSv1.3 and DTLS do not
  * support this yet. The only pipeline capable cipher that we have is in the
@@ -10443,6 +10593,177 @@ static int test_handshake_retry(int idx)
     return testresult;
 }
 
+struct resume_servername_cb_data {
+    int i;
+    SSL_CTX *cctx;
+    SSL_CTX *sctx;
+    SSL_SESSION *sess;
+    int recurse;
+};
+
+/*
+ * Servername callback. We use it here to run another complete handshake using
+ * the same session - and mark the session as not_resuamble at the end
+ */
+static int resume_servername_cb(SSL *s, int *ad, void *arg)
+{
+    struct resume_servername_cb_data *cbdata = arg;
+    SSL *serverssl = NULL, *clientssl = NULL;
+    int ret = SSL_TLSEXT_ERR_ALERT_FATAL;
+
+    if (cbdata->recurse)
+        return SSL_TLSEXT_ERR_ALERT_FATAL;
+
+    if ((cbdata->i % 3) != 1)
+        return SSL_TLSEXT_ERR_OK;
+
+    cbdata->recurse = 1;
+
+    if (!TEST_true(create_ssl_objects(cbdata->sctx, cbdata->cctx, &serverssl,
+                                      &clientssl, NULL, NULL))
+            || !TEST_true(SSL_set_session(clientssl, cbdata->sess)))
+        goto end;
+
+    ERR_set_mark();
+    /*
+     * We expect this to fail - because the servername cb will fail. This will
+     * mark the session as not_resumable.
+     */
+    if (!TEST_false(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE))) {
+        ERR_clear_last_mark();
+        goto end;
+    }
+    ERR_pop_to_mark();
+
+    ret = SSL_TLSEXT_ERR_OK;
+ end:
+    SSL_free(serverssl);
+    SSL_free(clientssl);
+    cbdata->recurse = 0;
+    return ret;
+}
+
+/*
+ * Test multiple resumptions and cache size handling
+ * Test 0: TLSv1.3 (max_early_data set)
+ * Test 1: TLSv1.3 (SSL_OP_NO_TICKET set)
+ * Test 2: TLSv1.3 (max_early_data and SSL_OP_NO_TICKET set)
+ * Test 3: TLSv1.3 (SSL_OP_NO_TICKET, simultaneous resumes)
+ * Test 4: TLSv1.2
+ */
+static int test_multi_resume(int idx)
+{
+    SSL_CTX *sctx = NULL, *cctx = NULL;
+    SSL *serverssl = NULL, *clientssl = NULL;
+    SSL_SESSION *sess = NULL;
+    int max_version = TLS1_3_VERSION;
+    int i, testresult = 0;
+    struct resume_servername_cb_data cbdata;
+
+#if defined(OPENSSL_NO_TLS1_2)
+    if (idx == 4)
+        return TEST_skip("TLSv1.2 is disabled in this build");
+#else
+    if (idx == 4)
+        max_version = TLS1_2_VERSION;
+#endif
+#if defined(OSSL_NO_USABLE_TLS1_3)
+    if (idx != 4)
+        return TEST_skip("No usable TLSv1.3 in this build");
+#endif
+
+    if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(),
+                                       TLS_client_method(), TLS1_VERSION,
+                                       max_version, &sctx, &cctx, cert,
+                                       privkey)))
+        goto end;
+
+    /*
+     * TLSv1.3 only uses a session cache if either max_early_data > 0 (used for
+     * replay protection), or if SSL_OP_NO_TICKET is in use
+     */
+    if (idx == 0 || idx == 2)  {
+        if (!TEST_true(SSL_CTX_set_max_early_data(sctx, 1024)))
+            goto end;
+    }
+    if (idx == 1 || idx == 2 || idx == 3)
+        SSL_CTX_set_options(sctx, SSL_OP_NO_TICKET);
+
+    SSL_CTX_sess_set_cache_size(sctx, 5);
+
+    if (idx == 3) {
+        SSL_CTX_set_tlsext_servername_callback(sctx, resume_servername_cb);
+        SSL_CTX_set_tlsext_servername_arg(sctx, &cbdata);
+        cbdata.cctx = cctx;
+        cbdata.sctx = sctx;
+        cbdata.recurse = 0;
+    }
+
+    for (i = 0; i < 30; i++) {
+        if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl,
+                                                NULL, NULL))
+                || !TEST_true(SSL_set_session(clientssl, sess)))
+            goto end;
+
+        /*
+         * Check simultaneous resumes. We pause the connection part way through
+         * the handshake by (mis)using the servername_cb. The pause occurs after
+         * session resumption has already occurred, but before any session
+         * tickets have been issued. While paused we run another complete
+         * handshake resuming the same session.
+         */
+        if (idx == 3) {
+            cbdata.i = i;
+            cbdata.sess = sess;
+        }
+
+        /*
+         * Recreate a bug where dynamically changing the max_early_data value
+         * can cause sessions in the session cache which cannot be deleted.
+         */
+        if ((idx == 0 || idx == 2) && (i % 3) == 2)
+            SSL_set_max_early_data(serverssl, 0);
+
+        if (!TEST_true(create_ssl_connection(serverssl, clientssl, SSL_ERROR_NONE)))
+            goto end;
+
+        if (sess == NULL || (idx == 0 && (i % 3) == 2)) {
+            if (!TEST_false(SSL_session_reused(clientssl)))
+                goto end;
+        } else {
+            if (!TEST_true(SSL_session_reused(clientssl)))
+                goto end;
+        }
+        SSL_SESSION_free(sess);
+
+        /* Do a full handshake, followed by two resumptions */
+        if ((i % 3) == 2) {
+            sess = NULL;
+        } else {
+            if (!TEST_ptr((sess = SSL_get1_session(clientssl))))
+                goto end;
+        }
+
+        SSL_shutdown(clientssl);
+        SSL_shutdown(serverssl);
+        SSL_free(serverssl);
+        SSL_free(clientssl);
+        serverssl = clientssl = NULL;
+    }
+
+    /* We should never exceed the session cache size limit */
+    if (!TEST_long_le(SSL_CTX_sess_number(sctx), 5))
+        goto end;
+
+    testresult = 1;
+ end:
+    SSL_free(serverssl);
+    SSL_free(clientssl);
+    SSL_CTX_free(sctx);
+    SSL_CTX_free(cctx);
+    SSL_SESSION_free(sess);
+    return testresult;
+}
 #ifndef OPENSSL_NO_QUIC
 static int test_quic_set_encryption_secrets(SSL *ssl,
                                             OSSL_ENCRYPTION_LEVEL level,
@@ -11066,6 +11387,9 @@ int setup_tests(void)
     ADD_TEST(test_set_verify_cert_store_ssl_ctx);
     ADD_TEST(test_set_verify_cert_store_ssl);
     ADD_ALL_TESTS(test_session_timeout, 1);
+#if !defined(OSSL_NO_USABLE_TLS1_3) || !defined(OPENSSL_NO_TLS1_2)
+    ADD_ALL_TESTS(test_session_cache_overflow, 4);
+#endif
     ADD_TEST(test_load_dhfile);
 #if !defined(OPENSSL_NO_TLS1_2) && !defined(OSSL_NO_USABLE_TLS1_3)
     ADD_ALL_TESTS(test_serverinfo_custom, 4);
@@ -11074,6 +11398,7 @@ int setup_tests(void)
     ADD_ALL_TESTS(test_pipelining, 7);
 #endif
     ADD_ALL_TESTS(test_handshake_retry, 16);
+    ADD_ALL_TESTS(test_multi_resume, 5);
 #ifndef OPENSSL_NO_QUIC
     ADD_ALL_TESTS(test_quic_api, 9);
 # ifndef OSSL_NO_USABLE_TLS1_3
diff --git a/deps/openssl/openssl/test/sslbuffertest.c b/deps/openssl/openssl/test/sslbuffertest.c
index 3c3e69d61da80e..f313151f686f96 100644
--- a/deps/openssl/openssl/test/sslbuffertest.c
+++ b/deps/openssl/openssl/test/sslbuffertest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -8,10 +8,19 @@
  * or in the file LICENSE in the source distribution.
  */
 
+/*
+ * We need access to the deprecated low level Engine APIs for legacy purposes
+ * when the deprecated calls are not hidden
+ */
+#ifndef OPENSSL_NO_DEPRECATED_3_0
+# define OPENSSL_SUPPRESS_DEPRECATED
+#endif
+
 #include 
 #include 
 #include 
 #include 
+#include 
 
 #include "internal/packet.h"
 
@@ -150,6 +159,166 @@ static int test_func(int test)
     return result;
 }
 
+/*
+ * Test that attempting to free the buffers at points where they cannot be freed
+ * works as expected
+ * Test 0: Attempt to free buffers after a full record has been processed, but
+ *         the application has only performed a partial read
+ * Test 1: Attempt to free buffers after only a partial record header has been
+ *         received
+ * Test 2: Attempt to free buffers after a full record header but no record body
+ * Test 3: Attempt to free buffers after a full record hedaer and partial record
+ *         body
+ * Test 4-7: We repeat tests 0-3 but including data from a second pipelined
+ *           record
+ */
+static int test_free_buffers(int test)
+{
+    int result = 0;
+    SSL *serverssl = NULL, *clientssl = NULL;
+    const char testdata[] = "Test data";
+    char buf[120];
+    size_t written, readbytes;
+    int i, pipeline = test > 3;
+    ENGINE *e = NULL;
+
+    if (pipeline) {
+        e = load_dasync();
+        if (e == NULL)
+            goto end;
+        test -= 4;
+    }
+
+    if (!TEST_true(create_ssl_objects(serverctx, clientctx, &serverssl,
+                                      &clientssl, NULL, NULL)))
+        goto end;
+
+    if (pipeline) {
+        if (!TEST_true(SSL_set_cipher_list(serverssl, "AES128-SHA"))
+                || !TEST_true(SSL_set_max_proto_version(serverssl,
+                                                        TLS1_2_VERSION))
+                || !TEST_true(SSL_set_max_pipelines(serverssl, 2)))
+            goto end;
+    }
+
+    if (!TEST_true(create_ssl_connection(serverssl, clientssl,
+                                         SSL_ERROR_NONE)))
+        goto end;
+
+    /*
+     * For the non-pipeline case we write one record. For pipelining we write
+     * two records.
+     */
+    for (i = 0; i <= pipeline; i++) {
+        if (!TEST_true(SSL_write_ex(clientssl, testdata, strlen(testdata),
+                                    &written)))
+            goto end;
+    }
+
+    if (test == 0) {
+        size_t readlen = 1;
+
+        /*
+         * Deliberately only read the first byte - so the remaining bytes are
+         * still buffered. In the pipelining case we read as far as the first
+         * byte from the second record.
+         */
+        if (pipeline)
+            readlen += strlen(testdata);
+
+        if (!TEST_true(SSL_read_ex(serverssl, buf, readlen, &readbytes))
+                || !TEST_size_t_eq(readlen, readbytes))
+            goto end;
+    } else {
+        BIO *tmp;
+        size_t partial_len;
+
+        /* Remove all the data that is pending for read by the server */
+        tmp = SSL_get_rbio(serverssl);
+        if (!TEST_true(BIO_read_ex(tmp, buf, sizeof(buf), &readbytes))
+                || !TEST_size_t_lt(readbytes, sizeof(buf))
+                || !TEST_size_t_gt(readbytes, SSL3_RT_HEADER_LENGTH))
+            goto end;
+
+        switch(test) {
+        case 1:
+            partial_len = SSL3_RT_HEADER_LENGTH - 1;
+            break;
+        case 2:
+            partial_len = SSL3_RT_HEADER_LENGTH;
+            break;
+        case 3:
+            partial_len = readbytes - 1;
+            break;
+        default:
+            TEST_error("Invalid test index");
+            goto end;
+        }
+
+        if (pipeline) {
+            /* We happen to know the first record is 57 bytes long */
+            const size_t first_rec_len = 57;
+
+            if (test != 3)
+                partial_len += first_rec_len;
+
+            /*
+             * Sanity check. If we got the record len right then this should
+             * never fail.
+             */
+            if (!TEST_int_eq(buf[first_rec_len], SSL3_RT_APPLICATION_DATA))
+                goto end;
+        }
+
+        /*
+         * Put back just the partial record (plus the whole initial record in
+         * the pipelining case)
+         */
+        if (!TEST_true(BIO_write_ex(tmp, buf, partial_len, &written)))
+            goto end;
+
+        if (pipeline) {
+            /*
+             * Attempt a read. This should pass but only return data from the
+             * first record. Only a partial record is available for the second
+             * record.
+             */
+            if (!TEST_true(SSL_read_ex(serverssl, buf, sizeof(buf),
+                                        &readbytes))
+                    || !TEST_size_t_eq(readbytes, strlen(testdata)))
+                goto end;
+        } else {
+            /*
+            * Attempt a read. This should fail because only a partial record is
+            * available.
+            */
+            if (!TEST_false(SSL_read_ex(serverssl, buf, sizeof(buf),
+                                        &readbytes)))
+                goto end;
+        }
+    }
+
+    /*
+     * Attempting to free the buffers at this point should fail because they are
+     * still in use
+     */
+    if (!TEST_false(SSL_free_buffers(serverssl)))
+        goto end;
+
+    result = 1;
+ end:
+    SSL_free(clientssl);
+    SSL_free(serverssl);
+#ifndef OPENSSL_NO_DYNAMIC_ENGINE
+    if (e != NULL) {
+        ENGINE_unregister_ciphers(e);
+        ENGINE_finish(e);
+        ENGINE_free(e);
+    }
+#endif
+    return result;
+}
+
 OPT_TEST_DECLARE_USAGE("certfile privkeyfile\n")
 
 int setup_tests(void)
@@ -173,6 +342,11 @@ int setup_tests(void)
     }
 
     ADD_ALL_TESTS(test_func, 9);
+#if !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_DYNAMIC_ENGINE)
+    ADD_ALL_TESTS(test_free_buffers, 8);
+#else
+    ADD_ALL_TESTS(test_free_buffers, 4);
+#endif
     return 1;
 }
 
diff --git a/deps/openssl/openssl/test/test.cnf b/deps/openssl/openssl/test/test.cnf
index 8b2f92ad8e241d..8f68982a9fa1fc 100644
--- a/deps/openssl/openssl/test/test.cnf
+++ b/deps/openssl/openssl/test/test.cnf
@@ -72,3 +72,9 @@ commonName			= CN field
 commonName_value		= Eric Young
 emailAddress			= email field
 emailAddress_value		= eay@mincom.oz.au
+
+[ dirname_sec ]
+C  = UK
+O  = My Organization
+OU = My Unit
+CN = My Name
diff --git a/deps/openssl/openssl/test/tls-provider.c b/deps/openssl/openssl/test/tls-provider.c
index 5c44b6812e8168..7375792c312552 100644
--- a/deps/openssl/openssl/test/tls-provider.c
+++ b/deps/openssl/openssl/test/tls-provider.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -185,6 +185,8 @@ static int tls_prov_get_capabilities(void *provctx, const char *capability,
     }
 
     /* Register our 2 groups */
+    OPENSSL_assert(xor_group.group_id >= 65024
+                   && xor_group.group_id < 65279 - NUM_DUMMY_GROUPS);
     ret = cb(xor_group_params, arg);
     ret &= cb(xor_kemgroup_params, arg);
 
@@ -196,6 +198,7 @@ static int tls_prov_get_capabilities(void *provctx, const char *capability,
 
     for (i = 0; i < NUM_DUMMY_GROUPS; i++) {
         OSSL_PARAM dummygroup[OSSL_NELEM(xor_group_params)];
+        unsigned int dummygroup_id;
 
         memcpy(dummygroup, xor_group_params, sizeof(xor_group_params));
 
@@ -210,6 +213,9 @@ static int tls_prov_get_capabilities(void *provctx, const char *capability,
         }
         dummygroup[0].data = dummy_group_names[i];
         dummygroup[0].data_size = strlen(dummy_group_names[i]) + 1;
+        /* assign unique group IDs also to dummy groups for registration */
+        dummygroup_id = 65279 - NUM_DUMMY_GROUPS + i;
+        dummygroup[3].data = (unsigned char*)&dummygroup_id;
         ret &= cb(dummygroup, arg);
     }
 
@@ -817,9 +823,10 @@ unsigned int randomize_tls_group_id(OSSL_LIB_CTX *libctx)
         return 0;
     /*
      * Ensure group_id is within the IANA Reserved for private use range
-     * (65024-65279)
+     * (65024-65279).
+     * Carve out NUM_DUMMY_GROUPS ids for properly registering those.
      */
-    group_id %= 65279 - 65024;
+    group_id %= 65279 - NUM_DUMMY_GROUPS - 65024;
     group_id += 65024;
 
     /* Ensure we did not already issue this group_id */
diff --git a/deps/openssl/openssl/test/v3ext.c b/deps/openssl/openssl/test/v3ext.c
index 88034db271559d..9305a3010bf8ec 100644
--- a/deps/openssl/openssl/test/v3ext.c
+++ b/deps/openssl/openssl/test/v3ext.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -269,17 +269,20 @@ static int test_addr_fam_len(void)
         goto end;
     if (!ASN1_OCTET_STRING_set(f1->addressFamily, key, keylen))
         goto end;
+
+    /* Push and transfer memory ownership to stack */
     if (!sk_IPAddressFamily_push(addr, f1))
         goto end;
+    f1 = NULL;
 
     /* Shouldn't be able to canonize this as the len is > 3*/
     if (!TEST_false(X509v3_addr_canonize(addr)))
         goto end;
 
-    /* Create a well formed IPAddressFamily */
-    f1 = sk_IPAddressFamily_pop(addr);
-    IPAddressFamily_free(f1);
+    /* Pop and free the new stack element */
+    IPAddressFamily_free(sk_IPAddressFamily_pop(addr));
 
+    /* Create a well-formed IPAddressFamily */
     key[0] = (afi >> 8) & 0xFF;
     key[1] = afi & 0xFF;
     key[2] = 0x1;
@@ -297,8 +300,11 @@ static int test_addr_fam_len(void)
 
     /* Mark this as inheritance so we skip some of the is_canonize checks */
     f1->ipAddressChoice->type = IPAddressChoice_inherit;
+
+    /* Push and transfer memory ownership to stack */
     if (!sk_IPAddressFamily_push(addr, f1))
         goto end;
+    f1 = NULL;
 
     /* Should be able to canonize now */
     if (!TEST_true(X509v3_addr_canonize(addr)))
@@ -306,7 +312,10 @@ static int test_addr_fam_len(void)
 
     testresult = 1;
   end:
+    /* Free stack and any memory owned by detached element */
+    IPAddressFamily_free(f1);
     sk_IPAddressFamily_pop_free(addr, IPAddressFamily_free);
+
     ASN1_OCTET_STRING_free(ip1);
     ASN1_OCTET_STRING_free(ip2);
     return testresult;

From 67e98831ab26bad5588c8b2c3e65cbe4f4372e20 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Mon, 12 Aug 2024 15:26:27 +0000
Subject: [PATCH 43/76] deps: update archs files for openssl-3.0.14+quic1

PR-URL: https://github.com/nodejs/node/pull/54336
Reviewed-By: Richard Lau 
Reviewed-By: Rafael Gonzaga 
Reviewed-By: Marco Ippolito 
---
 deps/openssl/config/archs/BSD-x86/asm/configdata.pm   |  9 +++++----
 .../config/archs/BSD-x86/asm/crypto/buildinf.h        |  2 +-
 .../archs/BSD-x86/asm/include/openssl/opensslv.h      | 10 +++++-----
 .../config/archs/BSD-x86/asm_avx2/configdata.pm       |  9 +++++----
 .../config/archs/BSD-x86/asm_avx2/crypto/buildinf.h   |  2 +-
 .../archs/BSD-x86/asm_avx2/include/openssl/opensslv.h | 10 +++++-----
 .../openssl/config/archs/BSD-x86/no-asm/configdata.pm |  9 +++++----
 .../config/archs/BSD-x86/no-asm/crypto/buildinf.h     |  2 +-
 .../archs/BSD-x86/no-asm/include/openssl/opensslv.h   | 10 +++++-----
 .../openssl/config/archs/BSD-x86_64/asm/configdata.pm |  9 +++++----
 .../config/archs/BSD-x86_64/asm/crypto/buildinf.h     |  2 +-
 .../archs/BSD-x86_64/asm/include/openssl/opensslv.h   | 10 +++++-----
 .../config/archs/BSD-x86_64/asm_avx2/configdata.pm    |  9 +++++----
 .../archs/BSD-x86_64/asm_avx2/crypto/buildinf.h       |  2 +-
 .../BSD-x86_64/asm_avx2/include/openssl/opensslv.h    | 10 +++++-----
 .../config/archs/BSD-x86_64/no-asm/configdata.pm      |  9 +++++----
 .../config/archs/BSD-x86_64/no-asm/crypto/buildinf.h  |  2 +-
 .../BSD-x86_64/no-asm/include/openssl/opensslv.h      | 10 +++++-----
 deps/openssl/config/archs/VC-WIN32/asm/configdata.pm  | 11 ++++++-----
 .../config/archs/VC-WIN32/asm/crypto/buildinf.h       |  2 +-
 .../archs/VC-WIN32/asm/include/openssl/opensslv.h     | 10 +++++-----
 .../config/archs/VC-WIN32/asm_avx2/configdata.pm      | 11 ++++++-----
 .../config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h  |  2 +-
 .../VC-WIN32/asm_avx2/include/openssl/opensslv.h      | 10 +++++-----
 .../config/archs/VC-WIN32/no-asm/configdata.pm        | 11 ++++++-----
 .../config/archs/VC-WIN32/no-asm/crypto/buildinf.h    |  2 +-
 .../archs/VC-WIN32/no-asm/include/openssl/opensslv.h  | 10 +++++-----
 .../config/archs/VC-WIN64-ARM/no-asm/configdata.pm    | 11 ++++++-----
 .../archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h       |  2 +-
 .../VC-WIN64-ARM/no-asm/include/openssl/opensslv.h    | 10 +++++-----
 deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm | 11 ++++++-----
 .../config/archs/VC-WIN64A/asm/crypto/buildinf.h      |  2 +-
 .../archs/VC-WIN64A/asm/include/openssl/opensslv.h    | 10 +++++-----
 .../config/archs/VC-WIN64A/asm_avx2/configdata.pm     | 11 ++++++-----
 .../config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h |  2 +-
 .../VC-WIN64A/asm_avx2/include/openssl/opensslv.h     | 10 +++++-----
 .../config/archs/VC-WIN64A/no-asm/configdata.pm       | 11 ++++++-----
 .../config/archs/VC-WIN64A/no-asm/crypto/buildinf.h   |  2 +-
 .../archs/VC-WIN64A/no-asm/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/aix64-gcc-as/asm/configdata.pm       |  9 +++++----
 .../config/archs/aix64-gcc-as/asm/crypto/buildinf.h   |  2 +-
 .../archs/aix64-gcc-as/asm/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/aix64-gcc-as/asm_avx2/configdata.pm  |  9 +++++----
 .../archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h     |  2 +-
 .../aix64-gcc-as/asm_avx2/include/openssl/opensslv.h  | 10 +++++-----
 .../config/archs/aix64-gcc-as/no-asm/configdata.pm    |  9 +++++----
 .../archs/aix64-gcc-as/no-asm/crypto/buildinf.h       |  2 +-
 .../aix64-gcc-as/no-asm/include/openssl/opensslv.h    | 10 +++++-----
 .../config/archs/darwin-i386-cc/asm/configdata.pm     |  9 +++++----
 .../config/archs/darwin-i386-cc/asm/crypto/buildinf.h |  2 +-
 .../darwin-i386-cc/asm/include/openssl/opensslv.h     | 10 +++++-----
 .../archs/darwin-i386-cc/asm_avx2/configdata.pm       |  9 +++++----
 .../archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h   |  2 +-
 .../asm_avx2/include/openssl/opensslv.h               | 10 +++++-----
 .../config/archs/darwin-i386-cc/no-asm/configdata.pm  |  9 +++++----
 .../archs/darwin-i386-cc/no-asm/crypto/buildinf.h     |  2 +-
 .../darwin-i386-cc/no-asm/include/openssl/opensslv.h  | 10 +++++-----
 .../config/archs/darwin64-arm64-cc/asm/configdata.pm  |  9 +++++----
 .../archs/darwin64-arm64-cc/asm/crypto/buildinf.h     |  2 +-
 .../darwin64-arm64-cc/asm/include/openssl/opensslv.h  | 10 +++++-----
 .../archs/darwin64-arm64-cc/asm_avx2/configdata.pm    |  9 +++++----
 .../darwin64-arm64-cc/asm_avx2/crypto/buildinf.h      |  2 +-
 .../asm_avx2/include/openssl/opensslv.h               | 10 +++++-----
 .../archs/darwin64-arm64-cc/no-asm/configdata.pm      |  9 +++++----
 .../archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h  |  2 +-
 .../no-asm/include/openssl/opensslv.h                 | 10 +++++-----
 .../config/archs/darwin64-x86_64-cc/asm/configdata.pm |  9 +++++----
 .../archs/darwin64-x86_64-cc/asm/crypto/buildinf.h    |  2 +-
 .../darwin64-x86_64-cc/asm/include/openssl/opensslv.h | 10 +++++-----
 .../archs/darwin64-x86_64-cc/asm_avx2/configdata.pm   |  9 +++++----
 .../darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h     |  2 +-
 .../asm_avx2/include/openssl/opensslv.h               | 10 +++++-----
 .../archs/darwin64-x86_64-cc/no-asm/configdata.pm     |  9 +++++----
 .../archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h |  2 +-
 .../no-asm/include/openssl/opensslv.h                 | 10 +++++-----
 .../config/archs/linux-aarch64/asm/configdata.pm      |  9 +++++----
 .../config/archs/linux-aarch64/asm/crypto/buildinf.h  |  2 +-
 .../linux-aarch64/asm/include/openssl/opensslv.h      | 10 +++++-----
 .../config/archs/linux-aarch64/asm_avx2/configdata.pm |  9 +++++----
 .../archs/linux-aarch64/asm_avx2/crypto/buildinf.h    |  2 +-
 .../linux-aarch64/asm_avx2/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/linux-aarch64/no-asm/configdata.pm   |  9 +++++----
 .../archs/linux-aarch64/no-asm/crypto/buildinf.h      |  2 +-
 .../linux-aarch64/no-asm/include/openssl/opensslv.h   | 10 +++++-----
 .../config/archs/linux-armv4/asm/configdata.pm        |  9 +++++----
 .../config/archs/linux-armv4/asm/crypto/buildinf.h    |  2 +-
 .../archs/linux-armv4/asm/include/openssl/opensslv.h  | 10 +++++-----
 .../config/archs/linux-armv4/asm_avx2/configdata.pm   |  9 +++++----
 .../archs/linux-armv4/asm_avx2/crypto/buildinf.h      |  2 +-
 .../linux-armv4/asm_avx2/include/openssl/opensslv.h   | 10 +++++-----
 .../config/archs/linux-armv4/no-asm/configdata.pm     |  9 +++++----
 .../config/archs/linux-armv4/no-asm/crypto/buildinf.h |  2 +-
 .../linux-armv4/no-asm/include/openssl/opensslv.h     | 10 +++++-----
 deps/openssl/config/archs/linux-elf/asm/configdata.pm |  9 +++++----
 .../config/archs/linux-elf/asm/crypto/buildinf.h      |  2 +-
 .../archs/linux-elf/asm/include/openssl/opensslv.h    | 10 +++++-----
 .../config/archs/linux-elf/asm_avx2/configdata.pm     |  9 +++++----
 .../config/archs/linux-elf/asm_avx2/crypto/buildinf.h |  2 +-
 .../linux-elf/asm_avx2/include/openssl/opensslv.h     | 10 +++++-----
 .../config/archs/linux-elf/no-asm/configdata.pm       |  9 +++++----
 .../config/archs/linux-elf/no-asm/crypto/buildinf.h   |  2 +-
 .../archs/linux-elf/no-asm/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/linux-ppc64le/asm/configdata.pm      |  9 +++++----
 .../config/archs/linux-ppc64le/asm/crypto/buildinf.h  |  2 +-
 .../linux-ppc64le/asm/include/openssl/opensslv.h      | 10 +++++-----
 .../config/archs/linux-ppc64le/asm_avx2/configdata.pm |  9 +++++----
 .../archs/linux-ppc64le/asm_avx2/crypto/buildinf.h    |  2 +-
 .../linux-ppc64le/asm_avx2/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/linux-ppc64le/no-asm/configdata.pm   |  9 +++++----
 .../archs/linux-ppc64le/no-asm/crypto/buildinf.h      |  2 +-
 .../linux-ppc64le/no-asm/include/openssl/opensslv.h   | 10 +++++-----
 .../config/archs/linux-x86_64/asm/configdata.pm       |  9 +++++----
 .../config/archs/linux-x86_64/asm/crypto/buildinf.h   |  2 +-
 .../archs/linux-x86_64/asm/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/linux-x86_64/asm_avx2/configdata.pm  |  9 +++++----
 .../archs/linux-x86_64/asm_avx2/crypto/buildinf.h     |  2 +-
 .../linux-x86_64/asm_avx2/include/openssl/opensslv.h  | 10 +++++-----
 .../config/archs/linux-x86_64/no-asm/configdata.pm    |  9 +++++----
 .../archs/linux-x86_64/no-asm/crypto/buildinf.h       |  2 +-
 .../linux-x86_64/no-asm/include/openssl/opensslv.h    | 10 +++++-----
 .../config/archs/linux32-s390x/asm/configdata.pm      |  9 +++++----
 .../config/archs/linux32-s390x/asm/crypto/buildinf.h  |  2 +-
 .../linux32-s390x/asm/include/openssl/opensslv.h      | 10 +++++-----
 .../config/archs/linux32-s390x/asm_avx2/configdata.pm |  9 +++++----
 .../archs/linux32-s390x/asm_avx2/crypto/buildinf.h    |  2 +-
 .../linux32-s390x/asm_avx2/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/linux32-s390x/no-asm/configdata.pm   |  9 +++++----
 .../archs/linux32-s390x/no-asm/crypto/buildinf.h      |  2 +-
 .../linux32-s390x/no-asm/include/openssl/opensslv.h   | 10 +++++-----
 .../archs/linux64-loongarch64/no-asm/configdata.pm    |  9 +++++----
 .../linux64-loongarch64/no-asm/crypto/buildinf.h      |  2 +-
 .../no-asm/include/openssl/opensslv.h                 | 10 +++++-----
 .../config/archs/linux64-mips64/asm/configdata.pm     |  9 +++++----
 .../config/archs/linux64-mips64/asm/crypto/buildinf.h |  2 +-
 .../linux64-mips64/asm/include/openssl/opensslv.h     | 10 +++++-----
 .../archs/linux64-mips64/asm_avx2/configdata.pm       |  9 +++++----
 .../archs/linux64-mips64/asm_avx2/crypto/buildinf.h   |  2 +-
 .../asm_avx2/include/openssl/opensslv.h               | 10 +++++-----
 .../config/archs/linux64-mips64/no-asm/configdata.pm  |  9 +++++----
 .../archs/linux64-mips64/no-asm/crypto/buildinf.h     |  2 +-
 .../linux64-mips64/no-asm/include/openssl/opensslv.h  | 10 +++++-----
 .../config/archs/linux64-riscv64/no-asm/configdata.pm |  9 +++++----
 .../archs/linux64-riscv64/no-asm/crypto/buildinf.h    |  2 +-
 .../linux64-riscv64/no-asm/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/linux64-s390x/asm/configdata.pm      |  9 +++++----
 .../config/archs/linux64-s390x/asm/crypto/buildinf.h  |  2 +-
 .../linux64-s390x/asm/include/openssl/opensslv.h      | 10 +++++-----
 .../config/archs/linux64-s390x/asm_avx2/configdata.pm |  9 +++++----
 .../archs/linux64-s390x/asm_avx2/crypto/buildinf.h    |  2 +-
 .../linux64-s390x/asm_avx2/include/openssl/opensslv.h | 10 +++++-----
 .../config/archs/linux64-s390x/no-asm/configdata.pm   |  9 +++++----
 .../archs/linux64-s390x/no-asm/crypto/buildinf.h      |  2 +-
 .../linux64-s390x/no-asm/include/openssl/opensslv.h   | 10 +++++-----
 .../config/archs/solaris-x86-gcc/asm/configdata.pm    |  9 +++++----
 .../archs/solaris-x86-gcc/asm/crypto/buildinf.h       |  2 +-
 .../solaris-x86-gcc/asm/include/openssl/opensslv.h    | 10 +++++-----
 .../archs/solaris-x86-gcc/asm_avx2/configdata.pm      |  9 +++++----
 .../archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h  |  2 +-
 .../asm_avx2/include/openssl/opensslv.h               | 10 +++++-----
 .../config/archs/solaris-x86-gcc/no-asm/configdata.pm |  9 +++++----
 .../archs/solaris-x86-gcc/no-asm/crypto/buildinf.h    |  2 +-
 .../solaris-x86-gcc/no-asm/include/openssl/opensslv.h | 10 +++++-----
 .../archs/solaris64-x86_64-gcc/asm/configdata.pm      |  9 +++++----
 .../archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h  |  2 +-
 .../asm/include/openssl/opensslv.h                    | 10 +++++-----
 .../archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm |  9 +++++----
 .../solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h   |  2 +-
 .../asm_avx2/include/openssl/opensslv.h               | 10 +++++-----
 .../archs/solaris64-x86_64-gcc/no-asm/configdata.pm   |  9 +++++----
 .../solaris64-x86_64-gcc/no-asm/crypto/buildinf.h     |  2 +-
 .../no-asm/include/openssl/opensslv.h                 | 10 +++++-----
 deps/openssl/openssl/crypto/perlasm/x86asm.pl         |  4 ++--
 deps/openssl/openssl/include/crypto/bn_conf.h         |  1 +
 deps/openssl/openssl/include/crypto/dso_conf.h        |  1 +
 deps/openssl/openssl/include/openssl/asn1.h           |  1 +
 deps/openssl/openssl/include/openssl/asn1t.h          |  1 +
 deps/openssl/openssl/include/openssl/bio.h            |  1 +
 deps/openssl/openssl/include/openssl/cmp.h            |  1 +
 deps/openssl/openssl/include/openssl/cms.h            |  1 +
 deps/openssl/openssl/include/openssl/conf.h           |  1 +
 deps/openssl/openssl/include/openssl/configuration.h  |  1 +
 deps/openssl/openssl/include/openssl/crmf.h           |  1 +
 deps/openssl/openssl/include/openssl/crypto.h         |  1 +
 deps/openssl/openssl/include/openssl/ct.h             |  1 +
 deps/openssl/openssl/include/openssl/err.h            |  1 +
 deps/openssl/openssl/include/openssl/ess.h            |  1 +
 deps/openssl/openssl/include/openssl/fipskey.h        |  1 +
 deps/openssl/openssl/include/openssl/lhash.h          |  1 +
 deps/openssl/openssl/include/openssl/ocsp.h           |  1 +
 deps/openssl/openssl/include/openssl/opensslv.h       |  1 +
 deps/openssl/openssl/include/openssl/pkcs12.h         |  1 +
 deps/openssl/openssl/include/openssl/pkcs7.h          |  1 +
 deps/openssl/openssl/include/openssl/safestack.h      |  1 +
 deps/openssl/openssl/include/openssl/srp.h            |  1 +
 deps/openssl/openssl/include/openssl/ssl.h            |  1 +
 deps/openssl/openssl/include/openssl/ui.h             |  1 +
 deps/openssl/openssl/include/openssl/x509.h           |  1 +
 deps/openssl/openssl/include/openssl/x509_vfy.h       |  1 +
 deps/openssl/openssl/include/openssl/x509v3.h         |  1 +
 199 files changed, 663 insertions(+), 579 deletions(-)
 create mode 100644 deps/openssl/openssl/include/crypto/bn_conf.h
 create mode 100644 deps/openssl/openssl/include/crypto/dso_conf.h
 create mode 100644 deps/openssl/openssl/include/openssl/asn1.h
 create mode 100644 deps/openssl/openssl/include/openssl/asn1t.h
 create mode 100644 deps/openssl/openssl/include/openssl/bio.h
 create mode 100644 deps/openssl/openssl/include/openssl/cmp.h
 create mode 100644 deps/openssl/openssl/include/openssl/cms.h
 create mode 100644 deps/openssl/openssl/include/openssl/conf.h
 create mode 100644 deps/openssl/openssl/include/openssl/configuration.h
 create mode 100644 deps/openssl/openssl/include/openssl/crmf.h
 create mode 100644 deps/openssl/openssl/include/openssl/crypto.h
 create mode 100644 deps/openssl/openssl/include/openssl/ct.h
 create mode 100644 deps/openssl/openssl/include/openssl/err.h
 create mode 100644 deps/openssl/openssl/include/openssl/ess.h
 create mode 100644 deps/openssl/openssl/include/openssl/fipskey.h
 create mode 100644 deps/openssl/openssl/include/openssl/lhash.h
 create mode 100644 deps/openssl/openssl/include/openssl/ocsp.h
 create mode 100644 deps/openssl/openssl/include/openssl/opensslv.h
 create mode 100644 deps/openssl/openssl/include/openssl/pkcs12.h
 create mode 100644 deps/openssl/openssl/include/openssl/pkcs7.h
 create mode 100644 deps/openssl/openssl/include/openssl/safestack.h
 create mode 100644 deps/openssl/openssl/include/openssl/srp.h
 create mode 100644 deps/openssl/openssl/include/openssl/ssl.h
 create mode 100644 deps/openssl/openssl/include/openssl/ui.h
 create mode 100644 deps/openssl/openssl/include/openssl/x509.h
 create mode 100644 deps/openssl/openssl/include/openssl/x509_vfy.h
 create mode 100644 deps/openssl/openssl/include/openssl/x509v3.h

diff --git a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
index 8382e5a57de628..bd74fe533ab88d 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -203,7 +203,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -255,11 +255,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "BSD-x86",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -324,6 +324,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
index 5ae248b0fcbf8e..e2dfa52caff5de 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Wed Jan 31 12:57:29 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:15:09 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
index ef047655a33035..4500704d893270 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -203,7 +203,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -255,11 +255,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "BSD-x86",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -324,6 +324,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
index 5beff8d651b48a..391cb76baefd79 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Wed Jan 31 12:57:42 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:15:22 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
index 449b67e7317785..7066667eb21b35 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm
@@ -154,7 +154,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -202,7 +202,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -255,11 +255,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "BSD-x86",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -324,6 +324,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
index 628312a9c73101..f84df8008b215f 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: BSD-x86"
-#define DATE "built on: Wed Jan 31 12:57:55 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:15:35 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
index c98dd836086a9a..537f63b89b2bea 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -203,7 +203,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -255,11 +255,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "BSD-x86_64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
index ae35447b7d8921..3fd2b7152a8941 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Wed Jan 31 12:58:07 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:15:46 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
index 62e705ce7d8fbf..18f9483b32ba67 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -203,7 +203,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -255,11 +255,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "BSD-x86_64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
index bb3c014867e772..0cf6c7e98f6d83 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Wed Jan 31 12:58:22 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:16:02 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
index 419db86f724155..b3f186cd72ab0e 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm
@@ -154,7 +154,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -202,7 +202,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -255,11 +255,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "BSD-x86_64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
index 201f0f7d4ec27d..18bde84f83aea3 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: BSD-x86_64"
-#define DATE "built on: Wed Jan 31 12:58:38 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:16:17 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
index f724da47527e6a..48531552b9df01 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm
@@ -165,7 +165,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -216,7 +216,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -268,11 +268,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "VC-WIN32",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "lib",
@@ -287,7 +287,7 @@ our %target = (
     "LDFLAGS" => "/nologo /debug",
     "MT" => "mt",
     "MTFLAGS" => "-nologo",
-    "RANLIB" => "CODE(0x5644d3bdea88)",
+    "RANLIB" => "CODE(0x55f8cd334c08)",
     "RC" => "rc",
     "_conf_fname_int" => [
         "Configurations/00-base-templates.conf",
@@ -374,6 +374,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
index bdcc1602d19976..975d7809028b79 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: "
-#define DATE "built on: Wed Jan 31 13:07:51 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:25:26 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h
index 61260779ae4363..323055548b4de8 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
index 9585418f7e5ff2..8c059e49c3d77d 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm
@@ -165,7 +165,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -216,7 +216,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -268,11 +268,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "VC-WIN32",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "lib",
@@ -287,7 +287,7 @@ our %target = (
     "LDFLAGS" => "/nologo /debug",
     "MT" => "mt",
     "MTFLAGS" => "-nologo",
-    "RANLIB" => "CODE(0x564719267e28)",
+    "RANLIB" => "CODE(0x5627db2c44f8)",
     "RC" => "rc",
     "_conf_fname_int" => [
         "Configurations/00-base-templates.conf",
@@ -374,6 +374,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
index 71f6defc14b660..984e53763cb3d4 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: "
-#define DATE "built on: Wed Jan 31 13:08:03 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:25:38 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h
index 61260779ae4363..323055548b4de8 100644
--- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
index e5fcaa06b5bfbb..1d57d08440d094 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm
@@ -163,7 +163,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -215,7 +215,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -268,11 +268,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "VC-WIN32",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "lib",
@@ -287,7 +287,7 @@ our %target = (
     "LDFLAGS" => "/nologo /debug",
     "MT" => "mt",
     "MTFLAGS" => "-nologo",
-    "RANLIB" => "CODE(0x5571e27ca240)",
+    "RANLIB" => "CODE(0x55aecc68c4c0)",
     "RC" => "rc",
     "_conf_fname_int" => [
         "Configurations/00-base-templates.conf",
@@ -374,6 +374,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
index 6a3750ca20c513..bb9cdb1e9d6a87 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: "
-#define DATE "built on: Wed Jan 31 13:08:15 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:25:50 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h
index 61260779ae4363..323055548b4de8 100644
--- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
index f0d251945602cc..96b697f52c01f4 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm
@@ -163,7 +163,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -213,7 +213,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -266,11 +266,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "VC-WIN64-ARM",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "lib",
@@ -283,7 +283,7 @@ our %target = (
     "LDFLAGS" => "/nologo /debug",
     "MT" => "mt",
     "MTFLAGS" => "-nologo",
-    "RANLIB" => "CODE(0x55d9bc8048e0)",
+    "RANLIB" => "CODE(0x557b539dde30)",
     "RC" => "rc",
     "_conf_fname_int" => [
         "Configurations/00-base-templates.conf",
@@ -366,6 +366,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
index 9787debf662e37..d4143ae88a51c9 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: VC-WIN64-ARM"
-#define DATE "built on: Wed Jan 31 13:08:26 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:26:01 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h
index 61260779ae4363..323055548b4de8 100644
--- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
index 13e18c89b0aa59..41958ba7e56e7b 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm
@@ -168,7 +168,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -219,7 +219,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -271,11 +271,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "VC-WIN64A",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "lib",
@@ -290,7 +290,7 @@ our %target = (
     "LDFLAGS" => "/nologo /debug",
     "MT" => "mt",
     "MTFLAGS" => "-nologo",
-    "RANLIB" => "CODE(0x562d3fd74038)",
+    "RANLIB" => "CODE(0x55ef171f0eb8)",
     "RC" => "rc",
     "_conf_fname_int" => [
         "Configurations/00-base-templates.conf",
@@ -378,6 +378,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
index 98286464f80cf9..1ae4d1b0dc280c 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: "
-#define DATE "built on: Wed Jan 31 13:07:09 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:24:44 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h
index 61260779ae4363..323055548b4de8 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
index 9841596b5aba4c..d4d84c663680a4 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm
@@ -168,7 +168,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -219,7 +219,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -271,11 +271,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "VC-WIN64A",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "lib",
@@ -290,7 +290,7 @@ our %target = (
     "LDFLAGS" => "/nologo /debug",
     "MT" => "mt",
     "MTFLAGS" => "-nologo",
-    "RANLIB" => "CODE(0x5579ca7a23f8)",
+    "RANLIB" => "CODE(0x563fb67da2f8)",
     "RC" => "rc",
     "_conf_fname_int" => [
         "Configurations/00-base-templates.conf",
@@ -378,6 +378,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
index 19f5adb778b915..7279d44b0b6609 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: "
-#define DATE "built on: Wed Jan 31 13:07:24 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:24:59 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h
index 61260779ae4363..323055548b4de8 100644
--- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
index 9e8a1ec6db6169..4d005dd4b1d05c 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm
@@ -166,7 +166,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -218,7 +218,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -271,11 +271,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "VC-WIN64A",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "lib",
@@ -290,7 +290,7 @@ our %target = (
     "LDFLAGS" => "/nologo /debug",
     "MT" => "mt",
     "MTFLAGS" => "-nologo",
-    "RANLIB" => "CODE(0x55ba24087cd0)",
+    "RANLIB" => "CODE(0x55f6b0dcff20)",
     "RC" => "rc",
     "_conf_fname_int" => [
         "Configurations/00-base-templates.conf",
@@ -378,6 +378,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
index 98267ccf4001f9..53599b88e2db36 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: "
-#define DATE "built on: Wed Jan 31 13:07:39 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:25:14 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h
index 61260779ae4363..323055548b4de8 100644
--- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm
index b857105391594a..c19c0c4369b0da 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "aix64-gcc-as",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar -X64",
@@ -327,6 +327,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h
index e6d5e6f9a047a3..6db11546efcad4 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: aix64-gcc-as"
-#define DATE "built on: Wed Jan 31 12:56:52 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:14:32 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm
index ff854e43c4d10d..75c34e009c4fae 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "aix64-gcc-as",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar -X64",
@@ -327,6 +327,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h
index aa9a492f1854bd..7abc136642dd74 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: aix64-gcc-as"
-#define DATE "built on: Wed Jan 31 12:57:05 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:14:45 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm
index e0fe47f3f4c302..1b53e63191d23d 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm
@@ -154,7 +154,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -205,7 +205,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "aix64-gcc-as",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar -X64",
@@ -327,6 +327,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h
index 5a1f77c7b09564..9faae839382f3f 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: aix64-gcc-as"
-#define DATE "built on: Wed Jan 31 12:57:17 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:14:57 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
index 609612b69b820d..c2e265ef375b31 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin-i386-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
index 491dfa9f4617a2..372b467b42a034 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Wed Jan 31 12:59:31 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:17:10 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
index d92a94efb6f152..e96aee4281d78f 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin-i386-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
index 89c993059692a2..36577b608bd2da 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Wed Jan 31 12:59:44 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:17:23 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
index d5b971f9d20d1c..2e2cf808b7cb54 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm
@@ -154,7 +154,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -205,7 +205,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin-i386-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
index 2d13043ced2571..3c34241749d5ce 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin-i386-cc"
-#define DATE "built on: Wed Jan 31 12:59:57 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:17:36 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
index 5085e5ad401684..75ca55d5b73709 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin64-arm64-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
index 8b0c9897062718..fc5ce9267f9551 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Wed Jan 31 13:00:08 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:17:47 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
index bdb02ff56b6413..d8007796466fd1 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin64-arm64-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
index e209ae9d1a2f78..d3bba847fb2312 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Wed Jan 31 13:00:21 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:17:59 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
index 752eaf3a647b74..d3a3e6a8036931 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm
@@ -154,7 +154,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -205,7 +205,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin64-arm64-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
index f58186b307020c..3cf90a4cdce3cc 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin64-arm64-cc"
-#define DATE "built on: Wed Jan 31 13:00:33 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:18:11 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
index 2d3418aa631279..8c1a378d5ee43b 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin64-x86_64-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
index e53812582a877f..6835e9f9d725b6 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Wed Jan 31 12:58:49 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:16:29 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
index ea30dc93d43ae3..91d679086db68f 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin64-x86_64-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
index 588d59e092b146..57cd6484437255 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Wed Jan 31 12:59:05 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:16:44 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
index b008b9a8a1a960..723b385ffb1fb8 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm
@@ -154,7 +154,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -205,7 +205,7 @@ our %config = (
     ],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -258,11 +258,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "darwin64-x86_64-cc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
index 36035d10a344b7..a87d7d6f21043a 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: darwin64-x86_64-cc"
-#define DATE "built on: Wed Jan 31 12:59:20 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:16:59 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
index 6b9f0f9e20278f..54a9ae8bf3e5b2 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-aarch64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
index 45946ceaf6a533..dd7b101e0ea8db 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Wed Jan 31 13:00:44 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:18:23 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
index c0ce61cbb81f53..444d3e94350915 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-aarch64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
index b44bd4bb5b9fe0..e07d26a4335342 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Wed Jan 31 13:00:57 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:18:35 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
index 09dbbbd0f4dac9..e3a9dae8c48198 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-aarch64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
index d1a00e8b46a21c..57cc40eaa4b00f 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-aarch64"
-#define DATE "built on: Wed Jan 31 13:01:10 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:18:48 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
index b56c2ea33a722f..b0f54fbb35d7e8 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-armv4",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
index 6c556e9489e771..369dd4e4a4d148 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Wed Jan 31 13:01:21 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:18:59 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
index 76009b2dee65f5..b1a1c2776c0238 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-armv4",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
index 3c25da4cbf40e0..aac655f255a156 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Wed Jan 31 13:01:34 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:19:12 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
index 2e34266f4e384a..d5332a434b6b87 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-armv4",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
index 7a8a7caa417f99..80c694068890e7 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-armv4"
-#define DATE "built on: Wed Jan 31 13:01:46 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:19:24 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-elf/asm/configdata.pm b/deps/openssl/config/archs/linux-elf/asm/configdata.pm
index 7892d0e6f537f2..d93fd661f31835 100644
--- a/deps/openssl/config/archs/linux-elf/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/asm/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-elf",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -331,6 +331,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
index 96090e0478b789..dd81e6c6bf0b01 100644
--- a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-elf"
-#define DATE "built on: Wed Jan 31 13:01:58 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:19:36 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
index aeb57e7bc872ec..442f234e5d1fbb 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-elf",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -331,6 +331,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
index f92ceb4158b5dc..161f4740f404d2 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-elf"
-#define DATE "built on: Wed Jan 31 13:02:11 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:19:49 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
index f8c616164c6be4..fbe13b8b0c9caa 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-elf",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -331,6 +331,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
index 9a4d8ec2adcab7..6017e4a0c3dea6 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-elf"
-#define DATE "built on: Wed Jan 31 13:02:24 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:20:01 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
index 294b69122eef95..d4b65aec3f053f 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-ppc64le",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
index f868966a04b719..e512adf58787f9 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Wed Jan 31 13:03:19 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:20:55 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
index dcc417e8d68a9e..cc6c2c779c60c1 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-ppc64le",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
index af79fca6cdd64f..4f4dc6fa8b30d2 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Wed Jan 31 13:03:31 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:21:08 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
index 65bbbec1229b91..79282d5c61cda2 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-ppc64le",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
index c7183f844429c4..26fa10c9d19d67 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-ppc64le"
-#define DATE "built on: Wed Jan 31 13:03:44 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:21:20 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
index 1f87af83ac7da3..09098da78633d9 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-x86_64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -333,6 +333,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
index 699fafe5c0af57..5ca7822b1b5002 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Wed Jan 31 13:02:36 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:20:13 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
index f5f1bbec0436e9..a8c50321ab4ba3 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-x86_64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -333,6 +333,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
index 5804b20f527214..59fd96e5058423 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Wed Jan 31 13:02:51 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:20:29 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
index 973e1e1265b7dc..af5f4059f6e3ba 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux-x86_64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -333,6 +333,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
index cc6654b94a6b76..eda960565b337d 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux-x86_64"
-#define DATE "built on: Wed Jan 31 13:03:07 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:20:44 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
index f03243a0e161a1..1d1c1d0e4b934c 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux32-s390x",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
index 0f0b2de4f51ac1..f5df25cb4cb1f3 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Wed Jan 31 13:03:56 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:21:32 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
index 3c7006cb9b9e70..1826724ade9a2e 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux32-s390x",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
index e8782c94c1f1da..f57b956982be1f 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Wed Jan 31 13:04:09 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:21:45 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
index f363125e2a7b40..95ad14db676a0b 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux32-s390x",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -332,6 +332,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
index c597c4d38fdb35..b75bbda1e72943 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux32-s390x"
-#define DATE "built on: Wed Jan 31 13:04:22 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:21:57 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm
index c254f9376fe637..890978d550a77a 100644
--- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux64-loongarch64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -331,6 +331,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h
index 2d29318d84a21e..fb9edda90a6762 100644
--- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux64-loongarch64"
-#define DATE "built on: Wed Jan 31 13:08:49 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:26:24 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
index 33f877abf4ba4b..926cdad81a2e67 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm
@@ -162,7 +162,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -210,7 +210,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -262,11 +262,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux64-mips64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -336,6 +336,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
index 0ecfd9b31ae486..61c17930b0a6fa 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Wed Jan 31 13:05:11 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:22:47 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
index 78289801ba39a7..1880aeaa378b87 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm
@@ -162,7 +162,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -210,7 +210,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -262,11 +262,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux64-mips64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -336,6 +336,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
index a45ecc65c50250..c2dd68bde5eabb 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Wed Jan 31 13:05:23 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:22:59 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
index 07632e82e26608..4d6c45afe7aa43 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux64-mips64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -333,6 +333,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
index 2780a78e9cca2c..bd9acb72f86a32 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux64-mips64"
-#define DATE "built on: Wed Jan 31 13:05:35 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:23:10 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm
index eb98331a682e6e..3ff8a0d5fa4107 100644
--- a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux64-riscv64",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -331,6 +331,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h
index 0ca3c0b6e4db75..81a0f72f206329 100644
--- a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux64-riscv64"
-#define DATE "built on: Wed Jan 31 13:08:37 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:26:12 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
index d615c028da84a6..32dca4b0aa87dd 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux64-s390x",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -333,6 +333,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
index 3c794e9cce429f..f93f817ef660f4 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Wed Jan 31 13:04:34 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:22:09 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
index 64f0a78c6daef6..2f375a7b86cfdb 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm
@@ -159,7 +159,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -207,7 +207,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux64-s390x",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -333,6 +333,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
index 3d0c483c575a75..52f2c1f27c72d6 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Wed Jan 31 13:04:46 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:22:22 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
index 69bc1c7975b343..2226b31924a3f9 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm
@@ -157,7 +157,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -206,7 +206,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -259,11 +259,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned char",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "linux64-s390x",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -333,6 +333,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
index 26a9eee8e3c3c5..7fa30369421928 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: linux64-s390x"
-#define DATE "built on: Wed Jan 31 13:04:59 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:22:35 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
index ef7cd1e1ccd587..775a1a3772b750 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -204,7 +204,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -256,11 +256,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "solaris-x86-gcc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -324,6 +324,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
index 75a6d54a84bc6c..b79c0bf03b1c76 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Wed Jan 31 13:05:47 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:23:22 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
index 0fc41abe71068d..2098389be987be 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -204,7 +204,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -256,11 +256,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "solaris-x86-gcc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -324,6 +324,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
index 58695dce18281f..752e367258d750 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Wed Jan 31 13:06:00 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:23:35 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
index be79bd091411ec..db60b15c602bfb 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm
@@ -154,7 +154,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -203,7 +203,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -256,11 +256,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "solaris-x86-gcc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -324,6 +324,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
index 0b4b1b3b6d0b16..780ad5ecd48a23 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: solaris-x86-gcc"
-#define DATE "built on: Wed Jan 31 13:06:14 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:23:48 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
index 6ca22d6bc68da3..b5a596430157f0 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -204,7 +204,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -256,11 +256,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "solaris64-x86_64-gcc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
index 4936c63ba119fb..3c5ed027a46d71 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Wed Jan 31 13:06:25 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:24:00 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
index cce6080a4bdc5a..655580f7b99e3e 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm
@@ -156,7 +156,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -204,7 +204,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -256,11 +256,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "solaris64-x86_64-gcc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
index f14127004a37fb..038bca0f10e17c 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Wed Jan 31 13:06:41 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:24:16 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
index 1790bd78c651b1..e6b0d7a334d048 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm
@@ -154,7 +154,7 @@ our %config = (
     ],
     "dynamic_engines" => "0",
     "ex_libs" => [],
-    "full_version" => "3.0.13+quic",
+    "full_version" => "3.0.14+quic",
     "includes" => [],
     "lflags" => [],
     "lib_defines" => [
@@ -203,7 +203,7 @@ our %config = (
     "openssl_sys_defines" => [],
     "openssldir" => "",
     "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic",
-    "patch" => "13",
+    "patch" => "14",
     "perl_archname" => "x86_64-linux-gnu-thread-multi",
     "perl_cmd" => "/usr/bin/perl",
     "perl_version" => "5.34.0",
@@ -256,11 +256,11 @@ our %config = (
     "prerelease" => "",
     "processor" => "",
     "rc4_int" => "unsigned int",
-    "release_date" => "30 Jan 2024",
+    "release_date" => "4 Jun 2024",
     "shlib_version" => "81.3",
     "sourcedir" => ".",
     "target" => "solaris64-x86_64-gcc",
-    "version" => "3.0.13"
+    "version" => "3.0.14"
 );
 our %target = (
     "AR" => "ar",
@@ -325,6 +325,7 @@ our @disablables = (
     "asan",
     "asm",
     "async",
+    "atexit",
     "autoalginit",
     "autoerrinit",
     "autoload-config",
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
index bcc7cb4282dcdb..a203f27710e539 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h
@@ -11,7 +11,7 @@
  */
 
 #define PLATFORM "platform: solaris64-x86_64-gcc"
-#define DATE "built on: Wed Jan 31 13:06:57 2024 UTC"
+#define DATE "built on: Mon Aug 12 15:24:31 2024 UTC"
 
 /*
  * Generate compiler_flags as an array of individual characters. This is a
diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h
index 65f3bfa0540b2d..9c5f4b475a5eaa 100644
--- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h
+++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h
@@ -29,7 +29,7 @@ extern "C" {
  */
 # define OPENSSL_VERSION_MAJOR  3
 # define OPENSSL_VERSION_MINOR  0
-# define OPENSSL_VERSION_PATCH  13
+# define OPENSSL_VERSION_PATCH  14
 
 /*
  * Additional version information
@@ -74,21 +74,21 @@ extern "C" {
  * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and
  * OPENSSL_VERSION_BUILD_METADATA_STR appended.
  */
-# define OPENSSL_VERSION_STR "3.0.13"
-# define OPENSSL_FULL_VERSION_STR "3.0.13+quic"
+# define OPENSSL_VERSION_STR "3.0.14"
+# define OPENSSL_FULL_VERSION_STR "3.0.14+quic"
 
 /*
  * SECTION 3: ADDITIONAL METADATA
  *
  * These strings are defined separately to allow them to be parsable.
  */
-# define OPENSSL_RELEASE_DATE "30 Jan 2024"
+# define OPENSSL_RELEASE_DATE "4 Jun 2024"
 
 /*
  * SECTION 4: BACKWARD COMPATIBILITY
  */
 
-# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.13+quic 30 Jan 2024"
+# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024"
 
 /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */
 # ifdef OPENSSL_VERSION_PRE_RELEASE
diff --git a/deps/openssl/openssl/crypto/perlasm/x86asm.pl b/deps/openssl/openssl/crypto/perlasm/x86asm.pl
index 8dcde9eacaa3d1..98a7159a5f131c 100644
--- a/deps/openssl/openssl/crypto/perlasm/x86asm.pl
+++ b/deps/openssl/openssl/crypto/perlasm/x86asm.pl
@@ -174,9 +174,9 @@ sub ::vprotd
 
 sub ::endbranch
 {
-    &::generic("#ifdef __CET__\n");
+    &::generic("%ifdef __CET__\n");
     &::data_byte(0xf3,0x0f,0x1e,0xfb);
-    &::generic("#endif\n");
+    &::generic("%endif\n");
 }
 
 # label management
diff --git a/deps/openssl/openssl/include/crypto/bn_conf.h b/deps/openssl/openssl/include/crypto/bn_conf.h
new file mode 100644
index 00000000000000..79400c6472a49c
--- /dev/null
+++ b/deps/openssl/openssl/include/crypto/bn_conf.h
@@ -0,0 +1 @@
+#include "../../../config/bn_conf.h"
diff --git a/deps/openssl/openssl/include/crypto/dso_conf.h b/deps/openssl/openssl/include/crypto/dso_conf.h
new file mode 100644
index 00000000000000..e7f2afa9872320
--- /dev/null
+++ b/deps/openssl/openssl/include/crypto/dso_conf.h
@@ -0,0 +1 @@
+#include "../../../config/dso_conf.h"
diff --git a/deps/openssl/openssl/include/openssl/asn1.h b/deps/openssl/openssl/include/openssl/asn1.h
new file mode 100644
index 00000000000000..cd9fc7cc706c37
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/asn1.h
@@ -0,0 +1 @@
+#include "../../../config/asn1.h"
diff --git a/deps/openssl/openssl/include/openssl/asn1t.h b/deps/openssl/openssl/include/openssl/asn1t.h
new file mode 100644
index 00000000000000..6ff4f574949bbd
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/asn1t.h
@@ -0,0 +1 @@
+#include "../../../config/asn1t.h"
diff --git a/deps/openssl/openssl/include/openssl/bio.h b/deps/openssl/openssl/include/openssl/bio.h
new file mode 100644
index 00000000000000..dcece3cb4d6ebf
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/bio.h
@@ -0,0 +1 @@
+#include "../../../config/bio.h"
diff --git a/deps/openssl/openssl/include/openssl/cmp.h b/deps/openssl/openssl/include/openssl/cmp.h
new file mode 100644
index 00000000000000..7c8a6dc96fc360
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/cmp.h
@@ -0,0 +1 @@
+#include "../../../config/cmp.h"
diff --git a/deps/openssl/openssl/include/openssl/cms.h b/deps/openssl/openssl/include/openssl/cms.h
new file mode 100644
index 00000000000000..33a00775c9fa76
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/cms.h
@@ -0,0 +1 @@
+#include "../../../config/cms.h"
diff --git a/deps/openssl/openssl/include/openssl/conf.h b/deps/openssl/openssl/include/openssl/conf.h
new file mode 100644
index 00000000000000..2712886cafcd78
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/conf.h
@@ -0,0 +1 @@
+#include "../../../config/conf.h"
diff --git a/deps/openssl/openssl/include/openssl/configuration.h b/deps/openssl/openssl/include/openssl/configuration.h
new file mode 100644
index 00000000000000..8ffad996047c5e
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/configuration.h
@@ -0,0 +1 @@
+#include "../../../config/configuration.h"
diff --git a/deps/openssl/openssl/include/openssl/crmf.h b/deps/openssl/openssl/include/openssl/crmf.h
new file mode 100644
index 00000000000000..4103852ecb21c2
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/crmf.h
@@ -0,0 +1 @@
+#include "../../../config/crmf.h"
diff --git a/deps/openssl/openssl/include/openssl/crypto.h b/deps/openssl/openssl/include/openssl/crypto.h
new file mode 100644
index 00000000000000..6d0e701ebd3c19
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/crypto.h
@@ -0,0 +1 @@
+#include "../../../config/crypto.h"
diff --git a/deps/openssl/openssl/include/openssl/ct.h b/deps/openssl/openssl/include/openssl/ct.h
new file mode 100644
index 00000000000000..7ebb84387135be
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/ct.h
@@ -0,0 +1 @@
+#include "../../../config/ct.h"
diff --git a/deps/openssl/openssl/include/openssl/err.h b/deps/openssl/openssl/include/openssl/err.h
new file mode 100644
index 00000000000000..bf482070474781
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/err.h
@@ -0,0 +1 @@
+#include "../../../config/err.h"
diff --git a/deps/openssl/openssl/include/openssl/ess.h b/deps/openssl/openssl/include/openssl/ess.h
new file mode 100644
index 00000000000000..64cc016225119f
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/ess.h
@@ -0,0 +1 @@
+#include "../../../config/ess.h"
diff --git a/deps/openssl/openssl/include/openssl/fipskey.h b/deps/openssl/openssl/include/openssl/fipskey.h
new file mode 100644
index 00000000000000..c012013d98d4e8
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/fipskey.h
@@ -0,0 +1 @@
+#include "../../../config/fipskey.h"
diff --git a/deps/openssl/openssl/include/openssl/lhash.h b/deps/openssl/openssl/include/openssl/lhash.h
new file mode 100644
index 00000000000000..8d824f5cfe6274
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/lhash.h
@@ -0,0 +1 @@
+#include "../../../config/lhash.h"
diff --git a/deps/openssl/openssl/include/openssl/ocsp.h b/deps/openssl/openssl/include/openssl/ocsp.h
new file mode 100644
index 00000000000000..5b13afedf36bb6
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/ocsp.h
@@ -0,0 +1 @@
+#include "../../../config/ocsp.h"
diff --git a/deps/openssl/openssl/include/openssl/opensslv.h b/deps/openssl/openssl/include/openssl/opensslv.h
new file mode 100644
index 00000000000000..078cfba40fbe73
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/opensslv.h
@@ -0,0 +1 @@
+#include "../../../config/opensslv.h"
diff --git a/deps/openssl/openssl/include/openssl/pkcs12.h b/deps/openssl/openssl/include/openssl/pkcs12.h
new file mode 100644
index 00000000000000..2d7e2c08e99175
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/pkcs12.h
@@ -0,0 +1 @@
+#include "../../../config/pkcs12.h"
diff --git a/deps/openssl/openssl/include/openssl/pkcs7.h b/deps/openssl/openssl/include/openssl/pkcs7.h
new file mode 100644
index 00000000000000..b553f9d0f053b0
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/pkcs7.h
@@ -0,0 +1 @@
+#include "../../../config/pkcs7.h"
diff --git a/deps/openssl/openssl/include/openssl/safestack.h b/deps/openssl/openssl/include/openssl/safestack.h
new file mode 100644
index 00000000000000..989eafb33023b9
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/safestack.h
@@ -0,0 +1 @@
+#include "../../../config/safestack.h"
diff --git a/deps/openssl/openssl/include/openssl/srp.h b/deps/openssl/openssl/include/openssl/srp.h
new file mode 100644
index 00000000000000..9df42dad4c3127
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/srp.h
@@ -0,0 +1 @@
+#include "../../../config/srp.h"
diff --git a/deps/openssl/openssl/include/openssl/ssl.h b/deps/openssl/openssl/include/openssl/ssl.h
new file mode 100644
index 00000000000000..eb74ca98a9759a
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/ssl.h
@@ -0,0 +1 @@
+#include "../../../config/ssl.h"
diff --git a/deps/openssl/openssl/include/openssl/ui.h b/deps/openssl/openssl/include/openssl/ui.h
new file mode 100644
index 00000000000000..f5edb766b4fc6c
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/ui.h
@@ -0,0 +1 @@
+#include "../../../config/ui.h"
diff --git a/deps/openssl/openssl/include/openssl/x509.h b/deps/openssl/openssl/include/openssl/x509.h
new file mode 100644
index 00000000000000..ed28bd68cb2474
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/x509.h
@@ -0,0 +1 @@
+#include "../../../config/x509.h"
diff --git a/deps/openssl/openssl/include/openssl/x509_vfy.h b/deps/openssl/openssl/include/openssl/x509_vfy.h
new file mode 100644
index 00000000000000..9270a3ee09750a
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/x509_vfy.h
@@ -0,0 +1 @@
+#include "../../../config/x509_vfy.h"
diff --git a/deps/openssl/openssl/include/openssl/x509v3.h b/deps/openssl/openssl/include/openssl/x509v3.h
new file mode 100644
index 00000000000000..5629ae9a3a90af
--- /dev/null
+++ b/deps/openssl/openssl/include/openssl/x509v3.h
@@ -0,0 +1 @@
+#include "../../../config/x509v3.h"

From 4a18581dc3944e0a78fa647c9d4d3e9b2cf69504 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Tue, 17 Sep 2024 16:32:51 +0200
Subject: [PATCH 44/76] deps: update corepack to 0.29.4

PR-URL: https://github.com/nodejs/node/pull/54845
Reviewed-By: Marco Ippolito 
Reviewed-By: Moshe Atlow 
Reviewed-By: Antoine du Hamel 
Reviewed-By: Trivikram Kamat 
Reviewed-By: James M Snell 
---
 deps/corepack/CHANGELOG.md          | 7 +++++++
 deps/corepack/dist/lib/corepack.cjs | 8 ++++----
 deps/corepack/package.json          | 2 +-
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/deps/corepack/CHANGELOG.md b/deps/corepack/CHANGELOG.md
index a7b01aa8fb10bf..7de934c0d2c0db 100644
--- a/deps/corepack/CHANGELOG.md
+++ b/deps/corepack/CHANGELOG.md
@@ -1,5 +1,12 @@
 # Changelog
 
+## [0.29.4](https://github.com/nodejs/corepack/compare/v0.29.3...v0.29.4) (2024-09-07)
+
+
+### Features
+
+* update package manager versions ([#543](https://github.com/nodejs/corepack/issues/543)) ([b819e40](https://github.com/nodejs/corepack/commit/b819e404dbb23c4ae3d5dbe55e21de74d714ee9c))
+
 ## [0.29.3](https://github.com/nodejs/corepack/compare/v0.29.2...v0.29.3) (2024-07-21)
 
 
diff --git a/deps/corepack/dist/lib/corepack.cjs b/deps/corepack/dist/lib/corepack.cjs
index 12df55126256e5..2978fc336232e0 100644
--- a/deps/corepack/dist/lib/corepack.cjs
+++ b/deps/corepack/dist/lib/corepack.cjs
@@ -21260,7 +21260,7 @@ function String2(descriptor, ...args) {
 }
 
 // package.json
-var version = "0.29.3";
+var version = "0.29.4";
 
 // sources/Engine.ts
 var import_fs9 = __toESM(require("fs"));
@@ -21274,7 +21274,7 @@ var import_valid3 = __toESM(require_valid2());
 var config_default = {
   definitions: {
     npm: {
-      default: "10.8.2+sha1.3c123c7f14409dc0395478e7269fdbc32ae179d8",
+      default: "10.8.3+sha1.e6085b2864fcfd9b1aad7b602601b5a2fc116699",
       fetchLatestFrom: {
         type: "npm",
         package: "npm"
@@ -21311,7 +21311,7 @@ var config_default = {
       }
     },
     pnpm: {
-      default: "9.5.0+sha1.8c155dc114e1689d18937974f6571e0ceee66f1d",
+      default: "9.9.0+sha1.3edbe440f4e570aa8f049adbd06b9483d55cc2d2",
       fetchLatestFrom: {
         type: "npm",
         package: "pnpm"
@@ -21375,7 +21375,7 @@ var config_default = {
         package: "yarn"
       },
       transparent: {
-        default: "4.3.1+sha224.934d21773e22af4b69a7032a2d3b4cb38c1f7c019624777cc9916b23",
+        default: "4.4.1+sha224.fd21d9eb5fba020083811af1d4953acc21eeb9f6ff97efd1b3f9d4de",
         commands: [
           [
             "yarn",
diff --git a/deps/corepack/package.json b/deps/corepack/package.json
index 04a12cdc80d95d..571c359407e07a 100644
--- a/deps/corepack/package.json
+++ b/deps/corepack/package.json
@@ -1,6 +1,6 @@
 {
   "name": "corepack",
-  "version": "0.29.3",
+  "version": "0.29.4",
   "homepage": "https://github.com/nodejs/corepack#readme",
   "bugs": {
     "url": "https://github.com/nodejs/corepack/issues"

From c50f01399e656deb9263829dff24533105e636d6 Mon Sep 17 00:00:00 2001
From: Filip Skokan 
Date: Mon, 23 Sep 2024 17:28:44 +0200
Subject: [PATCH 45/76] crypto: ensure invalid SubtleCrypto JWK data import
 results in DataError

PR-URL: https://github.com/nodejs/node/pull/55041
Reviewed-By: James M Snell 
Reviewed-By: Yagiz Nizipli 
---
 lib/internal/crypto/aes.js                    |  7 +++-
 lib/internal/crypto/cfrg.js                   | 38 ++++++++++++-------
 lib/internal/crypto/ec.js                     | 10 ++++-
 lib/internal/crypto/mac.js                    |  7 +++-
 lib/internal/crypto/rsa.js                    | 10 ++++-
 .../test-webcrypto-export-import-cfrg.js      |  9 +++++
 .../test-webcrypto-export-import-ec.js        |  9 +++++
 .../test-webcrypto-export-import-rsa.js       |  9 +++++
 8 files changed, 79 insertions(+), 20 deletions(-)

diff --git a/lib/internal/crypto/aes.js b/lib/internal/crypto/aes.js
index b6d134dbfbf64e..3aa3bb51de9266 100644
--- a/lib/internal/crypto/aes.js
+++ b/lib/internal/crypto/aes.js
@@ -296,7 +296,12 @@ async function aesImportKey(
       }
 
       const handle = new KeyObjectHandle();
-      handle.initJwk(keyData);
+      try {
+        handle.initJwk(keyData);
+      } catch (err) {
+        throw lazyDOMException(
+          'Invalid keyData', { name: 'DataError', cause: err });
+      }
 
       ({ length } = handle.keyDetail({ }));
       validateKeyLength(length);
diff --git a/lib/internal/crypto/cfrg.js b/lib/internal/crypto/cfrg.js
index aeefa4484f9858..e4e688b80e7b50 100644
--- a/lib/internal/crypto/cfrg.js
+++ b/lib/internal/crypto/cfrg.js
@@ -17,6 +17,12 @@ const {
   kSignJobModeVerify,
 } = internalBinding('crypto');
 
+const {
+  codes: {
+    ERR_CRYPTO_INVALID_JWK,
+  },
+} = require('internal/errors');
+
 const {
   getUsagesUnion,
   hasAnyNotIn,
@@ -292,22 +298,26 @@ async function cfrgImportKey(
         isPublic,
         usagesSet);
 
-      const publicKeyObject = createCFRGRawKey(
-        name,
-        Buffer.from(keyData.x, 'base64'),
-        true);
-
-      if (isPublic) {
-        keyObject = publicKeyObject;
-      } else {
-        keyObject = createCFRGRawKey(
+      try {
+        const publicKeyObject = createCFRGRawKey(
           name,
-          Buffer.from(keyData.d, 'base64'),
-          false);
-
-        if (!createPublicKey(keyObject).equals(publicKeyObject)) {
-          throw lazyDOMException('Invalid JWK', 'DataError');
+          Buffer.from(keyData.x, 'base64'),
+          true);
+
+        if (isPublic) {
+          keyObject = publicKeyObject;
+        } else {
+          keyObject = createCFRGRawKey(
+            name,
+            Buffer.from(keyData.d, 'base64'),
+            false);
+
+          if (!createPublicKey(keyObject).equals(publicKeyObject)) {
+            throw new ERR_CRYPTO_INVALID_JWK();
+          }
         }
+      } catch (err) {
+        throw lazyDOMException('Invalid keyData', { name: 'DataError', cause: err });
       }
       break;
     }
diff --git a/lib/internal/crypto/ec.js b/lib/internal/crypto/ec.js
index ebfcecaff3cfc5..d8f2145bd7ec43 100644
--- a/lib/internal/crypto/ec.js
+++ b/lib/internal/crypto/ec.js
@@ -240,9 +240,15 @@ async function ecImportKey(
       }
 
       const handle = new KeyObjectHandle();
-      const type = handle.initJwk(keyData, namedCurve);
+      let type;
+      try {
+        type = handle.initJwk(keyData, namedCurve);
+      } catch (err) {
+        throw lazyDOMException(
+          'Invalid keyData', { name: 'DataError', cause: err });
+      }
       if (type === undefined)
-        throw lazyDOMException('Invalid JWK', 'DataError');
+        throw lazyDOMException('Invalid keyData', 'DataError');
       keyObject = type === kKeyTypePrivate ?
         new PrivateKeyObject(handle) :
         new PublicKeyObject(handle);
diff --git a/lib/internal/crypto/mac.js b/lib/internal/crypto/mac.js
index 91f58a85a9f6dd..112861523c605f 100644
--- a/lib/internal/crypto/mac.js
+++ b/lib/internal/crypto/mac.js
@@ -145,7 +145,12 @@ async function hmacImportKey(
       }
 
       const handle = new KeyObjectHandle();
-      handle.initJwk(keyData);
+      try {
+        handle.initJwk(keyData);
+      } catch (err) {
+        throw lazyDOMException(
+          'Invalid keyData', { name: 'DataError', cause: err });
+      }
       keyObject = new SecretKeyObject(handle);
       break;
     }
diff --git a/lib/internal/crypto/rsa.js b/lib/internal/crypto/rsa.js
index e90aa7bdcfe470..4865ef73d8df92 100644
--- a/lib/internal/crypto/rsa.js
+++ b/lib/internal/crypto/rsa.js
@@ -273,9 +273,15 @@ async function rsaImportKey(
       }
 
       const handle = new KeyObjectHandle();
-      const type = handle.initJwk(keyData);
+      let type;
+      try {
+        type = handle.initJwk(keyData);
+      } catch (err) {
+        throw lazyDOMException(
+          'Invalid keyData', { name: 'DataError', cause: err });
+      }
       if (type === undefined)
-        throw lazyDOMException('Invalid JWK', 'DataError');
+        throw lazyDOMException('Invalid keyData', 'DataError');
 
       keyObject = type === kKeyTypePrivate ?
         new PrivateKeyObject(handle) :
diff --git a/test/parallel/test-webcrypto-export-import-cfrg.js b/test/parallel/test-webcrypto-export-import-cfrg.js
index e24f93519f3770..b704ffb7e90679 100644
--- a/test/parallel/test-webcrypto-export-import-cfrg.js
+++ b/test/parallel/test-webcrypto-export-import-cfrg.js
@@ -329,6 +329,15 @@ async function testImportJwk({ name, publicUsages, privateUsages }, extractable)
       extractable,
       [/* empty usages */]),
     { name: 'SyntaxError', message: 'Usages cannot be empty when importing a private key.' });
+
+  await assert.rejects(
+    subtle.importKey(
+      'jwk',
+      { kty: jwk.kty, /* missing x */ crv: jwk.crv },
+      { name },
+      extractable,
+      publicUsages),
+    { name: 'DataError', message: 'Invalid keyData' });
 }
 
 async function testImportRaw({ name, publicUsages }) {
diff --git a/test/parallel/test-webcrypto-export-import-ec.js b/test/parallel/test-webcrypto-export-import-ec.js
index 1e9edb9d6a8a6d..ec187e38a46c86 100644
--- a/test/parallel/test-webcrypto-export-import-ec.js
+++ b/test/parallel/test-webcrypto-export-import-ec.js
@@ -330,6 +330,15 @@ async function testImportJwk(
       extractable,
       [/* empty usages */]),
     { name: 'SyntaxError', message: 'Usages cannot be empty when importing a private key.' });
+
+  await assert.rejects(
+    subtle.importKey(
+      'jwk',
+      { kty: jwk.kty, /* missing x */ y: jwk.y, crv: jwk.crv },
+      { name, namedCurve },
+      extractable,
+      publicUsages),
+    { name: 'DataError', message: 'Invalid keyData' });
 }
 
 async function testImportRaw({ name, publicUsages }, namedCurve) {
diff --git a/test/parallel/test-webcrypto-export-import-rsa.js b/test/parallel/test-webcrypto-export-import-rsa.js
index bdd3b737021c96..1649d48e544764 100644
--- a/test/parallel/test-webcrypto-export-import-rsa.js
+++ b/test/parallel/test-webcrypto-export-import-rsa.js
@@ -513,6 +513,15 @@ async function testImportJwk(
       extractable,
       [/* empty usages */]),
     { name: 'SyntaxError', message: 'Usages cannot be empty when importing a private key.' });
+
+  await assert.rejects(
+    subtle.importKey(
+      'jwk',
+      { kty: jwk.kty, /* missing e */ n: jwk.n },
+      { name, hash },
+      extractable,
+      publicUsages),
+    { name: 'DataError', message: 'Invalid keyData' });
 }
 
 // combinations to test

From 46c782486ec549791f55fbe84ea915b6574f28e4 Mon Sep 17 00:00:00 2001
From: "Node.js GitHub Bot" 
Date: Mon, 30 Sep 2024 17:04:30 +0000
Subject: [PATCH 46/76] deps: upgrade openssl sources to
 quictls/openssl-3.0.15+quic1

PR-URL: https://github.com/nodejs/node/pull/55184
Reviewed-By: Rafael Gonzaga 
Reviewed-By: Richard Lau 
Reviewed-By: Michael Dawson 
Reviewed-By: Luigi Pinca 
---
 deps/openssl/openssl/CHANGES.md               |  36 +-
 deps/openssl/openssl/CONTRIBUTING.md          |   6 +-
 .../openssl/Configurations/10-main.conf       |  36 ++
 .../openssl/Configurations/15-ios.conf        |   2 +-
 deps/openssl/openssl/Configure                |  10 +-
 deps/openssl/openssl/INSTALL.md               |   4 +-
 deps/openssl/openssl/NEWS.md                  |  15 +
 deps/openssl/openssl/README.md                |   2 +-
 deps/openssl/openssl/VERSION.dat              |   4 +-
 deps/openssl/openssl/apps/cms.c               |   4 +-
 deps/openssl/openssl/apps/dgst.c              |   9 +-
 deps/openssl/openssl/apps/lib/opt.c           |   4 +-
 deps/openssl/openssl/apps/lib/s_cb.c          |   3 +-
 deps/openssl/openssl/apps/smime.c             |   4 +-
 .../openssl/crypto/aes/asm/aesp8-ppc.pl       | 147 +++--
 deps/openssl/openssl/crypto/aes/build.info    |   4 +
 deps/openssl/openssl/crypto/asn1/a_d2i_fp.c   |   5 +-
 deps/openssl/openssl/crypto/asn1/a_mbstr.c    |  14 +-
 deps/openssl/openssl/crypto/asn1/a_strex.c    |  11 +-
 deps/openssl/openssl/crypto/asn1/a_verify.c   |   4 +-
 deps/openssl/openssl/crypto/asn1/tasn_fre.c   |   8 +-
 deps/openssl/openssl/crypto/bio/bf_readbuff.c |   7 +-
 deps/openssl/openssl/crypto/bio/bio_addr.c    |  12 +-
 deps/openssl/openssl/crypto/cmp/cmp_vfy.c     |   4 +-
 deps/openssl/openssl/crypto/conf/conf_def.c   |   4 +-
 deps/openssl/openssl/crypto/conf/conf_lib.c   |   5 +-
 deps/openssl/openssl/crypto/conf/conf_sap.c   |   4 +-
 deps/openssl/openssl/crypto/context.c         |   4 +-
 deps/openssl/openssl/crypto/ec/ecdsa_ossl.c   |  12 +-
 .../openssl/openssl/crypto/engine/eng_table.c |   8 +-
 .../crypto/evp/ctrl_params_translate.c        |   5 +-
 deps/openssl/openssl/crypto/evp/digest.c      |   4 +-
 deps/openssl/openssl/crypto/evp/names.c       |  36 +-
 deps/openssl/openssl/crypto/evp/pmeth_lib.c   |  11 +-
 deps/openssl/openssl/crypto/o_str.c           |   6 +-
 deps/openssl/openssl/crypto/perlasm/x86asm.pl |   4 +-
 deps/openssl/openssl/crypto/pkcs12/p12_crt.c  |  17 +-
 deps/openssl/openssl/crypto/pkcs7/pk7_doit.c  |  45 +-
 .../openssl/crypto/property/property.c        |  55 +-
 deps/openssl/openssl/crypto/rand/randfile.c   |  13 +-
 deps/openssl/openssl/crypto/rsa/rsa_oaep.c    |   4 +-
 deps/openssl/openssl/crypto/x509/v3_utl.c     |  80 ++-
 deps/openssl/openssl/crypto/x509/x_name.c     |   6 +-
 .../openssl/doc/HOWTO/certificates.txt        |   2 +-
 deps/openssl/openssl/doc/fingerprints.txt     |   3 -
 .../openssl/doc/man1/openssl-enc.pod.in       |  13 +-
 .../doc/man1/openssl-passphrase-options.pod   |  24 +-
 .../openssl/doc/man1/openssl-s_client.pod.in  |   8 +-
 .../openssl/doc/man1/openssl-s_server.pod.in  |   7 +-
 .../doc/man1/openssl-verification-options.pod |   4 +-
 .../openssl/doc/man3/ASN1_INTEGER_new.pod     |   3 +-
 .../openssl/doc/man3/ASYNC_WAIT_CTX_new.pod   |   5 +-
 deps/openssl/openssl/doc/man3/BIO_ADDR.pod    |   3 +-
 .../openssl/openssl/doc/man3/BIO_ADDRINFO.pod |   4 +-
 .../openssl/openssl/doc/man3/BIO_f_base64.pod |  26 +-
 .../openssl/openssl/doc/man3/BIO_meth_new.pod |   4 +-
 deps/openssl/openssl/doc/man3/BN_add.pod      |  22 +-
 .../openssl/doc/man3/BN_generate_prime.pod    |   5 +-
 deps/openssl/openssl/doc/man3/BN_set_bit.pod  |   9 +-
 deps/openssl/openssl/doc/man3/BUF_MEM_new.pod |   3 +-
 .../doc/man3/CRYPTO_THREAD_run_once.pod       |  12 +-
 .../openssl/doc/man3/CTLOG_STORE_new.pod      |   4 +-
 deps/openssl/openssl/doc/man3/CTLOG_new.pod   |   4 +-
 .../doc/man3/CT_POLICY_EVAL_CTX_new.pod       |   5 +-
 deps/openssl/openssl/doc/man3/DH_meth_new.pod |   4 +-
 deps/openssl/openssl/doc/man3/DSA_SIG_new.pod |   3 +-
 .../openssl/openssl/doc/man3/DSA_meth_new.pod |   4 +-
 .../openssl/doc/man3/ECDSA_SIG_new.pod        |   3 +-
 deps/openssl/openssl/doc/man3/ENGINE_add.pod  |   5 +-
 .../openssl/doc/man3/EVP_ASYM_CIPHER_free.pod |   4 +-
 .../openssl/doc/man3/EVP_CIPHER_meth_new.pod  |   3 +-
 .../openssl/doc/man3/EVP_DigestInit.pod       |  10 +-
 .../openssl/doc/man3/EVP_EncodeInit.pod       |   4 +-
 .../openssl/doc/man3/EVP_EncryptInit.pod      |  19 +-
 .../openssl/openssl/doc/man3/EVP_KEM_free.pod |   3 +-
 .../openssl/doc/man3/EVP_KEYEXCH_free.pod     |   4 +-
 deps/openssl/openssl/doc/man3/EVP_KEYMGMT.pod |   3 +-
 .../openssl/doc/man3/EVP_MD_meth_new.pod      |   3 +-
 .../openssl/doc/man3/EVP_PKEY_ASN1_METHOD.pod |   4 +-
 .../openssl/doc/man3/EVP_PKEY_meth_new.pod    |   4 +-
 deps/openssl/openssl/doc/man3/EVP_RAND.pod    |   4 +-
 .../openssl/doc/man3/EVP_SIGNATURE.pod        |   4 +-
 deps/openssl/openssl/doc/man3/HMAC.pod        |   4 +-
 deps/openssl/openssl/doc/man3/MD5.pod         |  15 +-
 .../openssl/openssl/doc/man3/NCONF_new_ex.pod |   4 +-
 .../openssl/doc/man3/OCSP_REQUEST_new.pod     |   3 +-
 .../openssl/doc/man3/OCSP_cert_to_id.pod      |   3 +-
 .../openssl/doc/man3/OCSP_response_status.pod |   3 +-
 .../openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod  |   4 +-
 .../openssl/doc/man3/OPENSSL_init_crypto.pod  |   3 +-
 .../openssl/doc/man3/OPENSSL_malloc.pod       |   5 +-
 .../doc/man3/OPENSSL_secure_malloc.pod        |   8 +-
 .../openssl/doc/man3/OSSL_CMP_CTX_new.pod     |   8 +-
 .../openssl/doc/man3/OSSL_CMP_SRV_CTX_new.pod |   3 +-
 .../doc/man3/OSSL_CMP_validate_msg.pod        |   9 +-
 .../openssl/openssl/doc/man3/OSSL_DECODER.pod |   3 +-
 .../openssl/doc/man3/OSSL_DECODER_CTX.pod     |   3 +-
 .../man3/OSSL_DECODER_CTX_new_for_pkey.pod    |   4 +-
 .../openssl/openssl/doc/man3/OSSL_ENCODER.pod |   3 +-
 .../openssl/doc/man3/OSSL_ENCODER_CTX.pod     |   3 +-
 .../openssl/doc/man3/OSSL_HTTP_REQ_CTX.pod    |   3 +-
 .../openssl/openssl/doc/man3/OSSL_LIB_CTX.pod |   4 +-
 .../openssl/doc/man3/OSSL_PARAM_BLD.pod       |   3 +-
 .../openssl/doc/man3/OSSL_PARAM_dup.pod       |   3 +-
 .../openssl/doc/man3/OSSL_SELF_TEST_new.pod   |   3 +-
 .../openssl/doc/man3/OSSL_STORE_INFO.pod      |   3 +-
 .../openssl/doc/man3/OSSL_STORE_LOADER.pod    |  23 +-
 .../openssl/doc/man3/OSSL_STORE_SEARCH.pod    |   3 +-
 .../doc/man3/PEM_read_bio_PrivateKey.pod      |   6 +-
 .../openssl/doc/man3/RAND_set_DRBG_type.pod   |   4 +-
 .../openssl/openssl/doc/man3/RSA_meth_new.pod |   4 +-
 deps/openssl/openssl/doc/man3/SCT_new.pod     |   8 +-
 .../doc/man3/SSL_CTX_set_alpn_select_cb.pod   |  28 +-
 .../doc/man3/SSL_CTX_set_cipher_list.pod      |   4 +-
 .../man3/SSL_CTX_set_tlsext_ticket_key_cb.pod |   8 +-
 .../openssl/doc/man3/TS_RESP_CTX_new.pod      |   3 +-
 .../openssl/doc/man3/X509V3_get_d2i.pod       |   3 +-
 deps/openssl/openssl/doc/man3/X509_LOOKUP.pod |   3 +-
 .../openssl/doc/man3/X509_LOOKUP_meth_new.pod |   3 +-
 .../openssl/doc/man3/X509_STORE_new.pod       |   3 +-
 deps/openssl/openssl/doc/man3/X509_dup.pod    |   2 +-
 deps/openssl/openssl/doc/man3/X509_new.pod    |   7 +-
 deps/openssl/openssl/doc/man3/d2i_X509.pod    |   6 +-
 .../openssl/doc/man7/EVP_KEYEXCH-DH.pod       |  11 +-
 deps/openssl/openssl/doc/man7/EVP_PKEY-DH.pod |  62 +-
 deps/openssl/openssl/doc/man7/ossl_store.pod  |   9 +-
 deps/openssl/openssl/fuzz/bignum.c            |   9 +-
 .../openssl/include/crypto/aes_platform.h     |   4 +-
 deps/openssl/openssl/include/crypto/bn.h      |   2 +-
 deps/openssl/openssl/include/crypto/bn_conf.h |   1 -
 .../openssl/openssl/include/crypto/dso_conf.h |   1 -
 deps/openssl/openssl/include/openssl/asn1.h   |   1 -
 deps/openssl/openssl/include/openssl/asn1t.h  |   1 -
 deps/openssl/openssl/include/openssl/bio.h    |   1 -
 deps/openssl/openssl/include/openssl/cmp.h    |   1 -
 deps/openssl/openssl/include/openssl/cms.h    |   1 -
 deps/openssl/openssl/include/openssl/conf.h   |   1 -
 .../openssl/include/openssl/configuration.h   |   1 -
 deps/openssl/openssl/include/openssl/crmf.h   |   1 -
 deps/openssl/openssl/include/openssl/crypto.h |   1 -
 deps/openssl/openssl/include/openssl/ct.h     |   1 -
 deps/openssl/openssl/include/openssl/err.h    |   1 -
 deps/openssl/openssl/include/openssl/ess.h    |   1 -
 .../openssl/openssl/include/openssl/fipskey.h |   1 -
 deps/openssl/openssl/include/openssl/lhash.h  |   1 -
 deps/openssl/openssl/include/openssl/ocsp.h   |   1 -
 .../openssl/include/openssl/opensslv.h        |   1 -
 deps/openssl/openssl/include/openssl/pkcs12.h |   1 -
 deps/openssl/openssl/include/openssl/pkcs7.h  |   1 -
 .../openssl/include/openssl/safestack.h       |   1 -
 deps/openssl/openssl/include/openssl/srp.h    |   1 -
 deps/openssl/openssl/include/openssl/ssl.h    |   1 -
 deps/openssl/openssl/include/openssl/tls1.h   |   4 +-
 deps/openssl/openssl/include/openssl/ui.h     |   1 -
 deps/openssl/openssl/include/openssl/x509.h   |   1 -
 .../openssl/include/openssl/x509_vfy.h        |   1 -
 deps/openssl/openssl/include/openssl/x509v3.h |   1 -
 .../openssl/providers/fips-sources.checksums  |  18 +-
 deps/openssl/openssl/providers/fips.checksum  |   2 +-
 .../encode_decode/decode_der2key.c            |  35 +-
 .../providers/implementations/rands/drbg.c    |   5 +
 deps/openssl/openssl/ssl/bio_ssl.c            |   4 +-
 deps/openssl/openssl/ssl/ssl_lib.c            |  63 +-
 deps/openssl/openssl/ssl/ssl_sess.c           |  34 +-
 deps/openssl/openssl/ssl/statem/extensions.c  |  14 +-
 .../openssl/ssl/statem/extensions_clnt.c      |  29 +-
 .../openssl/ssl/statem/extensions_srvr.c      |  34 +-
 deps/openssl/openssl/ssl/statem/statem_lib.c  |   6 +-
 deps/openssl/openssl/ssl/t1_lib.c             |   2 +
 deps/openssl/openssl/test/build.info          |   6 +-
 deps/openssl/openssl/test/crltest.c           |  65 +-
 deps/openssl/openssl/test/endecode_test.c     |  22 +-
 deps/openssl/openssl/test/evp_byname_test.c   |  40 ++
 deps/openssl/openssl/test/evp_extra_test.c    |  21 +
 deps/openssl/openssl/test/helpers/handshake.c |   8 +-
 deps/openssl/openssl/test/hexstr_test.c       |  11 +-
 deps/openssl/openssl/test/prov_config_test.c  |   9 +-
 .../openssl/test/provider_fallback_test.c     |  14 +-
 .../openssl/test/provider_internal_test.c     |   4 +-
 deps/openssl/openssl/test/provider_test.c     |   3 +-
 .../test/recipes/03-test_fipsinstall.t        |  44 +-
 .../openssl/test/recipes/04-test_conf.t       |   3 +-
 .../04-test_conf_data/oversized_line.cnf      |   3 +
 .../04-test_conf_data/oversized_line.txt      |   4 +
 .../openssl/test/recipes/25-test_eai_data.t   |  14 +-
 .../recipes/25-test_eai_data/kdc-cert.pem     |  21 +
 .../25-test_eai_data/kdc-root-cert.pem        |  16 +
 .../test/recipes/25-test_eai_data/kdc.sh      |  41 ++
 .../openssl/test/recipes/30-test_evp_byname.t |  16 +
 .../recipes/30-test_evp_data/evppkey_dsa.txt  |   6 +-
 .../30-test_evp_data/evppkey_ecdsa.txt        |   3 +-
 .../30-test_evp_data/evppkey_rsa_common.txt   |   3 +-
 .../openssl/test/recipes/70-test_npn.t        |  73 +++
 .../openssl/openssl/test/ssl-tests/08-npn.cnf | 553 ++++++++++--------
 .../openssl/test/ssl-tests/08-npn.cnf.in      |  37 +-
 .../openssl/test/ssl-tests/09-alpn.cnf        |  66 ++-
 .../openssl/test/ssl-tests/09-alpn.cnf.in     |  35 +-
 deps/openssl/openssl/test/sslapitest.c        | 370 +++++++++++-
 .../openssl/util/check-format-commit.sh       | 171 ++++++
 .../util/check-format-test-negatives.c        |   5 +-
 deps/openssl/openssl/util/check-format.pl     |  13 +-
 .../openssl/util/perl/OpenSSL/Test/Utils.pm   |  18 +-
 .../openssl/util/perl/TLSProxy/Message.pm     |  11 +-
 .../openssl/util/perl/TLSProxy/NextProto.pm   |  54 ++
 .../openssl/util/perl/TLSProxy/Proxy.pm       |   3 +-
 205 files changed, 2458 insertions(+), 863 deletions(-)
 delete mode 100644 deps/openssl/openssl/include/crypto/bn_conf.h
 delete mode 100644 deps/openssl/openssl/include/crypto/dso_conf.h
 delete mode 100644 deps/openssl/openssl/include/openssl/asn1.h
 delete mode 100644 deps/openssl/openssl/include/openssl/asn1t.h
 delete mode 100644 deps/openssl/openssl/include/openssl/bio.h
 delete mode 100644 deps/openssl/openssl/include/openssl/cmp.h
 delete mode 100644 deps/openssl/openssl/include/openssl/cms.h
 delete mode 100644 deps/openssl/openssl/include/openssl/conf.h
 delete mode 100644 deps/openssl/openssl/include/openssl/configuration.h
 delete mode 100644 deps/openssl/openssl/include/openssl/crmf.h
 delete mode 100644 deps/openssl/openssl/include/openssl/crypto.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ct.h
 delete mode 100644 deps/openssl/openssl/include/openssl/err.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ess.h
 delete mode 100644 deps/openssl/openssl/include/openssl/fipskey.h
 delete mode 100644 deps/openssl/openssl/include/openssl/lhash.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ocsp.h
 delete mode 100644 deps/openssl/openssl/include/openssl/opensslv.h
 delete mode 100644 deps/openssl/openssl/include/openssl/pkcs12.h
 delete mode 100644 deps/openssl/openssl/include/openssl/pkcs7.h
 delete mode 100644 deps/openssl/openssl/include/openssl/safestack.h
 delete mode 100644 deps/openssl/openssl/include/openssl/srp.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ssl.h
 delete mode 100644 deps/openssl/openssl/include/openssl/ui.h
 delete mode 100644 deps/openssl/openssl/include/openssl/x509.h
 delete mode 100644 deps/openssl/openssl/include/openssl/x509_vfy.h
 delete mode 100644 deps/openssl/openssl/include/openssl/x509v3.h
 create mode 100644 deps/openssl/openssl/test/evp_byname_test.c
 create mode 100644 deps/openssl/openssl/test/recipes/04-test_conf_data/oversized_line.cnf
 create mode 100644 deps/openssl/openssl/test/recipes/04-test_conf_data/oversized_line.txt
 create mode 100644 deps/openssl/openssl/test/recipes/25-test_eai_data/kdc-cert.pem
 create mode 100644 deps/openssl/openssl/test/recipes/25-test_eai_data/kdc-root-cert.pem
 create mode 100755 deps/openssl/openssl/test/recipes/25-test_eai_data/kdc.sh
 create mode 100644 deps/openssl/openssl/test/recipes/30-test_evp_byname.t
 create mode 100644 deps/openssl/openssl/test/recipes/70-test_npn.t
 create mode 100755 deps/openssl/openssl/util/check-format-commit.sh
 create mode 100644 deps/openssl/openssl/util/perl/TLSProxy/NextProto.pm

diff --git a/deps/openssl/openssl/CHANGES.md b/deps/openssl/openssl/CHANGES.md
index 8538330a7bac35..be359160542604 100644
--- a/deps/openssl/openssl/CHANGES.md
+++ b/deps/openssl/openssl/CHANGES.md
@@ -28,12 +28,36 @@ breaking changes, and mappings for the large list of deprecated functions.
 
 [Migration guide]: https://github.com/openssl/openssl/tree/master/doc/man7/migration_guide.pod
 
-### Changes between 3.0.14 and 3.0.14+quic [7 Jun 2024]
+### Changes between 3.0.15 and 3.0.15+quic [3 Sep 2024]
 
 * Add QUIC API support from BoringSSL
 
    *Todd Short*
 
+### Changes between 3.0.14 and 3.0.15 [3 Sep 2024]
+
+ * Fixed possible denial of service in X.509 name checks.
+
+   Applications performing certificate name checks (e.g., TLS clients checking
+   server certificates) may attempt to read an invalid memory address when
+   comparing the expected name with an `otherName` subject alternative name of
+   an X.509 certificate. This may result in an exception that terminates the
+   application program.
+
+   ([CVE-2024-6119])
+
+   *Viktor Dukhovni*
+
+ * Fixed possible buffer overread in SSL_select_next_proto().
+
+   Calling the OpenSSL API function SSL_select_next_proto with an empty
+   supported client protocols buffer may cause a crash or memory contents
+   to be sent to the peer.
+
+   ([CVE-2024-5535])
+
+   *Matt Caswell*
+
 ### Changes between 3.0.13 and 3.0.14 [4 Jun 2024]
 
  * Fixed potential use after free after SSL_free_buffers() is called.
@@ -76,6 +100,14 @@ breaking changes, and mappings for the large list of deprecated functions.
 
    *Tomáš Mráz*
 
+ * Improved EC/DSA nonce generation routines to avoid bias and timing
+   side channel leaks.
+
+   Thanks to Florian Sieck from Universität zu Lübeck and George Pantelakis
+   and Hubert Kario from Red Hat for reporting the issues.
+
+   *Tomáš Mráz and Paul Dale*
+
  * Fixed an issue where some non-default TLS server configurations can cause
    unbounded memory growth when processing TLSv1.3 sessions. An attacker may
    exploit certain server configurations to trigger unbounded memory growth that
@@ -19896,6 +19928,8 @@ ndif
 
 
 
+[CVE-2024-6119]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-6119
+[CVE-2024-5535]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-5535
 [CVE-2024-4741]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4741
 [CVE-2024-4603]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4603
 [CVE-2024-2511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-2511
diff --git a/deps/openssl/openssl/CONTRIBUTING.md b/deps/openssl/openssl/CONTRIBUTING.md
index fec6616e21fe2e..cced15347d0542 100644
--- a/deps/openssl/openssl/CONTRIBUTING.md
+++ b/deps/openssl/openssl/CONTRIBUTING.md
@@ -3,7 +3,7 @@ HOW TO CONTRIBUTE TO OpenSSL
 
 Please visit our [Getting Started] page for other ideas about how to contribute.
 
-  [Getting Started]: 
+  [Getting Started]: 
 
 Development is done on GitHub in the [openssl/openssl] repository.
 
@@ -77,8 +77,8 @@ guidelines:
     Clean builds via GitHub Actions are required. They are started automatically
     whenever a PR is created or updated by committers.
 
-    [coding style]: https://www.openssl.org/policies/technical/coding-style.html
-    [documentation policy]: https://openssl.org/policies/technical/documentation-policy.html
+    [coding style]: https://openssl-library.org/policies/technical/coding-style/
+    [documentation policy]: https://openssl-library.org/policies/technical/documentation-policy/
 
  5. When at all possible, code contributions should include tests. These can
     either be added to an existing test, or completely new.  Please see
diff --git a/deps/openssl/openssl/Configurations/10-main.conf b/deps/openssl/openssl/Configurations/10-main.conf
index 1155d9859c5624..e74adb50cc3cd3 100644
--- a/deps/openssl/openssl/Configurations/10-main.conf
+++ b/deps/openssl/openssl/Configurations/10-main.conf
@@ -1264,6 +1264,25 @@ my %targets = (
         AR               => add("-X32"),
         RANLIB           => add("-X32"),
     },
+    # To enable openxl compiler for aix
+    # If 17.1 openxl runtime is available, -latomic can be used
+    # instead of -DBROKEN_CLANG_ATOMICS
+    "aix-clang" => {
+        inherit_from     => [ "aix-common" ],
+        CC               => "ibm-clang",
+        CFLAGS           => picker(debug   => "-O0 -g",
+                                   release => "-O"),
+        cflags           => combine("-Wno-implicit-function-declaration -mcmodel=large -DBROKEN_CLANG_ATOMICS",
+                            threads("-pthread")),
+        ex_libs          => add(threads("-pthread")),
+        bn_ops           => "BN_LLONG RC4_CHAR",
+        asm_arch         => 'ppc32',
+        perlasm_scheme   => "aix32",
+        shared_cflag     => "-fpic",
+        shared_ldflag    => add("-shared"),
+        AR               => add("-X32"),
+        RANLIB           => add("-X32"),
+    },
     "aix64-cc" => {
         inherit_from     => [ "aix-common" ],
         CC               => "cc",
@@ -1282,6 +1301,23 @@ my %targets = (
         AR               => add("-X64"),
         RANLIB           => add("-X64"),
     },
+    "aix64-clang" => {
+        inherit_from     => [ "aix-common" ],
+        CC               => "ibm-clang",
+        CFLAGS           => picker(debug   => "-O0 -g",
+                                   release => "-O"),
+        cflags           => combine("-maix64 -Wno-implicit-function-declaration -mcmodel=large",
+                            threads("-pthread")),
+        ex_libs          => add(threads("-pthread")),
+        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
+        asm_arch         => 'ppc64',
+        perlasm_scheme   => "aix64",
+        shared_cflag     => "-fpic",
+        shared_ldflag    => add("-shared"),
+        shared_extension => "64.so.\$(SHLIB_VERSION_NUMBER)",
+        AR               => add("-X64"),
+        RANLIB           => add("-X64"),
+    },
 
 # SIEMENS BS2000/OSD: an EBCDIC-based mainframe
     "BS2000-OSD" => {
diff --git a/deps/openssl/openssl/Configurations/15-ios.conf b/deps/openssl/openssl/Configurations/15-ios.conf
index 81e3d68bc7f096..84c9cfeb3a1400 100644
--- a/deps/openssl/openssl/Configurations/15-ios.conf
+++ b/deps/openssl/openssl/Configurations/15-ios.conf
@@ -10,7 +10,7 @@ my %targets = (
         template         => 1,
         inherit_from     => [ "darwin-common" ],
         sys_id           => "iOS",
-        disable          => [ "shared", "async" ],
+        disable          => [ "async" ],
     },
     "ios-xcrun" => {
         inherit_from     => [ "ios-common" ],
diff --git a/deps/openssl/openssl/Configure b/deps/openssl/openssl/Configure
index 5b6cca0af0c743..1aa660a46c4dc4 100755
--- a/deps/openssl/openssl/Configure
+++ b/deps/openssl/openssl/Configure
@@ -178,7 +178,6 @@ my @gcc_devteam_warn = qw(
 #       -Wextended-offsetof -- no, needed in CMS ASN1 code
 my @clang_devteam_warn = qw(
     -Wno-unknown-warning-option
-    -Wswitch-default
     -Wno-parentheses-equality
     -Wno-language-extension-token
     -Wno-extended-offsetof
@@ -1586,7 +1585,7 @@ if (!$disabled{makedepend}) {
     disable('unavailable', 'makedepend') unless $config{makedep_scheme};
 }
 
-if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS') {
+if (!$disabled{asm} && !$predefined_C{__MACH__} && $^O ne 'VMS' && !$predefined_C{_AIX}) {
     # probe for -Wa,--noexecstack option...
     if ($predefined_C{__clang__}) {
         # clang has builtin assembler, which doesn't recognize --help,
@@ -3410,6 +3409,13 @@ sub absolutedir {
         return rel2abs($dir);
     }
 
+    # realpath() on Windows seems to check if the directory actually exists,
+    # which isn't what is wanted here.  All we want to know is if a directory
+    # spec is absolute, not if it exists.
+    if ($^O eq "MSWin32") {
+        return rel2abs($dir);
+    }
+
     # We use realpath() on Unix, since no other will properly clean out
     # a directory spec.
     use Cwd qw/realpath/;
diff --git a/deps/openssl/openssl/INSTALL.md b/deps/openssl/openssl/INSTALL.md
index df683ab1936d14..107a9b56e4c689 100644
--- a/deps/openssl/openssl/INSTALL.md
+++ b/deps/openssl/openssl/INSTALL.md
@@ -1168,7 +1168,7 @@ Configure OpenSSL
 ### Automatic Configuration
 
 In previous version, the `config` script determined the platform type and
-compiler and then called `Configure`. Starting with this release, they are
+compiler and then called `Configure`. Starting with version 3.0, they are
 the same.
 
 #### Unix / Linux / macOS
@@ -1622,7 +1622,7 @@ More about our support resources can be found in the [SUPPORT] file.
 
 ### Configuration Errors
 
-If the `./Configure` or `./Configure` command fails with an error message,
+If the `./config` or `./Configure` command fails with an error message,
 read the error message carefully and try to figure out whether you made
 a mistake (e.g., by providing a wrong option), or whether the script is
 working incorrectly. If you think you encountered a bug, please
diff --git a/deps/openssl/openssl/NEWS.md b/deps/openssl/openssl/NEWS.md
index fb231bcd845989..e0a81703ee8dc3 100644
--- a/deps/openssl/openssl/NEWS.md
+++ b/deps/openssl/openssl/NEWS.md
@@ -18,6 +18,19 @@ OpenSSL Releases
 OpenSSL 3.0
 -----------
 
+### Major changes between OpenSSL 3.0.14 and OpenSSL 3.0.15 [3 Sep 2024]
+
+OpenSSL 3.0.15 is a security patch release. The most severe CVE fixed in this
+release is Moderate.
+
+This release incorporates the following bug fixes and mitigations:
+
+  * Fixed possible denial of service in X.509 name checks
+    ([CVE-2024-6119])
+
+  * Fixed possible buffer overread in SSL_select_next_proto()
+    ([CVE-2024-5535])
+
 ### Major changes between OpenSSL 3.0.13 and OpenSSL 3.0.14 [4 Jun 2024]
 
   * Fixed potential use after free after SSL_free_buffers() is called
@@ -1482,6 +1495,8 @@ OpenSSL 0.9.x
 
 
 
+[CVE-2024-6119]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-6119
+[CVE-2024-5535]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-5535
 [CVE-2024-4741]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4741
 [CVE-2024-4603]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-4603
 [CVE-2024-2511]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-2511
diff --git a/deps/openssl/openssl/README.md b/deps/openssl/openssl/README.md
index 9b057e1f2c51c1..702cc3979a1826 100644
--- a/deps/openssl/openssl/README.md
+++ b/deps/openssl/openssl/README.md
@@ -4,7 +4,7 @@ What This Is
 This is a fork of [OpenSSL](https://www.openssl.org) to enable QUIC. In addition
 to the website, the official source distribution is at
 . The OpenSSL `README` can be found at
-[README-OpenSSL.md](https://github.com/quictls/openssl/blob/openssl-3.0.13%2Bquic/README-OpenSSL.md)
+[README-OpenSSL.md](https://github.com/quictls/openssl/blob/openssl-3.0.15%2Bquic/README-OpenSSL.md)
 
 This fork adds APIs that can be used by QUIC implementations for connection
 handshakes. Quoting the IETF Working group
diff --git a/deps/openssl/openssl/VERSION.dat b/deps/openssl/openssl/VERSION.dat
index 3bfe1788aec005..9f3b18e8899778 100644
--- a/deps/openssl/openssl/VERSION.dat
+++ b/deps/openssl/openssl/VERSION.dat
@@ -1,7 +1,7 @@
 MAJOR=3
 MINOR=0
-PATCH=14
+PATCH=15
 PRE_RELEASE_TAG=
 BUILD_METADATA=quic
-RELEASE_DATE="4 Jun 2024"
+RELEASE_DATE="3 Sep 2024"
 SHLIB_VERSION=81.3
diff --git a/deps/openssl/openssl/apps/cms.c b/deps/openssl/openssl/apps/cms.c
index 3994cb0fcd58cf..abb9f196a76090 100644
--- a/deps/openssl/openssl/apps/cms.c
+++ b/deps/openssl/openssl/apps/cms.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2008-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -132,7 +132,7 @@ const OPTIONS cms_options[] = {
     {"binary", OPT_BINARY, '-',
      "Treat input as binary: do not translate to canonical form"},
     {"crlfeol", OPT_CRLFEOL, '-',
-     "Use CRLF as EOL termination instead of CR only" },
+     "Use CRLF as EOL termination instead of LF only" },
     {"asciicrlf", OPT_ASCIICRLF, '-',
      "Perform CRLF canonicalisation when signing"},
 
diff --git a/deps/openssl/openssl/apps/dgst.c b/deps/openssl/openssl/apps/dgst.c
index 3f02af0d5738ab..51383bec26ca07 100644
--- a/deps/openssl/openssl/apps/dgst.c
+++ b/deps/openssl/openssl/apps/dgst.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -478,7 +478,7 @@ int dgst_main(int argc, char **argv)
 static void show_digests(const OBJ_NAME *name, void *arg)
 {
     struct doall_dgst_digests *dec = (struct doall_dgst_digests *)arg;
-    const EVP_MD *md = NULL;
+    EVP_MD *md = NULL;
 
     /* Filter out signed digests (a.k.a signature algorithms) */
     if (strstr(name->name, "rsa") != NULL || strstr(name->name, "RSA") != NULL)
@@ -490,8 +490,7 @@ static void show_digests(const OBJ_NAME *name, void *arg)
     /* Filter out message digests that we cannot use */
     md = EVP_MD_fetch(app_get0_libctx(), name->name, app_get0_propq());
     if (md == NULL) {
-        md = EVP_get_digestbyname(name->name);
-        if (md == NULL)
+        if (EVP_get_digestbyname(name->name) == NULL)
             return;
     }
 
@@ -502,6 +501,8 @@ static void show_digests(const OBJ_NAME *name, void *arg)
     } else {
         BIO_printf(dec->bio, " ");
     }
+
+    EVP_MD_free(md);
 }
 
 /*
diff --git a/deps/openssl/openssl/apps/lib/opt.c b/deps/openssl/openssl/apps/lib/opt.c
index d56964dbe7ba9a..88db9ad6947b54 100644
--- a/deps/openssl/openssl/apps/lib/opt.c
+++ b/deps/openssl/openssl/apps/lib/opt.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -616,7 +616,7 @@ int opt_uintmax(const char *value, ossl_uintmax_t *result)
         opt_number_error(value);
         return 0;
     }
-    *result = (ossl_intmax_t)m;
+    *result = (ossl_uintmax_t)m;
     errno = oerrno;
     return 1;
 }
diff --git a/deps/openssl/openssl/apps/lib/s_cb.c b/deps/openssl/openssl/apps/lib/s_cb.c
index 7881c166762657..6440b496099e2d 100644
--- a/deps/openssl/openssl/apps/lib/s_cb.c
+++ b/deps/openssl/openssl/apps/lib/s_cb.c
@@ -649,7 +649,7 @@ void msg_cb(int write_p, int version, int content_type, const void *buf,
     (void)BIO_flush(bio);
 }
 
-static STRINT_PAIR tlsext_types[] = {
+static const STRINT_PAIR tlsext_types[] = {
     {"server name", TLSEXT_TYPE_server_name},
     {"max fragment length", TLSEXT_TYPE_max_fragment_length},
     {"client certificate URL", TLSEXT_TYPE_client_certificate_url},
@@ -688,6 +688,7 @@ static STRINT_PAIR tlsext_types[] = {
     {"psk kex modes", TLSEXT_TYPE_psk_kex_modes},
     {"certificate authorities", TLSEXT_TYPE_certificate_authorities},
     {"post handshake auth", TLSEXT_TYPE_post_handshake_auth},
+    {"early_data", TLSEXT_TYPE_early_data},
     {NULL}
 };
 
diff --git a/deps/openssl/openssl/apps/smime.c b/deps/openssl/openssl/apps/smime.c
index 52b4a01c232f9f..651294e46daa92 100644
--- a/deps/openssl/openssl/apps/smime.c
+++ b/deps/openssl/openssl/apps/smime.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -118,7 +118,7 @@ const OPTIONS smime_options[] = {
      "Do not load certificates from the default certificates store"},
     {"nochain", OPT_NOCHAIN, '-',
      "set PKCS7_NOCHAIN so certificates contained in the message are not used as untrusted CAs" },
-    {"crlfeol", OPT_CRLFEOL, '-', "Use CRLF as EOL termination instead of CR only"},
+    {"crlfeol", OPT_CRLFEOL, '-', "Use CRLF as EOL termination instead of LF only"},
 
     OPT_R_OPTIONS,
     OPT_V_OPTIONS,
diff --git a/deps/openssl/openssl/crypto/aes/asm/aesp8-ppc.pl b/deps/openssl/openssl/crypto/aes/asm/aesp8-ppc.pl
index 60cf86f52aed20..f7f78d04b0e13f 100755
--- a/deps/openssl/openssl/crypto/aes/asm/aesp8-ppc.pl
+++ b/deps/openssl/openssl/crypto/aes/asm/aesp8-ppc.pl
@@ -1,5 +1,5 @@
 #! /usr/bin/env perl
-# Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved.
+# Copyright 2014-2024 The OpenSSL Project Authors. All Rights Reserved.
 #
 # Licensed under the Apache License 2.0 (the "License").  You may not use
 # this file except in compliance with the License.  You can obtain a copy
@@ -99,11 +99,12 @@
 .long	0x1b000000, 0x1b000000, 0x1b000000, 0x1b000000	?rev
 .long	0x0d0e0f0c, 0x0d0e0f0c, 0x0d0e0f0c, 0x0d0e0f0c	?rev
 .long	0,0,0,0						?asis
+.long	0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe
 Lconsts:
 	mflr	r0
 	bcl	20,31,\$+4
 	mflr	$ptr	 #vvvvv "distance between . and rcon
-	addi	$ptr,$ptr,-0x48
+	addi	$ptr,$ptr,-0x58
 	mtlr	r0
 	blr
 	.long	0
@@ -2405,7 +2406,7 @@ ()
 my $key_=$key2;
 my ($x00,$x10,$x20,$x30,$x40,$x50,$x60,$x70)=map("r$_",(0,3,26..31));
     $x00=0 if ($flavour =~ /osx/);
-my ($in0,  $in1,  $in2,  $in3,  $in4,  $in5 )=map("v$_",(0..5));
+my ($in0,  $in1,  $in2,  $in3,  $in4,  $in5)=map("v$_",(0..5));
 my ($out0, $out1, $out2, $out3, $out4, $out5)=map("v$_",(7,12..16));
 my ($twk0, $twk1, $twk2, $twk3, $twk4, $twk5)=map("v$_",(17..22));
 my $rndkey0="v23";	# v24-v25 rotating buffer for first found keys
@@ -2460,6 +2461,18 @@ ()
 	li		$x70,0x70
 	mtspr		256,r0
 
+	# Reverse eighty7 to 0x010101..87
+	xxlor		2, 32+$eighty7, 32+$eighty7
+	vsldoi		$eighty7,$tmp,$eighty7,1	# 0x010101..87
+	xxlor		1, 32+$eighty7, 32+$eighty7
+
+	# Load XOR contents. 0xf102132435465768798a9bacbdcedfe
+	mr		$x70, r6
+	bl		Lconsts
+	lxvw4x		0, $x40, r6		# load XOR contents
+	mr		r6, $x70
+	li		$x70,0x70
+
 	subi		$rounds,$rounds,3	# -4 in total
 
 	lvx		$rndkey0,$x00,$key1	# load key schedule
@@ -2502,69 +2515,77 @@ ()
 	?vperm		v31,v31,$twk5,$keyperm
 	lvx		v25,$x10,$key_		# pre-load round[2]
 
+	# Switch to use the following codes with 0x010101..87 to generate tweak.
+	#     eighty7 = 0x010101..87
+	# vsrab		tmp, tweak, seven	# next tweak value, right shift 7 bits
+	# vand		tmp, tmp, eighty7	# last byte with carry
+	# vaddubm	tweak, tweak, tweak	# left shift 1 bit (x2)
+	# xxlor		vsx, 0, 0
+	# vpermxor	tweak, tweak, tmp, vsx
+
 	 vperm		$in0,$inout,$inptail,$inpperm
 	 subi		$inp,$inp,31		# undo "caller"
 	vxor		$twk0,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out0,$in0,$twk0
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in1, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in1
 
 	 lvx_u		$in1,$x10,$inp
 	vxor		$twk1,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in1,$in1,$in1,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out1,$in1,$twk1
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in2, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in2
 
 	 lvx_u		$in2,$x20,$inp
 	 andi.		$taillen,$len,15
 	vxor		$twk2,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in2,$in2,$in2,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out2,$in2,$twk2
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in3, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in3
 
 	 lvx_u		$in3,$x30,$inp
 	 sub		$len,$len,$taillen
 	vxor		$twk3,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in3,$in3,$in3,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out3,$in3,$twk3
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in4, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in4
 
 	 lvx_u		$in4,$x40,$inp
 	 subi		$len,$len,0x60
 	vxor		$twk4,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in4,$in4,$in4,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out4,$in4,$twk4
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in5, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in5
 
 	 lvx_u		$in5,$x50,$inp
 	 addi		$inp,$inp,0x60
 	vxor		$twk5,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in5,$in5,$in5,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out5,$in5,$twk5
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in0, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in0
 
 	vxor		v31,v31,$rndkey0
 	mtctr		$rounds
@@ -2590,6 +2611,8 @@ ()
 	lvx		v25,$x10,$key_		# round[4]
 	bdnz		Loop_xts_enc6x
 
+	xxlor		32+$eighty7, 1, 1		# 0x010101..87
+
 	subic		$len,$len,96		# $len-=96
 	 vxor		$in0,$twk0,v31		# xor with last round key
 	vcipher		$out0,$out0,v24
@@ -2599,7 +2622,6 @@ ()
 	 vaddubm	$tweak,$tweak,$tweak
 	vcipher		$out2,$out2,v24
 	vcipher		$out3,$out3,v24
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vcipher		$out4,$out4,v24
 	vcipher		$out5,$out5,v24
 
@@ -2607,7 +2629,8 @@ ()
 	 vand		$tmp,$tmp,$eighty7
 	vcipher		$out0,$out0,v25
 	vcipher		$out1,$out1,v25
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in1, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in1
 	vcipher		$out2,$out2,v25
 	vcipher		$out3,$out3,v25
 	 vxor		$in1,$twk1,v31
@@ -2618,13 +2641,13 @@ ()
 
 	and		r0,r0,$len
 	 vaddubm	$tweak,$tweak,$tweak
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vcipher		$out0,$out0,v26
 	vcipher		$out1,$out1,v26
 	 vand		$tmp,$tmp,$eighty7
 	vcipher		$out2,$out2,v26
 	vcipher		$out3,$out3,v26
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in2, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in2
 	vcipher		$out4,$out4,v26
 	vcipher		$out5,$out5,v26
 
@@ -2638,7 +2661,6 @@ ()
 	 vaddubm	$tweak,$tweak,$tweak
 	vcipher		$out0,$out0,v27
 	vcipher		$out1,$out1,v27
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vcipher		$out2,$out2,v27
 	vcipher		$out3,$out3,v27
 	 vand		$tmp,$tmp,$eighty7
@@ -2646,7 +2668,8 @@ ()
 	vcipher		$out5,$out5,v27
 
 	addi		$key_,$sp,$FRAME+15	# rewind $key_
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in3, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in3
 	vcipher		$out0,$out0,v28
 	vcipher		$out1,$out1,v28
 	 vxor		$in3,$twk3,v31
@@ -2655,7 +2678,6 @@ ()
 	vcipher		$out2,$out2,v28
 	vcipher		$out3,$out3,v28
 	 vaddubm	$tweak,$tweak,$tweak
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vcipher		$out4,$out4,v28
 	vcipher		$out5,$out5,v28
 	lvx		v24,$x00,$key_		# re-pre-load round[1]
@@ -2663,7 +2685,8 @@ ()
 
 	vcipher		$out0,$out0,v29
 	vcipher		$out1,$out1,v29
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in4, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in4
 	vcipher		$out2,$out2,v29
 	vcipher		$out3,$out3,v29
 	 vxor		$in4,$twk4,v31
@@ -2673,14 +2696,14 @@ ()
 	vcipher		$out5,$out5,v29
 	lvx		v25,$x10,$key_		# re-pre-load round[2]
 	 vaddubm	$tweak,$tweak,$tweak
-	 vsldoi		$tmp,$tmp,$tmp,15
 
 	vcipher		$out0,$out0,v30
 	vcipher		$out1,$out1,v30
 	 vand		$tmp,$tmp,$eighty7
 	vcipher		$out2,$out2,v30
 	vcipher		$out3,$out3,v30
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in5, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in5
 	vcipher		$out4,$out4,v30
 	vcipher		$out5,$out5,v30
 	 vxor		$in5,$twk5,v31
@@ -2690,7 +2713,6 @@ ()
 	vcipherlast	$out0,$out0,$in0
 	 lvx_u		$in0,$x00,$inp		# load next input block
 	 vaddubm	$tweak,$tweak,$tweak
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vcipherlast	$out1,$out1,$in1
 	 lvx_u		$in1,$x10,$inp
 	vcipherlast	$out2,$out2,$in2
@@ -2703,7 +2725,10 @@ ()
 	vcipherlast	$out4,$out4,$in4
 	 le?vperm	$in2,$in2,$in2,$leperm
 	 lvx_u		$in4,$x40,$inp
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		10, 32+$in0, 32+$in0
+	 xxlor		32+$in0, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in0
+	 xxlor		32+$in0, 10, 10
 	vcipherlast	$tmp,$out5,$in5		# last block might be needed
 						# in stealing mode
 	 le?vperm	$in3,$in3,$in3,$leperm
@@ -2736,6 +2761,8 @@ ()
 	mtctr		$rounds
 	beq		Loop_xts_enc6x		# did $len-=96 borrow?
 
+	xxlor		32+$eighty7, 2, 2		# 0x870101..01
+
 	addic.		$len,$len,0x60
 	beq		Lxts_enc6x_zero
 	cmpwi		$len,0x20
@@ -3112,6 +3139,18 @@ ()
 	li		$x70,0x70
 	mtspr		256,r0
 
+	# Reverse eighty7 to 0x010101..87
+	xxlor		2, 32+$eighty7, 32+$eighty7
+	vsldoi		$eighty7,$tmp,$eighty7,1	# 0x010101..87
+	xxlor		1, 32+$eighty7, 32+$eighty7
+
+	# Load XOR contents. 0xf102132435465768798a9bacbdcedfe
+	mr		$x70, r6
+	bl		Lconsts
+	lxvw4x		0, $x40, r6		# load XOR contents
+	mr		r6, $x70
+	li		$x70,0x70
+
 	subi		$rounds,$rounds,3	# -4 in total
 
 	lvx		$rndkey0,$x00,$key1	# load key schedule
@@ -3159,64 +3198,64 @@ ()
 	vxor		$twk0,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out0,$in0,$twk0
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in1, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in1
 
 	 lvx_u		$in1,$x10,$inp
 	vxor		$twk1,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in1,$in1,$in1,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out1,$in1,$twk1
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in2, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in2
 
 	 lvx_u		$in2,$x20,$inp
 	 andi.		$taillen,$len,15
 	vxor		$twk2,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in2,$in2,$in2,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out2,$in2,$twk2
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in3, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in3
 
 	 lvx_u		$in3,$x30,$inp
 	 sub		$len,$len,$taillen
 	vxor		$twk3,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in3,$in3,$in3,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out3,$in3,$twk3
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in4, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in4
 
 	 lvx_u		$in4,$x40,$inp
 	 subi		$len,$len,0x60
 	vxor		$twk4,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in4,$in4,$in4,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out4,$in4,$twk4
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in5, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in5
 
 	 lvx_u		$in5,$x50,$inp
 	 addi		$inp,$inp,0x60
 	vxor		$twk5,$tweak,$rndkey0
 	vsrab		$tmp,$tweak,$seven	# next tweak value
 	vaddubm		$tweak,$tweak,$tweak
-	vsldoi		$tmp,$tmp,$tmp,15
 	 le?vperm	$in5,$in5,$in5,$leperm
 	vand		$tmp,$tmp,$eighty7
 	 vxor		$out5,$in5,$twk5
-	vxor		$tweak,$tweak,$tmp
+	xxlor		32+$in0, 0, 0
+	vpermxor	$tweak, $tweak, $tmp, $in0
 
 	vxor		v31,v31,$rndkey0
 	mtctr		$rounds
@@ -3242,6 +3281,8 @@ ()
 	lvx		v25,$x10,$key_		# round[4]
 	bdnz		Loop_xts_dec6x
 
+	xxlor		32+$eighty7, 1, 1
+
 	subic		$len,$len,96		# $len-=96
 	 vxor		$in0,$twk0,v31		# xor with last round key
 	vncipher	$out0,$out0,v24
@@ -3251,7 +3292,6 @@ ()
 	 vaddubm	$tweak,$tweak,$tweak
 	vncipher	$out2,$out2,v24
 	vncipher	$out3,$out3,v24
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vncipher	$out4,$out4,v24
 	vncipher	$out5,$out5,v24
 
@@ -3259,7 +3299,8 @@ ()
 	 vand		$tmp,$tmp,$eighty7
 	vncipher	$out0,$out0,v25
 	vncipher	$out1,$out1,v25
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in1, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in1
 	vncipher	$out2,$out2,v25
 	vncipher	$out3,$out3,v25
 	 vxor		$in1,$twk1,v31
@@ -3270,13 +3311,13 @@ ()
 
 	and		r0,r0,$len
 	 vaddubm	$tweak,$tweak,$tweak
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vncipher	$out0,$out0,v26
 	vncipher	$out1,$out1,v26
 	 vand		$tmp,$tmp,$eighty7
 	vncipher	$out2,$out2,v26
 	vncipher	$out3,$out3,v26
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in2, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in2
 	vncipher	$out4,$out4,v26
 	vncipher	$out5,$out5,v26
 
@@ -3290,7 +3331,6 @@ ()
 	 vaddubm	$tweak,$tweak,$tweak
 	vncipher	$out0,$out0,v27
 	vncipher	$out1,$out1,v27
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vncipher	$out2,$out2,v27
 	vncipher	$out3,$out3,v27
 	 vand		$tmp,$tmp,$eighty7
@@ -3298,7 +3338,8 @@ ()
 	vncipher	$out5,$out5,v27
 
 	addi		$key_,$sp,$FRAME+15	# rewind $key_
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in3, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in3
 	vncipher	$out0,$out0,v28
 	vncipher	$out1,$out1,v28
 	 vxor		$in3,$twk3,v31
@@ -3307,7 +3348,6 @@ ()
 	vncipher	$out2,$out2,v28
 	vncipher	$out3,$out3,v28
 	 vaddubm	$tweak,$tweak,$tweak
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vncipher	$out4,$out4,v28
 	vncipher	$out5,$out5,v28
 	lvx		v24,$x00,$key_		# re-pre-load round[1]
@@ -3315,7 +3355,8 @@ ()
 
 	vncipher	$out0,$out0,v29
 	vncipher	$out1,$out1,v29
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in4, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in4
 	vncipher	$out2,$out2,v29
 	vncipher	$out3,$out3,v29
 	 vxor		$in4,$twk4,v31
@@ -3325,14 +3366,14 @@ ()
 	vncipher	$out5,$out5,v29
 	lvx		v25,$x10,$key_		# re-pre-load round[2]
 	 vaddubm	$tweak,$tweak,$tweak
-	 vsldoi		$tmp,$tmp,$tmp,15
 
 	vncipher	$out0,$out0,v30
 	vncipher	$out1,$out1,v30
 	 vand		$tmp,$tmp,$eighty7
 	vncipher	$out2,$out2,v30
 	vncipher	$out3,$out3,v30
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		32+$in5, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in5
 	vncipher	$out4,$out4,v30
 	vncipher	$out5,$out5,v30
 	 vxor		$in5,$twk5,v31
@@ -3342,7 +3383,6 @@ ()
 	vncipherlast	$out0,$out0,$in0
 	 lvx_u		$in0,$x00,$inp		# load next input block
 	 vaddubm	$tweak,$tweak,$tweak
-	 vsldoi		$tmp,$tmp,$tmp,15
 	vncipherlast	$out1,$out1,$in1
 	 lvx_u		$in1,$x10,$inp
 	vncipherlast	$out2,$out2,$in2
@@ -3355,7 +3395,10 @@ ()
 	vncipherlast	$out4,$out4,$in4
 	 le?vperm	$in2,$in2,$in2,$leperm
 	 lvx_u		$in4,$x40,$inp
-	 vxor		$tweak,$tweak,$tmp
+	 xxlor		10, 32+$in0, 32+$in0
+	 xxlor		32+$in0, 0, 0
+	 vpermxor	$tweak, $tweak, $tmp, $in0
+	 xxlor		32+$in0, 10, 10
 	vncipherlast	$out5,$out5,$in5
 	 le?vperm	$in3,$in3,$in3,$leperm
 	 lvx_u		$in5,$x50,$inp
@@ -3386,6 +3429,8 @@ ()
 	mtctr		$rounds
 	beq		Loop_xts_dec6x		# did $len-=96 borrow?
 
+	xxlor		32+$eighty7, 2, 2
+
 	addic.		$len,$len,0x60
 	beq		Lxts_dec6x_zero
 	cmpwi		$len,0x20
diff --git a/deps/openssl/openssl/crypto/aes/build.info b/deps/openssl/openssl/crypto/aes/build.info
index 271015e35e1bb8..d6ad4ea3d0681e 100644
--- a/deps/openssl/openssl/crypto/aes/build.info
+++ b/deps/openssl/openssl/crypto/aes/build.info
@@ -38,7 +38,11 @@ IF[{- !$disabled{asm} -}]
   $AESASM_parisc20_64=$AESASM_parisc11
   $AESDEF_parisc20_64=$AESDEF_parisc11
 
+  IF[{- $target{sys_id} ne "MACOSX" -}]
   $AESASM_ppc32=aes_core.c aes_cbc.c aes-ppc.s vpaes-ppc.s aesp8-ppc.s
+  ELSE
+    $AESASM_ppc32=aes_core.c aes_cbc.c aes-ppc.s vpaes-ppc.s
+  ENDIF
   $AESDEF_ppc32=AES_ASM VPAES_ASM
   $AESASM_ppc64=$AESASM_ppc32
   $AESDEF_ppc64=$AESDEF_ppc32
diff --git a/deps/openssl/openssl/crypto/asn1/a_d2i_fp.c b/deps/openssl/openssl/crypto/asn1/a_d2i_fp.c
index e8602053f974f9..bd549215b4008e 100644
--- a/deps/openssl/openssl/crypto/asn1/a_d2i_fp.c
+++ b/deps/openssl/openssl/crypto/asn1/a_d2i_fp.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -148,6 +148,9 @@ int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb)
                     goto err;
                 }
                 len += i;
+                if ((size_t)i < want)
+                    continue;
+
             }
         }
         /* else data already loaded */
diff --git a/deps/openssl/openssl/crypto/asn1/a_mbstr.c b/deps/openssl/openssl/crypto/asn1/a_mbstr.c
index 22dea873eeba56..bca1458ad6a175 100644
--- a/deps/openssl/openssl/crypto/asn1/a_mbstr.c
+++ b/deps/openssl/openssl/crypto/asn1/a_mbstr.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -139,9 +139,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
     if (*out) {
         free_out = 0;
         dest = *out;
-        OPENSSL_free(dest->data);
-        dest->data = NULL;
-        dest->length = 0;
+        ASN1_STRING_set0(dest, NULL, 0);
         dest->type = str_type;
     } else {
         free_out = 1;
@@ -155,6 +153,10 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
     /* If both the same type just copy across */
     if (inform == outform) {
         if (!ASN1_STRING_set(dest, in, len)) {
+            if (free_out) {
+                ASN1_STRING_free(dest);
+                *out = NULL;
+            }
             ERR_raise(ERR_LIB_ASN1, ERR_R_MALLOC_FAILURE);
             return -1;
         }
@@ -185,8 +187,10 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
         break;
     }
     if ((p = OPENSSL_malloc(outlen + 1)) == NULL) {
-        if (free_out)
+        if (free_out) {
             ASN1_STRING_free(dest);
+            *out = NULL;
+        }
         ERR_raise(ERR_LIB_ASN1, ERR_R_MALLOC_FAILURE);
         return -1;
     }
diff --git a/deps/openssl/openssl/crypto/asn1/a_strex.c b/deps/openssl/openssl/crypto/asn1/a_strex.c
index b31761aae6f52c..a6049f7dd2ed95 100644
--- a/deps/openssl/openssl/crypto/asn1/a_strex.c
+++ b/deps/openssl/openssl/crypto/asn1/a_strex.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -10,6 +10,7 @@
 #include 
 #include 
 #include "internal/cryptlib.h"
+#include "internal/sizes.h"
 #include "crypto/asn1.h"
 #include 
 #include 
@@ -345,8 +346,10 @@ static int do_print_ex(char_io *io_ch, void *arg, unsigned long lflags,
 
     if (lflags & ASN1_STRFLGS_SHOW_TYPE) {
         const char *tagname;
+
         tagname = ASN1_tag2str(type);
-        outlen += strlen(tagname);
+        /* We can directly cast here as tagname will never be too large. */
+        outlen += (int)strlen(tagname);
         if (!io_ch(arg, tagname, outlen) || !io_ch(arg, ":", 1))
             return -1;
         outlen++;
@@ -372,7 +375,7 @@ static int do_print_ex(char_io *io_ch, void *arg, unsigned long lflags,
 
     if (type == -1) {
         len = do_dump(lflags, io_ch, arg, str);
-        if (len < 0)
+        if (len < 0 || len > INT_MAX - outlen)
             return -1;
         outlen += len;
         return outlen;
@@ -391,7 +394,7 @@ static int do_print_ex(char_io *io_ch, void *arg, unsigned long lflags,
     }
 
     len = do_buf(str->data, str->length, type, flags, "es, io_ch, NULL);
-    if (len < 0)
+    if (len < 0 || len > INT_MAX - 2 - outlen)
         return -1;
     outlen += len;
     if (quotes)
diff --git a/deps/openssl/openssl/crypto/asn1/a_verify.c b/deps/openssl/openssl/crypto/asn1/a_verify.c
index 9bf9bdd14ecc56..66809bd6d2ff53 100644
--- a/deps/openssl/openssl/crypto/asn1/a_verify.c
+++ b/deps/openssl/openssl/crypto/asn1/a_verify.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -203,10 +203,12 @@ int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg,
     inl = ASN1_item_i2d(data, &buf_in, it);
     if (inl <= 0) {
         ERR_raise(ERR_LIB_ASN1, ERR_R_INTERNAL_ERROR);
+        ret = -1;
         goto err;
     }
     if (buf_in == NULL) {
         ERR_raise(ERR_LIB_ASN1, ERR_R_MALLOC_FAILURE);
+        ret = -1;
         goto err;
     }
     inll = inl;
diff --git a/deps/openssl/openssl/crypto/asn1/tasn_fre.c b/deps/openssl/openssl/crypto/asn1/tasn_fre.c
index 13aa6a728e2cce..f8068832ab674f 100644
--- a/deps/openssl/openssl/crypto/asn1/tasn_fre.c
+++ b/deps/openssl/openssl/crypto/asn1/tasn_fre.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -85,8 +85,12 @@ void ossl_asn1_item_embed_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int embed
 
     case ASN1_ITYPE_NDEF_SEQUENCE:
     case ASN1_ITYPE_SEQUENCE:
-        if (ossl_asn1_do_lock(pval, -1, it) != 0) /* if error or ref-counter > 0 */
+        if (ossl_asn1_do_lock(pval, -1, it) != 0) {
+            /* if error or ref-counter > 0 */
+            OPENSSL_assert(embed == 0);
+            *pval = NULL;
             return;
+        }
         if (asn1_cb) {
             i = asn1_cb(ASN1_OP_FREE_PRE, pval, it, NULL);
             if (i == 2)
diff --git a/deps/openssl/openssl/crypto/bio/bf_readbuff.c b/deps/openssl/openssl/crypto/bio/bf_readbuff.c
index 135ccef83bf3c4..2409c9db97cc6d 100644
--- a/deps/openssl/openssl/crypto/bio/bf_readbuff.c
+++ b/deps/openssl/openssl/crypto/bio/bf_readbuff.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -222,10 +222,13 @@ static int readbuffer_gets(BIO *b, char *buf, int size)
     char *p;
     int i, j;
 
-    if (size == 0)
+    if (buf == NULL || size == 0)
         return 0;
     --size; /* the passed in size includes the terminator - so remove it here */
     ctx = (BIO_F_BUFFER_CTX *)b->ptr;
+
+    if (ctx == NULL || b->next_bio == NULL)
+        return 0;
     BIO_clear_retry_flags(b);
 
     /* If data is already buffered then use this first */
diff --git a/deps/openssl/openssl/crypto/bio/bio_addr.c b/deps/openssl/openssl/crypto/bio/bio_addr.c
index a80774bbd7cac9..04d62f45b198ef 100644
--- a/deps/openssl/openssl/crypto/bio/bio_addr.c
+++ b/deps/openssl/openssl/crypto/bio/bio_addr.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -778,14 +778,12 @@ int BIO_lookup_ex(const char *host, const char *service, int lookup_type,
 
         if (!RUN_ONCE(&bio_lookup_init, do_bio_lookup_init)) {
             ERR_raise(ERR_LIB_BIO, ERR_R_MALLOC_FAILURE);
-            ret = 0;
-            goto err;
+            return 0;
         }
 
-        if (!CRYPTO_THREAD_write_lock(bio_lookup_lock)) {
-            ret = 0;
-            goto err;
-        }
+        if (!CRYPTO_THREAD_write_lock(bio_lookup_lock))
+            return 0;
+        
         he_fallback_address = INADDR_ANY;
         if (host == NULL) {
             he = &he_fallback;
diff --git a/deps/openssl/openssl/crypto/cmp/cmp_vfy.c b/deps/openssl/openssl/crypto/cmp/cmp_vfy.c
index 7ce91ec5d16792..b9951045c2e863 100644
--- a/deps/openssl/openssl/crypto/cmp/cmp_vfy.c
+++ b/deps/openssl/openssl/crypto/cmp/cmp_vfy.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright Nokia 2007-2020
  * Copyright Siemens AG 2015-2020
  *
@@ -619,7 +619,7 @@ int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg)
     default:
         scrt = ctx->srvCert;
         if (scrt == NULL) {
-            if (ctx->trusted == NULL) {
+            if (ctx->trusted == NULL && ctx->secretValue != NULL) {
                 ossl_cmp_info(ctx, "no trust store nor pinned server cert available for verifying signature-based CMP message protection");
                 ERR_raise(ERR_LIB_CMP, CMP_R_MISSING_TRUST_ANCHOR);
                 return 0;
diff --git a/deps/openssl/openssl/crypto/conf/conf_def.c b/deps/openssl/openssl/crypto/conf/conf_def.c
index 5acc90b69e1c99..cda2f3e267924f 100644
--- a/deps/openssl/openssl/crypto/conf/conf_def.c
+++ b/deps/openssl/openssl/crypto/conf/conf_def.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -332,7 +332,7 @@ static int def_load_bio(CONF *conf, BIO *in, long *line)
 
         v = NULL;
         /* check for line continuation */
-        if (bufnum >= 1) {
+        if (!again && bufnum >= 1) {
             /*
              * If we have bytes and the last char '\\' and second last char
              * is not '\\'
diff --git a/deps/openssl/openssl/crypto/conf/conf_lib.c b/deps/openssl/openssl/crypto/conf/conf_lib.c
index a2360035257a97..719af7cb75c60c 100644
--- a/deps/openssl/openssl/crypto/conf/conf_lib.c
+++ b/deps/openssl/openssl/crypto/conf/conf_lib.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -464,6 +464,9 @@ int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
 
 void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings)
 {
+    if (settings == NULL)
+        return;
+
     free(settings->filename);
     free(settings->appname);
     free(settings);
diff --git a/deps/openssl/openssl/crypto/conf/conf_sap.c b/deps/openssl/openssl/crypto/conf/conf_sap.c
index 3019bcf31af81a..106434dcbf3d79 100644
--- a/deps/openssl/openssl/crypto/conf/conf_sap.c
+++ b/deps/openssl/openssl/crypto/conf/conf_sap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2002-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -38,6 +38,8 @@ void OPENSSL_config(const char *appname)
         settings.appname = strdup(appname);
     settings.flags = DEFAULT_CONF_MFLAGS;
     OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, &settings);
+
+    free(settings.appname);
 }
 #endif
 
diff --git a/deps/openssl/openssl/crypto/context.c b/deps/openssl/openssl/crypto/context.c
index 548665fba265f4..ac6938e619eb1d 100644
--- a/deps/openssl/openssl/crypto/context.c
+++ b/deps/openssl/openssl/crypto/context.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -240,7 +240,7 @@ int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file)
 
 void OSSL_LIB_CTX_free(OSSL_LIB_CTX *ctx)
 {
-    if (ossl_lib_ctx_is_default(ctx))
+    if (ctx == NULL || ossl_lib_ctx_is_default(ctx))
         return;
 
 #ifndef FIPS_MODULE
diff --git a/deps/openssl/openssl/crypto/ec/ecdsa_ossl.c b/deps/openssl/openssl/crypto/ec/ecdsa_ossl.c
index 4b54a30cf9bcd2..775b7ec911bef1 100644
--- a/deps/openssl/openssl/crypto/ec/ecdsa_ossl.c
+++ b/deps/openssl/openssl/crypto/ec/ecdsa_ossl.c
@@ -130,7 +130,11 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in,
         ERR_raise(ERR_LIB_EC, ERR_R_EC_LIB);
         goto err;
     }
-    order = EC_GROUP_get0_order(group);
+
+    if ((order = EC_GROUP_get0_order(group)) == NULL) {
+        ERR_raise(ERR_LIB_EC, ERR_R_EC_LIB);
+        goto err;
+    }
 
     /* Preallocate space */
     order_bits = BN_num_bits(order);
@@ -255,7 +259,11 @@ ECDSA_SIG *ossl_ecdsa_simple_sign_sig(const unsigned char *dgst, int dgst_len,
         goto err;
     }
 
-    order = EC_GROUP_get0_order(group);
+    if ((order = EC_GROUP_get0_order(group)) == NULL) {
+        ERR_raise(ERR_LIB_EC, ERR_R_EC_LIB);
+        goto err;
+    }
+
     i = BN_num_bits(order);
     /*
      * Need to truncate digest if it is too long: first truncate whole bytes.
diff --git a/deps/openssl/openssl/crypto/engine/eng_table.c b/deps/openssl/openssl/crypto/engine/eng_table.c
index 9dc3144bbfd7b6..6280965cc0265f 100644
--- a/deps/openssl/openssl/crypto/engine/eng_table.c
+++ b/deps/openssl/openssl/crypto/engine/eng_table.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -215,9 +215,11 @@ ENGINE *ossl_engine_table_select(ENGINE_TABLE **table, int nid,
                    f, l, nid);
         return NULL;
     }
-    ERR_set_mark();
+
     if (!CRYPTO_THREAD_write_lock(global_engine_lock))
-        goto end;
+        return NULL;
+
+    ERR_set_mark();
     /*
      * Check again inside the lock otherwise we could race against cleanup
      * operations. But don't worry about a debug printout
diff --git a/deps/openssl/openssl/crypto/evp/ctrl_params_translate.c b/deps/openssl/openssl/crypto/evp/ctrl_params_translate.c
index dcd53b43f92b9c..de6c215e205a22 100644
--- a/deps/openssl/openssl/crypto/evp/ctrl_params_translate.c
+++ b/deps/openssl/openssl/crypto/evp/ctrl_params_translate.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2021-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -2777,7 +2777,7 @@ static int evp_pkey_ctx_setget_params_to_ctrl(EVP_PKEY_CTX *pctx,
         fixup_args_fn *fixup = default_fixup_args;
         int ret;
 
-        tmpl.action_type = action_type;
+        ctx.action_type = tmpl.action_type = action_type;
         tmpl.keytype1 = tmpl.keytype2 = keytype;
         tmpl.optype = optype;
         tmpl.param_key = params->key;
@@ -2786,7 +2786,6 @@ static int evp_pkey_ctx_setget_params_to_ctrl(EVP_PKEY_CTX *pctx,
         if (translation != NULL) {
             if (translation->fixup_args != NULL)
                 fixup = translation->fixup_args;
-            ctx.action_type = translation->action_type;
             ctx.ctrl_cmd = translation->ctrl_num;
         }
         ctx.pctx = pctx;
diff --git a/deps/openssl/openssl/crypto/evp/digest.c b/deps/openssl/openssl/crypto/evp/digest.c
index eefed523ec1256..aca05186ec10ed 100644
--- a/deps/openssl/openssl/crypto/evp/digest.c
+++ b/deps/openssl/openssl/crypto/evp/digest.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -409,7 +409,7 @@ int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data, size_t count)
 
     /* Code below to be removed when legacy support is dropped. */
  legacy:
-    return ctx->update(ctx, data, count);
+    return ctx->update != NULL ? ctx->update(ctx, data, count) : 0;
 }
 
 /* The caller can assume that this removes any secret data from the context */
diff --git a/deps/openssl/openssl/crypto/evp/names.c b/deps/openssl/openssl/crypto/evp/names.c
index 19c03a3085e843..7ff850f9975304 100644
--- a/deps/openssl/openssl/crypto/evp/names.c
+++ b/deps/openssl/openssl/crypto/evp/names.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -78,6 +78,7 @@ const EVP_CIPHER *evp_get_cipherbyname_ex(OSSL_LIB_CTX *libctx,
     const EVP_CIPHER *cp;
     OSSL_NAMEMAP *namemap;
     int id;
+    int do_retry = 1;
 
     if (!OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL))
         return NULL;
@@ -94,9 +95,21 @@ const EVP_CIPHER *evp_get_cipherbyname_ex(OSSL_LIB_CTX *libctx,
      */
 
     namemap = ossl_namemap_stored(libctx);
+ retry:
     id = ossl_namemap_name2num(namemap, name);
-    if (id == 0)
-        return NULL;
+    if (id == 0) {
+        EVP_CIPHER *fetched_cipher;
+
+        /* Try to fetch it because the name might not be known yet. */
+        if (!do_retry)
+            return NULL;
+        do_retry = 0;
+        ERR_set_mark();
+        fetched_cipher = EVP_CIPHER_fetch(libctx, name, NULL);
+        EVP_CIPHER_free(fetched_cipher);
+        ERR_pop_to_mark();
+        goto retry;
+    }
 
     if (!ossl_namemap_doall_names(namemap, id, cipher_from_name, &cp))
         return NULL;
@@ -124,6 +137,7 @@ const EVP_MD *evp_get_digestbyname_ex(OSSL_LIB_CTX *libctx, const char *name)
     const EVP_MD *dp;
     OSSL_NAMEMAP *namemap;
     int id;
+    int do_retry = 1;
 
     if (!OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL))
         return NULL;
@@ -140,9 +154,21 @@ const EVP_MD *evp_get_digestbyname_ex(OSSL_LIB_CTX *libctx, const char *name)
      */
 
     namemap = ossl_namemap_stored(libctx);
+ retry:
     id = ossl_namemap_name2num(namemap, name);
-    if (id == 0)
-        return NULL;
+    if (id == 0) {
+        EVP_MD *fetched_md;
+
+        /* Try to fetch it because the name might not be known yet. */
+        if (!do_retry)
+            return NULL;
+        do_retry = 0;
+        ERR_set_mark();
+        fetched_md = EVP_MD_fetch(libctx, name, NULL);
+        EVP_MD_free(fetched_md);
+        ERR_pop_to_mark();
+        goto retry;
+    }
 
     if (!ossl_namemap_doall_names(namemap, id, digest_from_name, &dp))
         return NULL;
diff --git a/deps/openssl/openssl/crypto/evp/pmeth_lib.c b/deps/openssl/openssl/crypto/evp/pmeth_lib.c
index cffd88725c85a8..5cd0c4b27f6db3 100644
--- a/deps/openssl/openssl/crypto/evp/pmeth_lib.c
+++ b/deps/openssl/openssl/crypto/evp/pmeth_lib.c
@@ -1034,6 +1034,7 @@ static int evp_pkey_ctx_add1_octet_string(EVP_PKEY_CTX *ctx, int fallback,
                                           int datalen)
 {
     OSSL_PARAM os_params[2];
+    const OSSL_PARAM *gettables;
     unsigned char *info = NULL;
     size_t info_len = 0;
     size_t info_alloc = 0;
@@ -1057,6 +1058,12 @@ static int evp_pkey_ctx_add1_octet_string(EVP_PKEY_CTX *ctx, int fallback,
         return 1;
     }
 
+    /* Check for older provider that doesn't support getting this parameter */
+    gettables = EVP_PKEY_CTX_gettable_params(ctx);
+    if (gettables == NULL || OSSL_PARAM_locate_const(gettables, param) == NULL)
+        return evp_pkey_ctx_set1_octet_string(ctx, fallback, param, op, ctrl,
+                                              data, datalen);
+
     /* Get the original value length */
     os_params[0] = OSSL_PARAM_construct_octet_string(param, NULL, 0);
     os_params[1] = OSSL_PARAM_construct_end();
@@ -1064,9 +1071,9 @@ static int evp_pkey_ctx_add1_octet_string(EVP_PKEY_CTX *ctx, int fallback,
     if (!EVP_PKEY_CTX_get_params(ctx, os_params))
         return 0;
 
-    /* Older provider that doesn't support getting this parameter */
+    /* This should not happen but check to be sure. */
     if (os_params[0].return_size == OSSL_PARAM_UNMODIFIED)
-        return evp_pkey_ctx_set1_octet_string(ctx, fallback, param, op, ctrl, data, datalen);
+        return 0;
 
     info_alloc = os_params[0].return_size + datalen;
     if (info_alloc == 0)
diff --git a/deps/openssl/openssl/crypto/o_str.c b/deps/openssl/openssl/crypto/o_str.c
index c631f8aff26a60..a6598171535e18 100644
--- a/deps/openssl/openssl/crypto/o_str.c
+++ b/deps/openssl/openssl/crypto/o_str.c
@@ -229,12 +229,14 @@ static int buf2hexstr_sep(char *str, size_t str_n, size_t *strlength,
     int has_sep = (sep != CH_ZERO);
     size_t len = has_sep ? buflen * 3 : 1 + buflen * 2;
 
+    if (len == 0)
+        ++len;
     if (strlength != NULL)
         *strlength = len;
     if (str == NULL)
         return 1;
 
-    if (str_n < (unsigned long)len) {
+    if (str_n < len) {
         ERR_raise(ERR_LIB_CRYPTO, CRYPTO_R_TOO_SMALL_BUFFER);
         return 0;
     }
@@ -246,7 +248,7 @@ static int buf2hexstr_sep(char *str, size_t str_n, size_t *strlength,
         if (has_sep)
             *q++ = sep;
     }
-    if (has_sep)
+    if (has_sep && buflen > 0)
         --q;
     *q = CH_ZERO;
 
diff --git a/deps/openssl/openssl/crypto/perlasm/x86asm.pl b/deps/openssl/openssl/crypto/perlasm/x86asm.pl
index 98a7159a5f131c..8dcde9eacaa3d1 100644
--- a/deps/openssl/openssl/crypto/perlasm/x86asm.pl
+++ b/deps/openssl/openssl/crypto/perlasm/x86asm.pl
@@ -174,9 +174,9 @@ sub ::vprotd
 
 sub ::endbranch
 {
-    &::generic("%ifdef __CET__\n");
+    &::generic("#ifdef __CET__\n");
     &::data_byte(0xf3,0x0f,0x1e,0xfb);
-    &::generic("%endif\n");
+    &::generic("#endif\n");
 }
 
 # label management
diff --git a/deps/openssl/openssl/crypto/pkcs12/p12_crt.c b/deps/openssl/openssl/crypto/pkcs12/p12_crt.c
index 26a444f868b028..1a48e5c611da5c 100644
--- a/deps/openssl/openssl/crypto/pkcs12/p12_crt.c
+++ b/deps/openssl/openssl/crypto/pkcs12/p12_crt.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -213,16 +213,19 @@ PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags,
     if (key_usage && !PKCS8_add_keyusage(p8, key_usage))
         goto err;
     if (nid_key != -1) {
+        /* This call does not take ownership of p8 */
         bag = PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(nid_key, pass, -1, NULL, 0,
                                                      iter, p8, ctx, propq);
-        PKCS8_PRIV_KEY_INFO_free(p8);
-    } else
+    } else {
         bag = PKCS12_SAFEBAG_create0_p8inf(p8);
+        if (bag != NULL)
+           p8 = NULL; /* bag takes ownership of p8 */
+    }
+    /* This does not need to be in the error path */
+    if (p8 != NULL)
+        PKCS8_PRIV_KEY_INFO_free(p8);
 
-    if (!bag)
-        goto err;
-
-    if (!pkcs12_add_bag(pbags, bag))
+    if (bag == NULL || !pkcs12_add_bag(pbags, bag))
         goto err;
 
     return bag;
diff --git a/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c b/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c
index 1cef67b211af77..d7791e5c4f4705 100644
--- a/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c
+++ b/deps/openssl/openssl/crypto/pkcs7/pk7_doit.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -1239,36 +1239,29 @@ static int add_attribute(STACK_OF(X509_ATTRIBUTE) **sk, int nid, int atrtype,
                          void *value)
 {
     X509_ATTRIBUTE *attr = NULL;
+    int i, n;
 
     if (*sk == NULL) {
         if ((*sk = sk_X509_ATTRIBUTE_new_null()) == NULL)
             return 0;
- new_attrib:
-        if ((attr = X509_ATTRIBUTE_create(nid, atrtype, value)) == NULL)
-            return 0;
-        if (!sk_X509_ATTRIBUTE_push(*sk, attr)) {
-            X509_ATTRIBUTE_free(attr);
-            return 0;
-        }
-    } else {
-        int i;
-
-        for (i = 0; i < sk_X509_ATTRIBUTE_num(*sk); i++) {
-            attr = sk_X509_ATTRIBUTE_value(*sk, i);
-            if (OBJ_obj2nid(X509_ATTRIBUTE_get0_object(attr)) == nid) {
-                X509_ATTRIBUTE_free(attr);
-                attr = X509_ATTRIBUTE_create(nid, atrtype, value);
-                if (attr == NULL)
-                    return 0;
-                if (!sk_X509_ATTRIBUTE_set(*sk, i, attr)) {
-                    X509_ATTRIBUTE_free(attr);
-                    return 0;
-                }
-                goto end;
-            }
-        }
-        goto new_attrib;
     }
+    n = sk_X509_ATTRIBUTE_num(*sk);
+    for (i = 0; i < n; i++) {
+        attr = sk_X509_ATTRIBUTE_value(*sk, i);
+        if (OBJ_obj2nid(X509_ATTRIBUTE_get0_object(attr)) == nid)
+            goto end;
+    }
+    if (!sk_X509_ATTRIBUTE_push(*sk, NULL))
+        return 0;
+
  end:
+    attr = X509_ATTRIBUTE_create(nid, atrtype, value);
+    if (attr == NULL) {
+        if (i == n)
+            sk_X509_ATTRIBUTE_pop(*sk);
+        return 0;
+    }
+    X509_ATTRIBUTE_free(sk_X509_ATTRIBUTE_value(*sk, i));
+    (void) sk_X509_ATTRIBUTE_set(*sk, i, attr);
     return 1;
 }
diff --git a/deps/openssl/openssl/crypto/property/property.c b/deps/openssl/openssl/crypto/property/property.c
index 602db0f3ff54e9..75615d39af3664 100644
--- a/deps/openssl/openssl/crypto/property/property.c
+++ b/deps/openssl/openssl/crypto/property/property.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
  * Copyright (c) 2019, Oracle and/or its affiliates.  All rights reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
@@ -95,6 +95,8 @@ typedef struct {
 
 DEFINE_SPARSE_ARRAY_OF(ALGORITHM);
 
+DEFINE_STACK_OF(ALGORITHM)
+
 typedef struct ossl_global_properties_st {
     OSSL_PROPERTY_LIST *list;
 #ifndef FIPS_MODULE
@@ -469,33 +471,45 @@ static void alg_do_one(ALGORITHM *alg, IMPLEMENTATION *impl,
     fn(alg->nid, impl->method.method, fnarg);
 }
 
-struct alg_do_each_data_st {
-    void (*fn)(int id, void *method, void *fnarg);
-    void *fnarg;
-};
-
-static void alg_do_each(ossl_uintmax_t idx, ALGORITHM *alg, void *arg)
+static void alg_copy(ossl_uintmax_t idx, ALGORITHM *alg, void *arg)
 {
-    struct alg_do_each_data_st *data = arg;
-    int i, end = sk_IMPLEMENTATION_num(alg->impls);
-
-    for (i = 0; i < end; i++) {
-        IMPLEMENTATION *impl = sk_IMPLEMENTATION_value(alg->impls, i);
+    STACK_OF(ALGORITHM) *newalg = arg;
 
-        alg_do_one(alg, impl, data->fn, data->fnarg);
-    }
+    (void)sk_ALGORITHM_push(newalg, alg);
 }
 
 void ossl_method_store_do_all(OSSL_METHOD_STORE *store,
                               void (*fn)(int id, void *method, void *fnarg),
                               void *fnarg)
 {
-    struct alg_do_each_data_st data;
+    int i, j;
+    int numalgs, numimps;
+    STACK_OF(ALGORITHM) *tmpalgs;
+    ALGORITHM *alg;
 
-    data.fn = fn;
-    data.fnarg = fnarg;
-    if (store != NULL)
-        ossl_sa_ALGORITHM_doall_arg(store->algs, alg_do_each, &data);
+    if (store != NULL) {
+
+        if (!ossl_property_read_lock(store))
+            return;
+       
+        tmpalgs = sk_ALGORITHM_new_reserve(NULL,
+                                           ossl_sa_ALGORITHM_num(store->algs));
+        if (tmpalgs == NULL) {
+            ossl_property_unlock(store);
+            return;
+        }
+
+        ossl_sa_ALGORITHM_doall_arg(store->algs, alg_copy, tmpalgs);
+        ossl_property_unlock(store);
+        numalgs = sk_ALGORITHM_num(tmpalgs);
+        for (i = 0; i < numalgs; i++) {
+            alg = sk_ALGORITHM_value(tmpalgs, i);
+            numimps = sk_IMPLEMENTATION_num(alg->impls);
+            for (j = 0; j < numimps; j++)
+                alg_do_one(alg, sk_IMPLEMENTATION_value(alg->impls, j), fn, fnarg);
+        }
+        sk_ALGORITHM_free(tmpalgs);
+    }
 }
 
 int ossl_method_store_fetch(OSSL_METHOD_STORE *store,
@@ -651,10 +665,13 @@ static void impl_cache_flush_one_alg(ossl_uintmax_t idx, ALGORITHM *alg,
                                      void *v)
 {
     IMPL_CACHE_FLUSH *state = (IMPL_CACHE_FLUSH *)v;
+    unsigned long orig_down_load = lh_QUERY_get_down_load(alg->cache);
 
     state->cache = alg->cache;
+    lh_QUERY_set_down_load(alg->cache, 0);
     lh_QUERY_doall_IMPL_CACHE_FLUSH(state->cache, &impl_cache_flush_cache,
                                     state);
+    lh_QUERY_set_down_load(alg->cache, orig_down_load);
 }
 
 static void ossl_method_cache_flush_some(OSSL_METHOD_STORE *store)
diff --git a/deps/openssl/openssl/crypto/rand/randfile.c b/deps/openssl/openssl/crypto/rand/randfile.c
index 82f41637387b21..b4854a4c4eabdf 100644
--- a/deps/openssl/openssl/crypto/rand/randfile.c
+++ b/deps/openssl/openssl/crypto/rand/randfile.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -16,6 +16,7 @@
 # include 
 #endif
 
+#include "e_os.h"
 #include "internal/cryptlib.h"
 
 #include 
@@ -208,8 +209,16 @@ int RAND_write_file(const char *file)
          * should be restrictive from the start
          */
         int fd = open(file, O_WRONLY | O_CREAT | O_BINARY, 0600);
-        if (fd != -1)
+
+        if (fd != -1) {
             out = fdopen(fd, "wb");
+            if (out == NULL) {
+                close(fd);
+                ERR_raise_data(ERR_LIB_RAND, RAND_R_CANNOT_OPEN_FILE,
+                               "Filename=%s", file);
+                return -1;
+            }
+        }
     }
 #endif
 
diff --git a/deps/openssl/openssl/crypto/rsa/rsa_oaep.c b/deps/openssl/openssl/crypto/rsa/rsa_oaep.c
index d9be1a4f98c7ba..ffe24edcb6eea3 100644
--- a/deps/openssl/openssl/crypto/rsa/rsa_oaep.c
+++ b/deps/openssl/openssl/crypto/rsa/rsa_oaep.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -186,7 +186,7 @@ int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen,
 
     mdlen = EVP_MD_get_size(md);
 
-    if (tlen <= 0 || flen <= 0)
+    if (tlen <= 0 || flen <= 0 || mdlen <= 0)
         return -1;
     /*
      * |num| is the length of the modulus; |flen| is the length of the
diff --git a/deps/openssl/openssl/crypto/x509/v3_utl.c b/deps/openssl/openssl/crypto/x509/v3_utl.c
index 6e4ef26ed6082d..56ee36d4521ebc 100644
--- a/deps/openssl/openssl/crypto/x509/v3_utl.c
+++ b/deps/openssl/openssl/crypto/x509/v3_utl.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1999-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -916,36 +916,64 @@ static int do_x509_check(X509 *x, const char *chk, size_t chklen,
             ASN1_STRING *cstr;
 
             gen = sk_GENERAL_NAME_value(gens, i);
-            if ((gen->type == GEN_OTHERNAME) && (check_type == GEN_EMAIL)) {
-                if (OBJ_obj2nid(gen->d.otherName->type_id) ==
-                    NID_id_on_SmtpUTF8Mailbox) {
-                    san_present = 1;
-
-                    /*
-                     * If it is not a UTF8String then that is unexpected and we
-                     * treat it as no match
-                     */
-                    if (gen->d.otherName->value->type == V_ASN1_UTF8STRING) {
-                        cstr = gen->d.otherName->value->value.utf8string;
-
-                        /* Positive on success, negative on error! */
-                        if ((rv = do_check_string(cstr, 0, equal, flags,
-                                                chk, chklen, peername)) != 0)
-                            break;
-                    }
-                } else
+            switch (gen->type) {
+            default:
+                continue;
+            case GEN_OTHERNAME:
+		switch (OBJ_obj2nid(gen->d.otherName->type_id)) {
+                default:
                     continue;
-            } else {
-                if ((gen->type != check_type) && (gen->type != GEN_OTHERNAME))
+                case NID_id_on_SmtpUTF8Mailbox:
+                    /*-
+                     * https://datatracker.ietf.org/doc/html/rfc8398#section-3
+                     *
+                     *   Due to name constraint compatibility reasons described
+                     *   in Section 6, SmtpUTF8Mailbox subjectAltName MUST NOT
+                     *   be used unless the local-part of the email address
+                     *   contains non-ASCII characters. When the local-part is
+                     *   ASCII, rfc822Name subjectAltName MUST be used instead
+                     *   of SmtpUTF8Mailbox. This is compatible with legacy
+                     *   software that supports only rfc822Name (and not
+                     *   SmtpUTF8Mailbox). [...]
+                     *
+                     *   SmtpUTF8Mailbox is encoded as UTF8String.
+                     *
+                     * If it is not a UTF8String then that is unexpected, and
+                     * we ignore the invalid SAN (neither set san_present nor
+                     * consider it a candidate for equality).  This does mean
+                     * that the subject CN may be considered, as would be the
+                     * case when the malformed SmtpUtf8Mailbox SAN is instead
+                     * simply absent.
+                     *
+                     * When CN-ID matching is not desirable, applications can
+                     * choose to turn it off, doing so is at this time a best
+                     * practice.
+                     */
+                    if (check_type != GEN_EMAIL
+                        || gen->d.otherName->value->type != V_ASN1_UTF8STRING)
+                        continue;
+                    alt_type = 0;
+                    cstr = gen->d.otherName->value->value.utf8string;
+                    break;
+                }
+                break;
+            case GEN_EMAIL:
+                if (check_type != GEN_EMAIL)
                     continue;
-            }
-            san_present = 1;
-            if (check_type == GEN_EMAIL)
                 cstr = gen->d.rfc822Name;
-            else if (check_type == GEN_DNS)
+                break;
+            case GEN_DNS:
+                if (check_type != GEN_DNS)
+                    continue;
                 cstr = gen->d.dNSName;
-            else
+                break;
+            case GEN_IPADD:
+                if (check_type != GEN_IPADD)
+                    continue;
                 cstr = gen->d.iPAddress;
+                break;
+            }
+            san_present = 1;
             /* Positive on success, negative on error! */
             if ((rv = do_check_string(cstr, alt_type, equal, flags,
                                       chk, chklen, peername)) != 0)
diff --git a/deps/openssl/openssl/crypto/x509/x_name.c b/deps/openssl/openssl/crypto/x509/x_name.c
index 944eb9992486d3..eded80246df91b 100644
--- a/deps/openssl/openssl/crypto/x509/x_name.c
+++ b/deps/openssl/openssl/crypto/x509/x_name.c
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved.
  *
  * Licensed under the Apache License 2.0 (the "License").  You may not use
  * this file except in compliance with the License.  You can obtain a copy
@@ -476,8 +476,8 @@ static int i2d_name_canon(const STACK_OF(STACK_OF_X509_NAME_ENTRY) * _intname,
         v = sk_ASN1_VALUE_value(intname, i);
         ltmp = ASN1_item_ex_i2d(&v, in,
                                 ASN1_ITEM_rptr(X509_NAME_ENTRIES), -1, -1);
-        if (ltmp < 0)
-            return ltmp;
+        if (ltmp < 0 || len > INT_MAX - ltmp)
+            return -1;
         len += ltmp;
     }
     return len;
diff --git a/deps/openssl/openssl/doc/HOWTO/certificates.txt b/deps/openssl/openssl/doc/HOWTO/certificates.txt
index 78ab97b4192800..82ce502a1d3de4 100644
--- a/deps/openssl/openssl/doc/HOWTO/certificates.txt
+++ b/deps/openssl/openssl/doc/HOWTO/certificates.txt
@@ -89,7 +89,7 @@ was kind enough, your certificate is a raw DER thing in PEM format.
 Your key most definitely is if you have followed the examples above.
 However, some (most?) certificate authorities will encode them with
 things like PKCS7 or PKCS12, or something else.  Depending on your
-applications, this may be perfectly OK, it all depends on what they
+applications, this may be perfectly OK.  It all depends on what they
 know how to decode.  If not, there are a number of OpenSSL tools to
 convert between some (most?) formats.
 
diff --git a/deps/openssl/openssl/doc/fingerprints.txt b/deps/openssl/openssl/doc/fingerprints.txt
index 9613cbac98486d..bdcad1472309ee 100644
--- a/deps/openssl/openssl/doc/fingerprints.txt
+++ b/deps/openssl/openssl/doc/fingerprints.txt
@@ -12,9 +12,6 @@ in the file named openssl-1.0.1h.tar.gz.asc.
 The following is the list of fingerprints for the keys that are
 currently in use to sign OpenSSL distributions:
 
-OpenSSL OMC:
-EFC0 A467 D613 CB83 C7ED 6D30 D894 E2CE 8B3D 79F5
-
 OpenSSL:
 BA54 73A2 B058 7B07 FB27 CF2D 2160 94DF D0CB 81EF
 
diff --git a/deps/openssl/openssl/doc/man1/openssl-enc.pod.in b/deps/openssl/openssl/doc/man1/openssl-enc.pod.in
index e6d5103bd91a25..a47e783e2d6306 100644
--- a/deps/openssl/openssl/doc/man1/openssl-enc.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-enc.pod.in
@@ -97,13 +97,19 @@ Base64 process the data. This means that if encryption is taking place
 the data is base64 encoded after encryption. If decryption is set then
 the input data is base64 decoded before being decrypted.
 
+When the B<-A> option not given,
+on encoding a newline is inserted after each 64 characters, and
+on decoding a newline is expected among the first 1024 bytes of input.
+
 =item B<-base64>
 
 Same as B<-a>
 
 =item B<-A>
 
-If the B<-a> option is set then base64 process the data on one line.
+If the B<-a> option is set then base64 encoding produces output without any
+newline character, and base64 decoding does not require any newlines.
+Therefore it can be helpful to use the B<-A> option when decoding unknown input.
 
 =item B<-k> I
 
@@ -434,6 +440,9 @@ Base64 decode a file then decrypt it using a password supplied in a file:
 =head1 BUGS
 
 The B<-A> option when used with large files doesn't work properly.
+On the other hand, when base64 decoding without the B<-A> option,
+if the first 1024 bytes of input do not include a newline character
+the first two lines of input are ignored.
 
 The B command only supports a fixed number of algorithms with
 certain parameters. So if, for example, you want to use RC2 with a
@@ -449,7 +458,7 @@ The B<-ciphers> and B<-engine> options were deprecated in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-passphrase-options.pod b/deps/openssl/openssl/doc/man1/openssl-passphrase-options.pod
index abc43fb41e6fe6..2260dce8a65026 100644
--- a/deps/openssl/openssl/doc/man1/openssl-passphrase-options.pod
+++ b/deps/openssl/openssl/doc/man1/openssl-passphrase-options.pod
@@ -46,26 +46,32 @@ the environment of other processes is visible on certain platforms
 
 =item BI
 
-The first line of I is the password. If the same I
-argument is supplied to B<-passin> and B<-passout> arguments then the first
-line will be used for the input password and the next line for the output
-password. I need not refer to a regular file: it could for example
-refer to a device or named pipe.
+Reads the password from the specified file I, which can be a regular
+file, device, or named pipe. Only the first line, up to the newline character,
+is read from the stream.
+
+If the same I argument is supplied to both B<-passin> and B<-passout>
+arguments, the first line will be used for the input password, and the next
+line will be used for the output password.
 
 =item BI
 
-Read the password from the file descriptor I. This can be used to
-send the data via a pipe for example.
+Reads the password from the file descriptor I. This can be useful for
+sending data via a pipe, for example. The same line handling as described for
+B applies to passwords read from file descriptors.
+
+B is not supported on Windows.
 
 =item B
 
-Read the password from standard input.
+Reads the password from standard input. The same line handling as described for
+B applies to passwords read from standard input.
 
 =back
 
 =head1 COPYRIGHT
 
-Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-s_client.pod.in b/deps/openssl/openssl/doc/man1/openssl-s_client.pod.in
index 4b7b58b72d5537..bd6171aa265c69 100644
--- a/deps/openssl/openssl/doc/man1/openssl-s_client.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-s_client.pod.in
@@ -616,7 +616,11 @@ For example strings, see L
 =item B<-curves> I
 
 Specifies the list of supported curves to be sent by the client. The curve is
-ultimately selected by the server. For a list of all curves, use:
+ultimately selected by the server.
+
+The list of all supported groups includes named EC parameters as well as X25519
+and X448 or FFDHE groups, and may also include groups implemented in 3rd-party
+providers. For a list of named EC parameters, use:
 
     $ openssl ecparam -list_curves
 
@@ -910,7 +914,7 @@ The B<-engine> option was deprecated in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-s_server.pod.in b/deps/openssl/openssl/doc/man1/openssl-s_server.pod.in
index 319f1e342b4855..99a252a8225453 100644
--- a/deps/openssl/openssl/doc/man1/openssl-s_server.pod.in
+++ b/deps/openssl/openssl/doc/man1/openssl-s_server.pod.in
@@ -641,7 +641,10 @@ Signature algorithms to support for client certificate authentication
 =item B<-named_curve> I
 
 Specifies the elliptic curve to use. NOTE: this is single curve, not a list.
-For a list of all possible curves, use:
+
+The list of all supported groups includes named EC parameters as well as X25519
+and X448 or FFDHE groups, and may also include groups implemented in 3rd-party
+providers. For a list of named EC parameters, use:
 
     $ openssl ecparam -list_curves
 
@@ -930,7 +933,7 @@ option were deprecated in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man1/openssl-verification-options.pod b/deps/openssl/openssl/doc/man1/openssl-verification-options.pod
index 4998e452b54957..bf9ed9c1a62e1c 100644
--- a/deps/openssl/openssl/doc/man1/openssl-verification-options.pod
+++ b/deps/openssl/openssl/doc/man1/openssl-verification-options.pod
@@ -430,7 +430,7 @@ This option may be used multiple times.
 =item B<-policy> I
 
 Enable policy processing and add I to the user-initial-policy-set (see
-RFC5280). The policy I can be an object name an OID in numeric form.
+RFC5280). The policy I can be an object name or an OID in numeric form.
 This argument can appear more than once.
 
 =item B<-explicit_policy>
@@ -686,7 +686,7 @@ The checks enabled by B<-x509_strict> have been extended in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/ASN1_INTEGER_new.pod b/deps/openssl/openssl/doc/man3/ASN1_INTEGER_new.pod
index 4722f880c0b28d..869ac754f4b736 100644
--- a/deps/openssl/openssl/doc/man3/ASN1_INTEGER_new.pod
+++ b/deps/openssl/openssl/doc/man3/ASN1_INTEGER_new.pod
@@ -18,6 +18,7 @@ ASN1_INTEGER_new, ASN1_INTEGER_free - ASN1_INTEGER allocation functions
 ASN1_INTEGER_new() returns an allocated B structure.
 
 ASN1_INTEGER_free() frees up a single B object.
+If the argument is NULL, nothing is done.
 
 B structure representing the ASN.1 INTEGER type
 
@@ -34,7 +35,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/ASYNC_WAIT_CTX_new.pod b/deps/openssl/openssl/doc/man3/ASYNC_WAIT_CTX_new.pod
index 7621a8b3a166b1..d85c51e5556d8f 100644
--- a/deps/openssl/openssl/doc/man3/ASYNC_WAIT_CTX_new.pod
+++ b/deps/openssl/openssl/doc/man3/ASYNC_WAIT_CTX_new.pod
@@ -178,6 +178,9 @@ operation, normally it is detected by a polling function or an interrupt, as the
 user code set a callback by calling ASYNC_WAIT_CTX_set_callback() previously,
 then the registered callback will be called.
 
+ASYNC_WAIT_CTX_free() frees up a single B object.
+If the argument is NULL, nothing is done.
+
 =head1 RETURN VALUES
 
 ASYNC_WAIT_CTX_new() returns a pointer to the newly allocated B
@@ -216,7 +219,7 @@ were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/BIO_ADDR.pod b/deps/openssl/openssl/doc/man3/BIO_ADDR.pod
index 5ab88622cee0ba..12ec84d15ca041 100644
--- a/deps/openssl/openssl/doc/man3/BIO_ADDR.pod
+++ b/deps/openssl/openssl/doc/man3/BIO_ADDR.pod
@@ -38,6 +38,7 @@ with routines that will fill it with information, such as
 BIO_accept_ex().
 
 BIO_ADDR_free() frees a B created with BIO_ADDR_new().
+If the argument is NULL, nothing is done.
 
 BIO_ADDR_clear() clears any data held within the provided B and sets
 it back to an uninitialised state.
@@ -115,7 +116,7 @@ L, L
 
 =head1 COPYRIGHT
 
-Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/BIO_ADDRINFO.pod b/deps/openssl/openssl/doc/man3/BIO_ADDRINFO.pod
index 626052e7f8b907..71a14ff4f0d706 100644
--- a/deps/openssl/openssl/doc/man3/BIO_ADDRINFO.pod
+++ b/deps/openssl/openssl/doc/man3/BIO_ADDRINFO.pod
@@ -78,7 +78,7 @@ BIO_ADDRINFO_next() returns the next B in the chain
 from the given one.
 
 BIO_ADDRINFO_free() frees the chain of B starting
-with the given one.
+with the given one. If the argument is NULL, nothing is done.
 
 =head1 RETURN VALUES
 
@@ -103,7 +103,7 @@ The BIO_lookup_ex() function was added in OpenSSL 1.1.1.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/BIO_f_base64.pod b/deps/openssl/openssl/doc/man3/BIO_f_base64.pod
index c865f0a17ac169..c951d492619087 100644
--- a/deps/openssl/openssl/doc/man3/BIO_f_base64.pod
+++ b/deps/openssl/openssl/doc/man3/BIO_f_base64.pod
@@ -21,25 +21,23 @@ any data read through it.
 
 Base64 BIOs do not support BIO_gets() or BIO_puts().
 
-For writing, output is by default divided to lines of length 64
-characters and there is always a newline at the end of output.
+For writing, by default output is divided to lines of length 64
+characters and there is a newline at the end of output.
+This behavior can be changed with B flag.
 
-For reading, first line should be at most 1024
-characters long. If it is longer then it is ignored completely.
-Other input lines can be of any length. There must be a newline
-at the end of input.
-
-This behavior can be changed with BIO_FLAGS_BASE64_NO_NL flag.
+For reading, first line should be at most 1024 bytes long including newline
+unless the flag B is set.
+Further input lines can be of any length (i.e., newlines may appear anywhere
+in the input) and a newline at the end of input is not needed.
 
 BIO_flush() on a base64 BIO that is being written through is
 used to signal that no more data is to be encoded: this is used
 to flush the final block through the BIO.
 
-The flag BIO_FLAGS_BASE64_NO_NL can be set with BIO_set_flags().
+The flag B can be set with BIO_set_flags().
 For writing, it causes all data to be written on one line without
 newline at the end.
-For reading, it expects the data to be all on one line (with or
-without a trailing newline).
+For reading, it removes all expectations on newlines in the input data.
 
 =head1 NOTES
 
@@ -85,6 +83,10 @@ data to standard output:
 
 =head1 BUGS
 
+On decoding, if the flag B is not set and
+the first 1024 bytes of input do not include a newline character
+the first two lines of input are ignored.
+
 The ambiguity of EOF in base64 encoded data can cause additional
 data following the base64 encoded block to be misinterpreted.
 
@@ -93,7 +95,7 @@ to reliably determine EOF (for example a MIME boundary).
 
 =head1 COPYRIGHT
 
-Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/BIO_meth_new.pod b/deps/openssl/openssl/doc/man3/BIO_meth_new.pod
index 86301b97189f71..d626277c03b1ed 100644
--- a/deps/openssl/openssl/doc/man3/BIO_meth_new.pod
+++ b/deps/openssl/openssl/doc/man3/BIO_meth_new.pod
@@ -76,7 +76,7 @@ additionally have the "descriptor" bit set (B). See the
 L page for more information.
 
 BIO_meth_free() destroys a B structure and frees up any memory
-associated with it.
+associated with it. If the argument is NULL, nothing is done.
 
 BIO_meth_get_write_ex() and BIO_meth_set_write_ex() get and set the function
 used for writing arbitrary length data to the BIO respectively. This function
@@ -157,7 +157,7 @@ The functions described here were added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/BN_add.pod b/deps/openssl/openssl/doc/man3/BN_add.pod
index 35cfdd1495fd12..46966d99637925 100644
--- a/deps/openssl/openssl/doc/man3/BN_add.pod
+++ b/deps/openssl/openssl/doc/man3/BN_add.pod
@@ -14,9 +14,9 @@ arithmetic operations on BIGNUMs
 
  int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
 
- int BN_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
+ int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
 
- int BN_sqr(BIGNUM *r, BIGNUM *a, BN_CTX *ctx);
+ int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
 
  int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *a, const BIGNUM *d,
             BN_CTX *ctx);
@@ -25,25 +25,25 @@ arithmetic operations on BIGNUMs
 
  int BN_nnmod(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
 
- int BN_mod_add(BIGNUM *r, BIGNUM *a, BIGNUM *b, const BIGNUM *m,
+ int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
                 BN_CTX *ctx);
 
- int BN_mod_sub(BIGNUM *r, BIGNUM *a, BIGNUM *b, const BIGNUM *m,
+ int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
                 BN_CTX *ctx);
 
- int BN_mod_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, const BIGNUM *m,
+ int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
                 BN_CTX *ctx);
 
- int BN_mod_sqr(BIGNUM *r, BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
+ int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
 
- BIGNUM *BN_mod_sqrt(BIGNUM *in, BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
+ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
 
- int BN_exp(BIGNUM *r, BIGNUM *a, BIGNUM *p, BN_CTX *ctx);
+ int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
 
- int BN_mod_exp(BIGNUM *r, BIGNUM *a, const BIGNUM *p,
+ int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
                 const BIGNUM *m, BN_CTX *ctx);
 
- int BN_gcd(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
+ int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
 
 =head1 DESCRIPTION
 
@@ -135,7 +135,7 @@ L, L
 
 =head1 COPYRIGHT
 
-Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/BN_generate_prime.pod b/deps/openssl/openssl/doc/man3/BN_generate_prime.pod
index b536bcb3b781ca..accc8a749f0c33 100644
--- a/deps/openssl/openssl/doc/man3/BN_generate_prime.pod
+++ b/deps/openssl/openssl/doc/man3/BN_generate_prime.pod
@@ -167,7 +167,8 @@ programs should prefer the "new" style, whilst the "old" style is provided
 for backwards compatibility purposes.
 
 A B structure should be created through a call to BN_GENCB_new(),
-and freed through a call to BN_GENCB_free().
+and freed through a call to BN_GENCB_free(). If the argument is NULL,
+nothing is done.
 
 For "new" style callbacks a BN_GENCB structure should be initialised with a
 call to BN_GENCB_set(), where B is a B, B is of
@@ -245,7 +246,7 @@ BN_check_prime() was added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/BN_set_bit.pod b/deps/openssl/openssl/doc/man3/BN_set_bit.pod
index 349ef9e0562cc3..ddc27d0c407a4f 100644
--- a/deps/openssl/openssl/doc/man3/BN_set_bit.pod
+++ b/deps/openssl/openssl/doc/man3/BN_set_bit.pod
@@ -33,8 +33,11 @@ error occurs if B is shorter than B bits.
 BN_is_bit_set() tests if bit B in B is set.
 
 BN_mask_bits() truncates B to an B bit number
-(CEn)>).  An error occurs if B already is
-shorter than B bits.
+(CEn)>). An error occurs if B is negative. An error is
+also returned if the internal representation of B is already shorter than
+B bits. The internal representation depends on the platform's word size, and
+this error can be safely ignored. Use L to determine the exact
+number of bits if needed.
 
 BN_lshift() shifts B left by B bits and places the result in
 B (C). Note that B must be nonnegative. BN_lshift1() shifts
@@ -59,7 +62,7 @@ L, L
 
 =head1 COPYRIGHT
 
-Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/BUF_MEM_new.pod b/deps/openssl/openssl/doc/man3/BUF_MEM_new.pod
index 262e18f31bfe92..79de43a1df9a0a 100644
--- a/deps/openssl/openssl/doc/man3/BUF_MEM_new.pod
+++ b/deps/openssl/openssl/doc/man3/BUF_MEM_new.pod
@@ -34,6 +34,7 @@ should be allocated on the secure heap; see L.
 
 BUF_MEM_free() frees up an already existing buffer. The data is zeroed
 before freeing up in case the buffer contains sensitive data.
+If the argument is NULL, nothing is done.
 
 BUF_MEM_grow() changes the size of an already existing buffer to
 B. Any data already in the buffer is preserved if it increases in
@@ -65,7 +66,7 @@ The BUF_MEM_new_ex() function was added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/CRYPTO_THREAD_run_once.pod b/deps/openssl/openssl/doc/man3/CRYPTO_THREAD_run_once.pod
index a51679b97edde4..420ff7278b26c2 100644
--- a/deps/openssl/openssl/doc/man3/CRYPTO_THREAD_run_once.pod
+++ b/deps/openssl/openssl/doc/man3/CRYPTO_THREAD_run_once.pod
@@ -69,6 +69,7 @@ CRYPTO_THREAD_unlock() unlocks the previously locked I.
 =item *
 
 CRYPTO_THREAD_lock_free() frees the provided I.
+If the argument is NULL, nothing is done.
 
 =item *
 
@@ -163,10 +164,13 @@ This example safely initializes and uses a lock.
  {
      int ret = 0;
 
-     if (mylock()) {
-         /* Your code here, do not return without releasing the lock! */
-         ret = ... ;
+     if (!mylock()) {
+        /* Do not unlock unless the lock was successfully acquired. */
+        return 0;
      }
+
+     /* Your code here, do not return without releasing the lock! */
+     ret = ... ;
      myunlock();
      return ret;
  }
@@ -183,7 +187,7 @@ L, L.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/CTLOG_STORE_new.pod b/deps/openssl/openssl/doc/man3/CTLOG_STORE_new.pod
index 801b1447e15599..361eda57b1821f 100644
--- a/deps/openssl/openssl/doc/man3/CTLOG_STORE_new.pod
+++ b/deps/openssl/openssl/doc/man3/CTLOG_STORE_new.pod
@@ -52,7 +52,7 @@ The expected format of the file is:
 
 Once a CTLOG_STORE is no longer required, it should be passed to
 CTLOG_STORE_free(). This will delete all of the CTLOGs stored within, along
-with the CTLOG_STORE itself.
+with the CTLOG_STORE itself. If the argument is NULL, nothing is done.
 
 =head1 NOTES
 
@@ -78,7 +78,7 @@ added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/CTLOG_new.pod b/deps/openssl/openssl/doc/man3/CTLOG_new.pod
index 30b8068249667a..7a78a6c58dd356 100644
--- a/deps/openssl/openssl/doc/man3/CTLOG_new.pod
+++ b/deps/openssl/openssl/doc/man3/CTLOG_new.pod
@@ -50,7 +50,7 @@ property query string are used.
 Regardless of whether CTLOG_new() or CTLOG_new_from_base64() is used, it is the
 caller's responsibility to pass the CTLOG to CTLOG_free() once it is no longer
 needed. This will delete it and, if created by CTLOG_new(), the EVP_PKEY that
-was passed to it.
+was passed to it. If the argument to CTLOG_free() is NULL, nothing is done.
 
 CTLOG_get0_name() returns the name of the log, as provided when the CTLOG was
 created. Ownership of the string remains with the CTLOG.
@@ -80,7 +80,7 @@ were added in OpenSSL 3.0. All other functions were added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/CT_POLICY_EVAL_CTX_new.pod b/deps/openssl/openssl/doc/man3/CT_POLICY_EVAL_CTX_new.pod
index bba6778d2debcd..3b79980c43c264 100644
--- a/deps/openssl/openssl/doc/man3/CT_POLICY_EVAL_CTX_new.pod
+++ b/deps/openssl/openssl/doc/man3/CT_POLICY_EVAL_CTX_new.pod
@@ -105,7 +105,8 @@ The time should be in milliseconds since the Unix Epoch.
 Each setter has a matching getter for accessing the current value.
 
 When no longer required, the B should be passed to
-CT_POLICY_EVAL_CTX_free() to delete it.
+CT_POLICY_EVAL_CTX_free() to delete it. If the argument to
+CT_POLICY_EVAL_CTX_free() is NULL, nothing is done.
 
 =head1 NOTES
 
@@ -130,7 +131,7 @@ functions were added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/DH_meth_new.pod b/deps/openssl/openssl/doc/man3/DH_meth_new.pod
index 43827f55ef8c37..d5ba5eac565d2d 100644
--- a/deps/openssl/openssl/doc/man3/DH_meth_new.pod
+++ b/deps/openssl/openssl/doc/man3/DH_meth_new.pod
@@ -81,7 +81,7 @@ parameter. This might be useful for creating a new B based on an
 existing one, but with some differences.
 
 DH_meth_free() destroys a B structure and frees up any memory
-associated with it.
+associated with it. If the argument is NULL, nothing is done.
 
 DH_meth_get0_name() will return a pointer to the name of this DH_METHOD. This
 is a pointer to the internal name string and so should not be freed by the
@@ -166,7 +166,7 @@ The functions described here were added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/DSA_SIG_new.pod b/deps/openssl/openssl/doc/man3/DSA_SIG_new.pod
index 1f532d300065e1..158da2d7dd0658 100644
--- a/deps/openssl/openssl/doc/man3/DSA_SIG_new.pod
+++ b/deps/openssl/openssl/doc/man3/DSA_SIG_new.pod
@@ -20,6 +20,7 @@ DSA_SIG_new() allocates an empty B structure.
 
 DSA_SIG_free() frees the B structure and its components. The
 values are erased before the memory is returned to the system.
+If the argument is NULL, nothing is done.
 
 DSA_SIG_get0() returns internal pointers to the B and B values contained
 in B.
@@ -48,7 +49,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/DSA_meth_new.pod b/deps/openssl/openssl/doc/man3/DSA_meth_new.pod
index c00747cfc44865..534561c610467f 100644
--- a/deps/openssl/openssl/doc/man3/DSA_meth_new.pod
+++ b/deps/openssl/openssl/doc/man3/DSA_meth_new.pod
@@ -110,7 +110,7 @@ parameter. This might be useful for creating a new B based on an
 existing one, but with some differences.
 
 DSA_meth_free() destroys a B structure and frees up any memory
-associated with it.
+associated with it. If the argument is NULL, nothing is done.
 
 DSA_meth_get0_name() will return a pointer to the name of this DSA_METHOD. This
 is a pointer to the internal name string and so should not be freed by the
@@ -214,7 +214,7 @@ The functions described here were added in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/ECDSA_SIG_new.pod b/deps/openssl/openssl/doc/man3/ECDSA_SIG_new.pod
index 3266c43b550c43..e56ec959edff07 100644
--- a/deps/openssl/openssl/doc/man3/ECDSA_SIG_new.pod
+++ b/deps/openssl/openssl/doc/man3/ECDSA_SIG_new.pod
@@ -31,6 +31,7 @@ ECDSA_SIG_new() allocates an empty B structure.
 Note: before OpenSSL 1.1.0, the I and I components were initialised.
 
 ECDSA_SIG_free() frees the B structure I.
+If the argument is NULL, nothing is done.
 
 ECDSA_SIG_get0() returns internal pointers the I and I values contained
 in I and stores them in I<*pr> and I<*ps>, respectively.
@@ -136,7 +137,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2004-2022 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2004-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/ENGINE_add.pod b/deps/openssl/openssl/doc/man3/ENGINE_add.pod
index 55e5d76fcdb8c0..24c83c57647601 100644
--- a/deps/openssl/openssl/doc/man3/ENGINE_add.pod
+++ b/deps/openssl/openssl/doc/man3/ENGINE_add.pod
@@ -227,7 +227,8 @@ references such as; ENGINE_by_id(), ENGINE_get_first(), ENGINE_get_last(),
 ENGINE_get_next(), ENGINE_get_prev(). All structural references should be
 released by a corresponding to call to the ENGINE_free() function - the
 ENGINE object itself will only actually be cleaned up and deallocated when
-the last structural reference is released.
+the last structural reference is released. If the argument to ENGINE_free()
+is NULL, nothing is done.
 
 It should also be noted that many ENGINE API function calls that accept a
 structural reference will internally obtain another reference - typically
@@ -665,7 +666,7 @@ and should not be used.
 
 =head1 COPYRIGHT
 
-Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2002-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_ASYM_CIPHER_free.pod b/deps/openssl/openssl/doc/man3/EVP_ASYM_CIPHER_free.pod
index c158ec1ae74a7e..162ad7ed7687dd 100644
--- a/deps/openssl/openssl/doc/man3/EVP_ASYM_CIPHER_free.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_ASYM_CIPHER_free.pod
@@ -45,7 +45,7 @@ The returned value must eventually be freed with EVP_ASYM_CIPHER_free().
 EVP_ASYM_CIPHER_free() decrements the reference count for the B
 structure. Typically this structure will have been obtained from an earlier call
 to EVP_ASYM_CIPHER_fetch(). If the reference count drops to 0 then the
-structure is freed.
+structure is freed. If the argument is NULL, nothing is done.
 
 EVP_ASYM_CIPHER_up_ref() increments the reference count for an
 B structure.
@@ -102,7 +102,7 @@ The functions described here were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_CIPHER_meth_new.pod b/deps/openssl/openssl/doc/man3/EVP_CIPHER_meth_new.pod
index 8b862d9d99c815..8638cd3009c7ea 100644
--- a/deps/openssl/openssl/doc/man3/EVP_CIPHER_meth_new.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_CIPHER_meth_new.pod
@@ -80,6 +80,7 @@ EVP_CIPHER_meth_new() creates a new B structure.
 EVP_CIPHER_meth_dup() creates a copy of B.
 
 EVP_CIPHER_meth_free() destroys a B structure.
+If the argument is NULL, nothing is done.
 
 EVP_CIPHER_meth_set_iv_length() sets the length of the IV.
 This is only needed when the implemented cipher mode requires it.
@@ -249,7 +250,7 @@ counted in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_DigestInit.pod b/deps/openssl/openssl/doc/man3/EVP_DigestInit.pod
index d7202c538172a6..de30191b61ac05 100644
--- a/deps/openssl/openssl/doc/man3/EVP_DigestInit.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_DigestInit.pod
@@ -157,6 +157,7 @@ Increments the reference count for an B structure.
 
 Decrements the reference count for the fetched B structure.
 If the reference count drops to 0 then the structure is freed.
+If the argument is NULL, nothing is done.
 
 =item EVP_MD_CTX_new()
 
@@ -170,6 +171,7 @@ existing context.
 =item EVP_MD_CTX_free()
 
 Cleans up digest context I and frees up the space allocated to it.
+If the argument is NULL, nothing is done.
 
 =item EVP_MD_CTX_ctrl()
 
@@ -529,9 +531,13 @@ can be used the manipulate and test these B flags:
 
 This flag instructs the digest to optimize for one update only, if possible.
 
-=for comment EVP_MD_CTX_FLAG_CLEANED is internal, don't mention it
+=item EVP_MD_CTX_FLAG_CLEANED
 
-=for comment EVP_MD_CTX_FLAG_REUSE is internal, don't mention it
+This flag is for internal use only and I be used in user code.
+
+=item EVP_MD_CTX_FLAG_REUSE
+
+This flag is for internal use only and I be used in user code.
 
 =for comment We currently avoid documenting flags that are only bit holder:
 EVP_MD_CTX_FLAG_NON_FIPS_ALLOW, EVP_MD_CTX_FLAGS_PAD_*
diff --git a/deps/openssl/openssl/doc/man3/EVP_EncodeInit.pod b/deps/openssl/openssl/doc/man3/EVP_EncodeInit.pod
index 2b9e02e02d79f6..03c6f4e60579e7 100644
--- a/deps/openssl/openssl/doc/man3/EVP_EncodeInit.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_EncodeInit.pod
@@ -41,7 +41,7 @@ EVP_ENCODE_CTX_new() allocates, initializes and returns a context to be used for
 the encode/decode functions.
 
 EVP_ENCODE_CTX_free() cleans up an encode/decode context B and frees up the
-space allocated to it.
+space allocated to it. If the argument is NULL, nothing is done.
 
 Encoding of binary data is performed in blocks of 48 input bytes (or less for
 the final block). For each 48 byte input block encoded 64 bytes of base 64 data
@@ -151,7 +151,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_EncryptInit.pod b/deps/openssl/openssl/doc/man3/EVP_EncryptInit.pod
index 12d7153d0fd406..f037d135c9da06 100644
--- a/deps/openssl/openssl/doc/man3/EVP_EncryptInit.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_EncryptInit.pod
@@ -268,6 +268,7 @@ Increments the reference count for an B structure.
 
 Decrements the reference count for the fetched B structure.
 If the reference count drops to 0 then the structure is freed.
+If the argument is NULL, nothing is done.
 
 =item EVP_CIPHER_CTX_new()
 
@@ -276,9 +277,9 @@ Allocates and returns a cipher context.
 =item EVP_CIPHER_CTX_free()
 
 Clears all information from a cipher context and frees any allocated memory
-associated with it, including I itself. This function should be called after
-all operations using a cipher are complete so sensitive information does not
-remain in memory.
+associated with it, including I itself. This function should be called
+after all operations using a cipher are complete so sensitive information does
+not remain in memory. If the argument is NULL, nothing is done.
 
 =item EVP_CIPHER_CTX_ctrl()
 
@@ -360,9 +361,13 @@ exists.
 
 Encrypts I bytes from the buffer I and writes the encrypted version to
 I. The pointers I and I may point to the same location, in which
-case the encryption will be done in-place. If I and I point to different
-locations, the two buffers must be disjoint, otherwise the operation might fail
-or the outcome might be undefined.
+case the encryption will be done in-place. However, in-place encryption is
+guaranteed to work only if the encryption context (I) has processed data in
+multiples of the block size. If the context contains an incomplete data block
+from previous operations, in-place encryption will fail.
+
+If I and I point to different locations, the two buffers must be
+disjoint, otherwise the operation might fail or the outcome might be undefined.
 
 This function can be called multiple times to encrypt successive blocks
 of data. The amount of data written depends on the block alignment of the
@@ -1733,7 +1738,7 @@ The EVP_CIPHER_CTX_flags() macro was deprecated in OpenSSL 1.1.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_KEM_free.pod b/deps/openssl/openssl/doc/man3/EVP_KEM_free.pod
index 575abc5f5798c3..b0ef604757d757 100644
--- a/deps/openssl/openssl/doc/man3/EVP_KEM_free.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_KEM_free.pod
@@ -41,6 +41,7 @@ The returned value must eventually be freed with EVP_KEM_free().
 EVP_KEM_free() decrements the reference count for the B structure.
 Typically this structure will have been obtained from an earlier call to
 EVP_KEM_fetch(). If the reference count drops to 0 then the structure is freed.
+If the argument is NULL, nothing is done.
 
 EVP_KEM_up_ref() increments the reference count for an B structure.
 
@@ -95,7 +96,7 @@ The functions described here were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_KEYEXCH_free.pod b/deps/openssl/openssl/doc/man3/EVP_KEYEXCH_free.pod
index 272855ccb3dd81..e08f44e60c732b 100644
--- a/deps/openssl/openssl/doc/man3/EVP_KEYEXCH_free.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_KEYEXCH_free.pod
@@ -41,7 +41,7 @@ The returned value must eventually be freed with EVP_KEYEXCH_free().
 EVP_KEYEXCH_free() decrements the reference count for the B
 structure. Typically this structure will have been obtained from an earlier call
 to EVP_KEYEXCH_fetch(). If the reference count drops to 0 then the
-structure is freed.
+structure is freed. If the argument is NULL, nothing is done.
 
 EVP_KEYEXCH_up_ref() increments the reference count for an B
 structure.
@@ -101,7 +101,7 @@ The functions described here were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_KEYMGMT.pod b/deps/openssl/openssl/doc/man3/EVP_KEYMGMT.pod
index 455ffadce5ec64..4c0c3b776c6409 100644
--- a/deps/openssl/openssl/doc/man3/EVP_KEYMGMT.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_KEYMGMT.pod
@@ -62,6 +62,7 @@ B I.
 
 EVP_KEYMGMT_free() decrements the reference count for the given
 B I, and when the count reaches zero, frees it.
+If the argument is NULL, nothing is done.
 
 EVP_KEYMGMT_get0_provider() returns the provider that has this particular
 implementation.
@@ -140,7 +141,7 @@ The functions described here were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_MD_meth_new.pod b/deps/openssl/openssl/doc/man3/EVP_MD_meth_new.pod
index a553c378f3d7d8..3497973323768b 100644
--- a/deps/openssl/openssl/doc/man3/EVP_MD_meth_new.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_MD_meth_new.pod
@@ -74,6 +74,7 @@ EVP_MD_meth_dup() creates a copy of B.
 
 EVP_MD_meth_free() decrements the reference count for the B structure.
 If the reference count drops to 0 then the structure is freed.
+If the argument is NULL, nothing is done.
 
 EVP_MD_meth_set_input_blocksize() sets the internal input block size
 for the method B to B bytes.
@@ -194,7 +195,7 @@ counted in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_PKEY_ASN1_METHOD.pod b/deps/openssl/openssl/doc/man3/EVP_PKEY_ASN1_METHOD.pod
index cc50d363daf1e2..41f058fe54ee41 100644
--- a/deps/openssl/openssl/doc/man3/EVP_PKEY_ASN1_METHOD.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_PKEY_ASN1_METHOD.pod
@@ -393,7 +393,7 @@ This function is not thread safe, it's recommended to only use this
 when initializing the application.
 
 EVP_PKEY_asn1_free() frees an existing B pointed
-by B.
+by B. If the argument is NULL, nothing is done.
 
 EVP_PKEY_asn1_add0() adds B to the user defined stack of
 methods unless another B with the same NID is
@@ -439,7 +439,7 @@ parameter is now constified.
 
 =head1 COPYRIGHT
 
-Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_PKEY_meth_new.pod b/deps/openssl/openssl/doc/man3/EVP_PKEY_meth_new.pod
index db0b09f855fc4d..1b0adb2913f82a 100644
--- a/deps/openssl/openssl/doc/man3/EVP_PKEY_meth_new.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_PKEY_meth_new.pod
@@ -407,7 +407,7 @@ of an B is always called by the EVP framework while doing a
 digest signing operation by calling L.
 
 EVP_PKEY_meth_free() frees an existing B pointed by
-B.
+B. If the argument is NULL, nothing is done.
 
 EVP_PKEY_meth_copy() copies an B object from B
 to B.
@@ -456,7 +456,7 @@ has changed in OpenSSL 3.0 so its I parameter is now constified.
 
 =head1 COPYRIGHT
 
-Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_RAND.pod b/deps/openssl/openssl/doc/man3/EVP_RAND.pod
index 11ea807cc33050..e5f75010499cac 100644
--- a/deps/openssl/openssl/doc/man3/EVP_RAND.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_RAND.pod
@@ -284,7 +284,7 @@ associated RAND ctx.
 Reads or set the number of elapsed seconds before reseeding the
 associated RAND ctx.
 
-=item "max_request" (B) 
+=item "max_request" (B) 
 
 Specifies the maximum number of bytes that can be generated in a single
 call to OSSL_FUNC_rand_generate.
@@ -406,7 +406,7 @@ This functionality was added to OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/EVP_SIGNATURE.pod b/deps/openssl/openssl/doc/man3/EVP_SIGNATURE.pod
index 1f534ef33810eb..cf476d1453152b 100644
--- a/deps/openssl/openssl/doc/man3/EVP_SIGNATURE.pod
+++ b/deps/openssl/openssl/doc/man3/EVP_SIGNATURE.pod
@@ -49,7 +49,7 @@ The returned value must eventually be freed with EVP_SIGNATURE_free().
 EVP_SIGNATURE_free() decrements the reference count for the B
 structure. Typically this structure will have been obtained from an earlier call
 to EVP_SIGNATURE_fetch(). If the reference count drops to 0 then the
-structure is freed.
+structure is freed. If the argument is NULL, nothing is done.
 
 EVP_SIGNATURE_up_ref() increments the reference count for an B
 structure.
@@ -106,7 +106,7 @@ The functions described here were added in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/HMAC.pod b/deps/openssl/openssl/doc/man3/HMAC.pod
index 87a567242f60fa..ebe69d2db9d3d9 100644
--- a/deps/openssl/openssl/doc/man3/HMAC.pod
+++ b/deps/openssl/openssl/doc/man3/HMAC.pod
@@ -87,7 +87,7 @@ created with HMAC_CTX_new().
 
 HMAC_CTX_free() erases the key and other data from the B,
 releases any associated resources and finally frees the B
-itself.
+itself. If the argument is NULL, nothing is done.
 
 The following functions may be used if the message is not completely
 stored in memory:
@@ -163,7 +163,7 @@ OpenSSL before version 1.0.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/MD5.pod b/deps/openssl/openssl/doc/man3/MD5.pod
index 2e01fe8193dd96..99bf8211601573 100644
--- a/deps/openssl/openssl/doc/man3/MD5.pod
+++ b/deps/openssl/openssl/doc/man3/MD5.pod
@@ -7,12 +7,12 @@ MD4_Final, MD5_Init, MD5_Update, MD5_Final - MD2, MD4, and MD5 hash functions
 
 =head1 SYNOPSIS
 
- #include 
-
 The following functions have been deprecated since OpenSSL 3.0, and can be
 hidden entirely by defining B with a suitable version value,
 see L:
 
+ #include 
+
  unsigned char *MD2(const unsigned char *d, unsigned long n, unsigned char *md);
 
  int MD2_Init(MD2_CTX *c);
@@ -20,25 +20,24 @@ see L:
  int MD2_Final(unsigned char *md, MD2_CTX *c);
 
 
- #include 
-
 The following functions have been deprecated since OpenSSL 3.0, and can be
 hidden entirely by defining B with a suitable version value,
 see L:
 
+ #include 
+
  unsigned char *MD4(const unsigned char *d, unsigned long n, unsigned char *md);
 
  int MD4_Init(MD4_CTX *c);
  int MD4_Update(MD4_CTX *c, const void *data, unsigned long len);
  int MD4_Final(unsigned char *md, MD4_CTX *c);
 
-
- #include 
-
 The following functions have been deprecated since OpenSSL 3.0, and can be
 hidden entirely by defining B with a suitable version value,
 see L:
 
+ #include 
+
  unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md);
 
  int MD5_Init(MD5_CTX *c);
@@ -105,7 +104,7 @@ All of these functions were deprecated in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2000-2023 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/NCONF_new_ex.pod b/deps/openssl/openssl/doc/man3/NCONF_new_ex.pod
index 6861fb198c103f..d088ab2fed29dc 100644
--- a/deps/openssl/openssl/doc/man3/NCONF_new_ex.pod
+++ b/deps/openssl/openssl/doc/man3/NCONF_new_ex.pod
@@ -35,7 +35,7 @@ I is set to NULL then the default value of NCONF_default() is used.
 NCONF_new() is similar to NCONF_new_ex() but sets the I to NULL.
 
 NCONF_free() frees the data associated with I and then frees the I
-object.
+object. If the argument is NULL, nothing is done.
 
 NCONF_load() parses the file named I and adds the values found to
 I. If an error occurs I and I list the file and line that
@@ -74,7 +74,7 @@ in OpenSSL 3.0.
 
 =head1 COPYRIGHT
 
-Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/OCSP_REQUEST_new.pod b/deps/openssl/openssl/doc/man3/OCSP_REQUEST_new.pod
index e34e591fe01bec..3f171e822971c9 100644
--- a/deps/openssl/openssl/doc/man3/OCSP_REQUEST_new.pod
+++ b/deps/openssl/openssl/doc/man3/OCSP_REQUEST_new.pod
@@ -29,6 +29,7 @@ OCSP_request_onereq_get0 - OCSP request functions
 OCSP_REQUEST_new() allocates and returns an empty B structure.
 
 OCSP_REQUEST_free() frees up the request structure B.
+If the argument is NULL, nothing is done.
 
 OCSP_request_add0_id() adds certificate ID B to B. It returns
 the B structure added so an application can add additional
@@ -108,7 +109,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/OCSP_cert_to_id.pod b/deps/openssl/openssl/doc/man3/OCSP_cert_to_id.pod
index 298527f6bb25b7..e0fbdfa9eacbe1 100644
--- a/deps/openssl/openssl/doc/man3/OCSP_cert_to_id.pod
+++ b/deps/openssl/openssl/doc/man3/OCSP_cert_to_id.pod
@@ -38,6 +38,7 @@ issuer name B, issuer key hash B and serial number
 B.
 
 OCSP_CERTID_free() frees up B.
+If the argument is NULL, nothing is done.
 
 OCSP_id_cmp() compares B B and B.
 
@@ -79,7 +80,7 @@ L
 
 =head1 COPYRIGHT
 
-Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/OCSP_response_status.pod b/deps/openssl/openssl/doc/man3/OCSP_response_status.pod
index 7ff74923a53f32..0902ae8a31bc1d 100644
--- a/deps/openssl/openssl/doc/man3/OCSP_response_status.pod
+++ b/deps/openssl/openssl/doc/man3/OCSP_response_status.pod
@@ -46,6 +46,7 @@ OCSP_response_create() creates and returns an I structure for
 I and optionally including basic response I.
 
 OCSP_RESPONSE_free() frees up OCSP response I.
+If the argument is NULL, nothing is done.
 
 OCSP_RESPID_set_by_name() sets the name of the OCSP_RESPID to be the same as the
 subject name in the supplied X509 certificate I for the OCSP responder.
@@ -123,7 +124,7 @@ The OCSP_basic_sign_ctx() function was added in OpenSSL 1.1.1.
 
 =head1 COPYRIGHT
 
-Copyright 2015-2021 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
 
 Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
diff --git a/deps/openssl/openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod b/deps/openssl/openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod
index 688ef0edcb91ae..f62c57172cb747 100644
--- a/deps/openssl/openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod
+++ b/deps/openssl/openssl/doc/man3/OPENSSL_LH_COMPFUNC.pod
@@ -123,7 +123,7 @@ Then a hash table of B> objects can be created using this:
 B_free>() frees the B(B>) structure
 I. Allocated hash table entries will not be freed; consider
 using B_doall>() to deallocate any remaining entries in the
-hash table (see below).
+hash table (see below). If the argument is NULL, nothing is done.
 
 B_flush>() empties the B(B>) structure I
. New entries can be added to the flushed table. Allocated hash table entries @@ -299,7 +299,7 @@ type checking. =head1 COPYRIGHT -Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OPENSSL_init_crypto.pod b/deps/openssl/openssl/doc/man3/OPENSSL_init_crypto.pod index c3e72d27442309..1363693c779b78 100644 --- a/deps/openssl/openssl/doc/man3/OPENSSL_init_crypto.pod +++ b/deps/openssl/openssl/doc/man3/OPENSSL_init_crypto.pod @@ -249,6 +249,7 @@ If the B flag is not included, any errors in the configuration file will cause an error return from B or indirectly L. The object can be released with OPENSSL_INIT_free() when done. +If the argument to OPENSSL_INIT_free() is NULL, nothing is done. =head1 NOTES @@ -289,7 +290,7 @@ and OPENSSL_INIT_free() functions were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OPENSSL_malloc.pod b/deps/openssl/openssl/doc/man3/OPENSSL_malloc.pod index 76751012bde5ff..20441e76ac6512 100644 --- a/deps/openssl/openssl/doc/man3/OPENSSL_malloc.pod +++ b/deps/openssl/openssl/doc/man3/OPENSSL_malloc.pod @@ -99,7 +99,8 @@ OPENSSL_zalloc() calls memset() to zero the memory before returning. OPENSSL_clear_realloc() and OPENSSL_clear_free() should be used when the buffer at B holds sensitive information. The old buffer is filled with zero's by calling OPENSSL_cleanse() -before ultimately calling OPENSSL_free(). +before ultimately calling OPENSSL_free(). If the argument to OPENSSL_free() is +NULL, nothing is done. OPENSSL_cleanse() fills B of size B with a string of 0's. Use OPENSSL_cleanse() with care if the memory is a mapping of a file. @@ -198,7 +199,7 @@ clang's memory and leak sanitizer. =head1 COPYRIGHT -Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OPENSSL_secure_malloc.pod b/deps/openssl/openssl/doc/man3/OPENSSL_secure_malloc.pod index c5d4bb2dbbb8c2..1bddd7737069b5 100644 --- a/deps/openssl/openssl/doc/man3/OPENSSL_secure_malloc.pod +++ b/deps/openssl/openssl/doc/man3/OPENSSL_secure_malloc.pod @@ -82,13 +82,15 @@ If CRYPTO_secure_malloc_init() is not called, this is equivalent to calling OPENSSL_free(). It exists for consistency with OPENSSL_secure_malloc() , and is a macro that expands to CRYPTO_secure_free() and adds the C<__FILE__> -and C<__LINE__> parameters.. +and C<__LINE__> parameters.. If the argument to OPENSSL_secure_free() +is NULL, nothing is done. OPENSSL_secure_clear_free() is similar to OPENSSL_secure_free() except that it has an additional C parameter which is used to clear the memory if it was not allocated from the secure heap. If CRYPTO_secure_malloc_init() is not called, this is equivalent to -calling OPENSSL_clear_free(). +calling OPENSSL_clear_free(). If the argument to OPENSSL_secure_clear_free() +is NULL, nothing is done. OPENSSL_secure_actual_size() tells the actual size allocated to the pointer; implementations may allocate more space than initially @@ -133,7 +135,7 @@ a B in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_CMP_CTX_new.pod b/deps/openssl/openssl/doc/man3/OSSL_CMP_CTX_new.pod index ce7db8f2f08628..cab88ae88c9102 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_CMP_CTX_new.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_CMP_CTX_new.pod @@ -176,6 +176,7 @@ the message timeout is set to 120 seconds, and the proof-of-possession method is set to OSSL_CRMF_POPO_SIGNATURE. OSSL_CMP_CTX_free() deallocates an OSSL_CMP_CTX structure. +If the argument is NULL, nothing is done. OSSL_CMP_CTX_reinit() prepares the given I for a further transaction by clearing the internal CMP transaction (aka session) status, PKIStatusInfo, @@ -312,6 +313,11 @@ RFC 4210. Allow retrieving a trust anchor from extraCerts and using that to validate the certificate chain of an IP message. + This is a quirk option added to support 3GPP TS 33.310. + + Note that using this option is dangerous as the certificate obtained + this way has not been authenticated (at least not at CMP level). + Taking it over as a trust anchor implements trust-on-first-use (TOFU). =back @@ -796,7 +802,7 @@ OSSL_CMP_CTX_reset_geninfo_ITAVs() was added in OpenSSL 3.0.8. =head1 COPYRIGHT -Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_CMP_SRV_CTX_new.pod b/deps/openssl/openssl/doc/man3/OSSL_CMP_SRV_CTX_new.pod index d7f1a2e4dba7ba..12b1bfa88a1dbd 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_CMP_SRV_CTX_new.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_CMP_SRV_CTX_new.pod @@ -104,6 +104,7 @@ associated with the library context I and property query string I, both of which may be NULL to select the defaults. OSSL_CMP_SRV_CTX_free() deletes the given I. +If the argument is NULL, nothing is done. OSSL_CMP_SRV_CTX_init() sets in the given I a custom server context pointer as well as callback functions performing the specific processing of CMP @@ -158,7 +159,7 @@ The OpenSSL CMP support was added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_CMP_validate_msg.pod b/deps/openssl/openssl/doc/man3/OSSL_CMP_validate_msg.pod index 44c901210feb94..555624a4035836 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_CMP_validate_msg.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_CMP_validate_msg.pod @@ -40,11 +40,14 @@ using any trust store set via L. If the option OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR was set by calling L, for an Initialization Response (IP) message -any self-issued certificate from the I extraCerts field may also be used -as trust anchor for the path verification of an acceptable cert if it can be +any self-issued certificate from the I extraCerts field may be used +as a trust anchor for the path verification of an 'acceptable' cert if it can be used also to validate the issued certificate returned in the IP message. This is according to TS 33.310 [Network Domain Security (NDS); Authentication Framework (AF)] document specified by the The 3rd Generation Partnership Project (3GPP). +Note that using this option is dangerous as the certificate obtained this way +has not been authenticated (at least not at CMP level). +Taking it over as a trust anchor implements trust-on-first-use (TOFU). Any cert that has been found as described above is cached and tried first when validating the signatures of subsequent messages in the same transaction. @@ -74,7 +77,7 @@ The OpenSSL CMP support was added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_DECODER.pod b/deps/openssl/openssl/doc/man3/OSSL_DECODER.pod index dcfd72bf973847..633aa07f8ffff0 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_DECODER.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_DECODER.pod @@ -61,6 +61,7 @@ I. OSSL_DECODER_free() decrements the reference count for the given I, and when the count reaches zero, frees it. +If the argument is NULL, nothing is done. OSSL_DECODER_get0_provider() returns the provider of the given I. @@ -180,7 +181,7 @@ The functions described here were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_DECODER_CTX.pod b/deps/openssl/openssl/doc/man3/OSSL_DECODER_CTX.pod index 3ffd794cf0fb38..bace3ee0cfed3f 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_DECODER_CTX.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_DECODER_CTX.pod @@ -126,6 +126,7 @@ decoders that have been added to the I so far. Parameters that an implementation doesn't recognise should be ignored by it. OSSL_DECODER_CTX_free() frees the given context I. +If the argument is NULL, nothing is done. OSSL_DECODER_CTX_add_decoder() populates the B I with a decoder, to be used to attempt to decode some encoded input. @@ -249,7 +250,7 @@ The functions described here were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod b/deps/openssl/openssl/doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod index acb04bc3762379..e55212ad554b9e 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod @@ -82,7 +82,7 @@ choice of preferred pass phrase callback form. These are called indirectly, through an internal L function. The internal L function caches the pass phrase, to -be re-used in all decodings that are performed in the same decoding run (for +be reused in all decodings that are performed in the same decoding run (for example, within one L call). =head2 Input Types @@ -135,7 +135,7 @@ The functions described here were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_ENCODER.pod b/deps/openssl/openssl/doc/man3/OSSL_ENCODER.pod index 06d8f80f881225..bbf64b0b47bf67 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_ENCODER.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_ENCODER.pod @@ -61,6 +61,7 @@ I. OSSL_ENCODER_free() decrements the reference count for the given I, and when the count reaches zero, frees it. +If the argument is NULL, nothing is done. OSSL_ENCODER_get0_provider() returns the provider of the given I. @@ -134,7 +135,7 @@ The functions described here were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_ENCODER_CTX.pod b/deps/openssl/openssl/doc/man3/OSSL_ENCODER_CTX.pod index 7f3915fda88236..e9248c356a0551 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_ENCODER_CTX.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_ENCODER_CTX.pod @@ -102,6 +102,7 @@ with an L array I. Parameters that the implementation doesn't recognise should be ignored. OSSL_ENCODER_CTX_free() frees the given context I. +If the argument is NULL, nothing is done. OSSL_ENCODER_CTX_add_encoder() populates the B I with a encoder, to be used to encode an input object. @@ -211,7 +212,7 @@ The functions described here were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_HTTP_REQ_CTX.pod b/deps/openssl/openssl/doc/man3/OSSL_HTTP_REQ_CTX.pod index 6216420e4ffe92..d6c4cdfa0ca7c2 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_HTTP_REQ_CTX.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_HTTP_REQ_CTX.pod @@ -71,6 +71,7 @@ which collects the HTTP request header lines. OSSL_HTTP_REQ_CTX_free() frees up the HTTP request context I. The I is not free'd, I will be free'd if I is set. +If the argument is NULL, nothing is done. OSSL_HTTP_REQ_CTX_set_request_line() adds the 1st HTTP request line to I. The HTTP method is determined by I, @@ -260,7 +261,7 @@ The functions described here were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2015-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_LIB_CTX.pod b/deps/openssl/openssl/doc/man3/OSSL_LIB_CTX.pod index 45fdd8f39a6afa..ad203299e986ff 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_LIB_CTX.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_LIB_CTX.pod @@ -88,7 +88,7 @@ This can be used to associate a library context with providers that are loaded from a configuration. OSSL_LIB_CTX_free() frees the given I, unless it happens to be the -default OpenSSL library context. +default OpenSSL library context. If the argument is NULL, nothing is done. OSSL_LIB_CTX_get0_global_default() returns a concrete (non NULL) reference to the global default library context. @@ -126,7 +126,7 @@ All of the functions described on this page were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_PARAM_BLD.pod b/deps/openssl/openssl/doc/man3/OSSL_PARAM_BLD.pod index 455761c20d32b9..8598ed0626e0eb 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_PARAM_BLD.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_PARAM_BLD.pod @@ -53,6 +53,7 @@ so that values can be added. Any existing values are cleared. OSSL_PARAM_BLD_free() deallocates the memory allocates by OSSL_PARAM_BLD_new(). +If the argument is NULL, nothing is done. OSSL_PARAM_BLD_to_param() converts a built up OSSL_PARAM_BLD structure I into an allocated OSSL_PARAM array. @@ -193,7 +194,7 @@ The functions described here were all added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_PARAM_dup.pod b/deps/openssl/openssl/doc/man3/OSSL_PARAM_dup.pod index 4ae33faf1e4e8f..c8d109a2278239 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_PARAM_dup.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_PARAM_dup.pod @@ -32,6 +32,7 @@ array that have the same key. OSSL_PARAM_free() frees the parameter array I that was created using OSSL_PARAM_dup(), OSSL_PARAM_merge() or OSSL_PARAM_BLD_to_param(). +If the argument to OSSL_PARAM_free() is NULL, nothing is done. =head1 RETURN VALUES @@ -49,7 +50,7 @@ The functions were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_SELF_TEST_new.pod b/deps/openssl/openssl/doc/man3/OSSL_SELF_TEST_new.pod index 4c4b10fca96ad0..c46becd1ad9b75 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_SELF_TEST_new.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_SELF_TEST_new.pod @@ -32,6 +32,7 @@ The callback I may be triggered multiple times by a self test to indicate different phases. OSSL_SELF_TEST_free() frees the space allocated by OSSL_SELF_TEST_new(). +If the argument is NULL, nothing is done. OSSL_SELF_TEST_onbegin() may be inserted at the start of a block of self test code. It can be used for diagnostic purposes. @@ -165,7 +166,7 @@ The functions described here were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_STORE_INFO.pod b/deps/openssl/openssl/doc/man3/OSSL_STORE_INFO.pod index 39bb93fbf5f21b..b8332855d4d046 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_STORE_INFO.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_STORE_INFO.pod @@ -101,6 +101,7 @@ holds if the B type (as returned by OSSL_STORE_INFO_get_type()) matches the function, otherwise NULL. OSSL_STORE_INFO_free() frees a B and its contained type. +If the argument is NULL, nothing is done. OSSL_STORE_INFO_new_NAME() , OSSL_STORE_INFO_new_PARAMS(), , OSSL_STORE_INFO_new_PUBKEY(), OSSL_STORE_INFO_new_PKEY(), @@ -221,7 +222,7 @@ The OSSL_STORE_INFO_PUBKEY object type was added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_STORE_LOADER.pod b/deps/openssl/openssl/doc/man3/OSSL_STORE_LOADER.pod index 9cd016be158a9a..b4fcc7efe9351a 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_STORE_LOADER.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_STORE_LOADER.pod @@ -105,7 +105,6 @@ see L: typedef int (*OSSL_STORE_close_fn)(OSSL_STORE_LOADER_CTX *ctx); int OSSL_STORE_LOADER_set_close(OSSL_STORE_LOADER *store_loader, OSSL_STORE_close_fn store_close_function); - void OSSL_STORE_LOADER_free(OSSL_STORE_LOADER *store_loader); int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader); OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme); @@ -126,6 +125,7 @@ I. OSSL_STORE_LOADER_free() decrements the reference count for the given I, and when the count reaches zero, frees it. +If the argument is NULL, nothing is done. OSSL_STORE_LOADER_get0_provider() returns the provider of the given I. @@ -297,6 +297,7 @@ OSSL_STORE_LOADER_set_close() sets the closing function for the I. OSSL_STORE_LOADER_free() frees the given I. +If the argument is NULL, nothing is done. OSSL_STORE_register_loader() register the given I and thereby makes it available for use with OSSL_STORE_open(), @@ -358,21 +359,25 @@ L =head1 HISTORY OSSL_STORE_LOADER_fetch(), OSSL_STORE_LOADER_up_ref(), -OSSL_STORE_LOADER_free(), OSSL_STORE_LOADER_get0_provider(), -OSSL_STORE_LOADER_get0_properties(), OSSL_STORE_LOADER_is_a(), -OSSL_STORE_LOADER_do_all_provided() and -OSSL_STORE_LOADER_names_do_all() were added in OpenSSL 3.0. +OSSL_STORE_LOADER_get0_provider(), OSSL_STORE_LOADER_get0_properties(), +OSSL_STORE_LOADER_get0_description(), OSSL_STORE_LOADER_is_a(), +OSSL_STORE_LOADER_do_all_provided() and OSSL_STORE_LOADER_names_do_all() +were added in OpenSSL 3.0. -OSSL_STORE_open_ex_fn() was added in OpenSSL 3.0. +B and OSSL_STORE_LOADER_free() were added in OpenSSL +1.1.1. -B, B, OSSL_STORE_LOADER_new(), +OSSL_STORE_LOADER_set_open_ex() and OSSL_STORE_open_ex_fn() were added in +OpenSSL 3.0, and are deprecated. + +B, OSSL_STORE_LOADER_new(), OSSL_STORE_LOADER_set0_scheme(), OSSL_STORE_LOADER_get0_scheme(), OSSL_STORE_LOADER_get0_engine(), OSSL_STORE_LOADER_set_expect(), OSSL_STORE_LOADER_set_find(), OSSL_STORE_LOADER_set_attach(), OSSL_STORE_LOADER_set_open_ex(), OSSL_STORE_LOADER_set_open(), OSSL_STORE_LOADER_set_ctrl(), OSSL_STORE_LOADER_set_load(), OSSL_STORE_LOADER_set_eof(), -OSSL_STORE_LOADER_set_close(), OSSL_STORE_LOADER_free(), +OSSL_STORE_LOADER_set_close(), OSSL_STORE_register_loader(), OSSL_STORE_LOADER_set_error(), OSSL_STORE_unregister_loader(), OSSL_STORE_open_fn(), OSSL_STORE_ctrl_fn(), OSSL_STORE_load_fn(), OSSL_STORE_eof_fn() and OSSL_STORE_close_fn() @@ -380,7 +385,7 @@ were added in OpenSSL 1.1.1, and became deprecated in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/OSSL_STORE_SEARCH.pod b/deps/openssl/openssl/doc/man3/OSSL_STORE_SEARCH.pod index 79186b08997e01..bd512890c607c0 100644 --- a/deps/openssl/openssl/doc/man3/OSSL_STORE_SEARCH.pod +++ b/deps/openssl/openssl/doc/man3/OSSL_STORE_SEARCH.pod @@ -75,6 +75,7 @@ criterion, so they must have at least the same life time as the created B. OSSL_STORE_SEARCH_free() is used to free the B. +If the argument is NULL, nothing is done. =head2 Loader Functions @@ -183,7 +184,7 @@ were added in OpenSSL 1.1.1. =head1 COPYRIGHT -Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2018-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/PEM_read_bio_PrivateKey.pod b/deps/openssl/openssl/doc/man3/PEM_read_bio_PrivateKey.pod index ac93920addec3c..f1635b89808a60 100644 --- a/deps/openssl/openssl/doc/man3/PEM_read_bio_PrivateKey.pod +++ b/deps/openssl/openssl/doc/man3/PEM_read_bio_PrivateKey.pod @@ -320,7 +320,9 @@ NULL but I<*x> is NULL then the structure returned will be written to I<*x>. If neither I nor I<*x> is NULL then an attempt is made to reuse the structure at I<*x> (but see BUGS and EXAMPLES sections). Irrespective of the value of I a pointer to the structure is always -returned (or NULL if an error occurred). +returned (or NULL if an error occurred). The caller retains ownership of the +returned object and needs to free it when it is no longer needed, e.g. +using X509_free() for X509 objects or EVP_PKEY_free() for EVP_PKEY objects. The PEM functions which write private keys take an I parameter which specifies the encryption algorithm to use, encryption is done @@ -574,7 +576,7 @@ PEM_write_bio_DHparams() and PEM_write_DHparams() were deprecated in 3.0. =head1 COPYRIGHT -Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/RAND_set_DRBG_type.pod b/deps/openssl/openssl/doc/man3/RAND_set_DRBG_type.pod index f78c15ff45f3f8..423ebfad656f40 100644 --- a/deps/openssl/openssl/doc/man3/RAND_set_DRBG_type.pod +++ b/deps/openssl/openssl/doc/man3/RAND_set_DRBG_type.pod @@ -27,7 +27,7 @@ private random instances. RAND_set_seed_source_type() specifies the seed source that will be used within the library context I. The seed source of name I with properties I will be fetched and used to seed the primary -random big generator. +random bit generator. =head1 RETURN VALUES @@ -54,7 +54,7 @@ These functions were added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/RSA_meth_new.pod b/deps/openssl/openssl/doc/man3/RSA_meth_new.pod index 29ea4161b0b535..40f9bc4e82810f 100644 --- a/deps/openssl/openssl/doc/man3/RSA_meth_new.pod +++ b/deps/openssl/openssl/doc/man3/RSA_meth_new.pod @@ -147,7 +147,7 @@ passed as a parameter. This might be useful for creating a new B based on an existing one, but with some differences. RSA_meth_free() destroys an B structure and frees up any -memory associated with it. +memory associated with it. If the argument is NULL, nothing is done. RSA_meth_get0_name() will return a pointer to the name of this RSA_METHOD. This is a pointer to the internal name string and so @@ -260,7 +260,7 @@ Other functions described here were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/SCT_new.pod b/deps/openssl/openssl/doc/man3/SCT_new.pod index 235762721992b1..a20affd38a8412 100644 --- a/deps/openssl/openssl/doc/man3/SCT_new.pod +++ b/deps/openssl/openssl/doc/man3/SCT_new.pod @@ -166,6 +166,12 @@ SCT_set_source() can be used to record where the SCT was found (TLS extension, X.509 certificate extension or OCSP response). This is not required for verifying the SCT. +SCT_free() frees the specified SCT. +If the argument is NULL, nothing is done. + +SCT_LIST_free() frees the specified stack of SCTs. +If the argument is NULL, nothing is done. + =head1 NOTES Some of the setters return int, instead of void. These will all return 1 on @@ -210,7 +216,7 @@ These functions were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/SSL_CTX_set_alpn_select_cb.pod b/deps/openssl/openssl/doc/man3/SSL_CTX_set_alpn_select_cb.pod index 102e6578512c1b..2997a995575677 100644 --- a/deps/openssl/openssl/doc/man3/SSL_CTX_set_alpn_select_cb.pod +++ b/deps/openssl/openssl/doc/man3/SSL_CTX_set_alpn_select_cb.pod @@ -52,7 +52,8 @@ SSL_select_next_proto, SSL_get0_alpn_selected, SSL_get0_next_proto_negotiated SSL_CTX_set_alpn_protos() and SSL_set_alpn_protos() are used by the client to set the list of protocols available to be negotiated. The B must be in protocol-list format, described below. The length of B is specified in -B. +B. Setting B to 0 clears any existing list of ALPN +protocols and no ALPN extension will be sent to the server. SSL_CTX_set_alpn_select_cb() sets the application callback B used by a server to select which protocol to use for the incoming connection. When B @@ -73,9 +74,16 @@ B and B, B must be in the protocol-list format described below. The first item in the B, B list that matches an item in the B, B list is selected, and returned in B, B. The B value will point into either B or -B, so it should be copied immediately. If no match is found, the first -item in B, B is returned in B, B. This -function can also be used in the NPN callback. +B, so it should be copied immediately. The client list must include at +least one valid (nonempty) protocol entry in the list. + +The SSL_select_next_proto() helper function can be useful from either the ALPN +callback or the NPN callback (described below). If no match is found, the first +item in B, B is returned in B, B and +B is returned. This can be useful when implementing +the NPN callback. In the ALPN case, the value returned in B and B +must be ignored if B has been returned from +SSL_select_next_proto(). SSL_CTX_set_next_proto_select_cb() sets a callback B that is called when a client needs to select a protocol from the server's provided list, and a @@ -85,9 +93,10 @@ must be set to point to the selected protocol (which may be within B). The length of the protocol name must be written into B. The server's advertised protocols are provided in B and B. The callback can assume that B is syntactically valid. The client must -select a protocol. It is fatal to the connection if this callback returns -a value other than B. The B parameter is the pointer -set via SSL_CTX_set_next_proto_select_cb(). +select a protocol (although it may be an empty, zero length protocol). It is +fatal to the connection if this callback returns a value other than +B or if the zero length protocol is selected. The B +parameter is the pointer set via SSL_CTX_set_next_proto_select_cb(). SSL_CTX_set_next_protos_advertised_cb() sets a callback B that is called when a TLS server needs a list of supported protocols for Next Protocol @@ -149,7 +158,8 @@ A match was found and is returned in B, B. =item OPENSSL_NPN_NO_OVERLAP No match was found. The first item in B, B is returned in -B, B. +B, B (or B and 0 in the case where the first entry in +B is invalid). =back @@ -187,7 +197,7 @@ L =head1 COPYRIGHT -Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/SSL_CTX_set_cipher_list.pod b/deps/openssl/openssl/doc/man3/SSL_CTX_set_cipher_list.pod index 71f399400c2a12..08d7693f420edf 100644 --- a/deps/openssl/openssl/doc/man3/SSL_CTX_set_cipher_list.pod +++ b/deps/openssl/openssl/doc/man3/SSL_CTX_set_cipher_list.pod @@ -52,7 +52,7 @@ ciphersuite names in order of preference. Valid TLSv1.3 ciphersuite names are: =back -An empty list is permissible. The default value for the this setting is: +An empty list is permissible. The default value for this setting is: "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256" @@ -119,7 +119,7 @@ OSSL_default_cipher_list() and OSSL_default_ciphersites() are new in 3.0. =head1 COPYRIGHT -Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2000-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod b/deps/openssl/openssl/doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod index f289383c781521..e4871590f719fe 100644 --- a/deps/openssl/openssl/doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod +++ b/deps/openssl/openssl/doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod @@ -126,9 +126,9 @@ The I key material can be set using L. =head1 NOTES -Session resumption shortcuts the TLS so that the client certificate -negotiation don't occur. It makes up for this by storing client certificate -an all other negotiated state information encrypted within the ticket. In a +Session resumption shortcuts the TLS handshake so that the client certificate +negotiation doesn't occur. It makes up for this by storing the client certificate +and all other negotiated state information encrypted within the ticket. In a resumed session the applications will have all this state information available exactly as if a full negotiation had occurred. @@ -241,7 +241,7 @@ OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2014-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2014-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/TS_RESP_CTX_new.pod b/deps/openssl/openssl/doc/man3/TS_RESP_CTX_new.pod index 725a1921d133ed..01fd23a10eb44f 100644 --- a/deps/openssl/openssl/doc/man3/TS_RESP_CTX_new.pod +++ b/deps/openssl/openssl/doc/man3/TS_RESP_CTX_new.pod @@ -27,6 +27,7 @@ and property query to NULL. This results in the default (NULL) library context being used for any operations requiring algorithm fetches. TS_RESP_CTX_free() frees the B object I. +If the argument is NULL, nothing is done. =head1 RETURN VALUES @@ -39,7 +40,7 @@ The function TS_RESP_CTX_new_ex() was added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/X509V3_get_d2i.pod b/deps/openssl/openssl/doc/man3/X509V3_get_d2i.pod index 4a2e81b0dbdff9..88294ff710f2e0 100644 --- a/deps/openssl/openssl/doc/man3/X509V3_get_d2i.pod +++ b/deps/openssl/openssl/doc/man3/X509V3_get_d2i.pod @@ -108,6 +108,7 @@ The function X509V3_get_d2i() and its variants will return NULL if the extension is not found, occurs multiple times or cannot be decoded. It is possible to determine the precise reason by checking the value of I<*crit>. +The returned pointer must be explicitly freed. The function X509V3_add1_i2d() and its variants allocate B objects on STACK I<*x> depending on I. The B objects @@ -236,7 +237,7 @@ L =head1 COPYRIGHT -Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/X509_LOOKUP.pod b/deps/openssl/openssl/doc/man3/X509_LOOKUP.pod index 4d2fe38f25ab2a..8f0240de2d13b7 100644 --- a/deps/openssl/openssl/doc/man3/X509_LOOKUP.pod +++ b/deps/openssl/openssl/doc/man3/X509_LOOKUP.pod @@ -85,6 +85,7 @@ X509_LOOKUP_shutdown() tears down the internal state and resources of the given B. X509_LOOKUP_free() destructs the given B. +If the argument is NULL, nothing is done. X509_LOOKUP_set_method_data() and X509_LOOKUP_get_method_data() associates and retrieves a pointer to application data to and from the @@ -228,7 +229,7 @@ added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/X509_LOOKUP_meth_new.pod b/deps/openssl/openssl/doc/man3/X509_LOOKUP_meth_new.pod index 2021749935631b..ef2c3cdd500ad5 100644 --- a/deps/openssl/openssl/doc/man3/X509_LOOKUP_meth_new.pod +++ b/deps/openssl/openssl/doc/man3/X509_LOOKUP_meth_new.pod @@ -110,6 +110,7 @@ be given a human-readable string containing a brief description of the lookup method. X509_LOOKUP_meth_free() destroys a B structure. +If the argument is NULL, nothing is done. X509_LOOKUP_get_new_item() and X509_LOOKUP_set_new_item() get and set the function that is called when an B object is created with @@ -186,7 +187,7 @@ The functions described here were added in OpenSSL 1.1.0i. =head1 COPYRIGHT -Copyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2018-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/X509_STORE_new.pod b/deps/openssl/openssl/doc/man3/X509_STORE_new.pod index 31d466faa42a7e..5b3dadb243d709 100644 --- a/deps/openssl/openssl/doc/man3/X509_STORE_new.pod +++ b/deps/openssl/openssl/doc/man3/X509_STORE_new.pod @@ -27,6 +27,7 @@ X509_STORE_lock() locks the store from modification by other threads, X509_STORE_unlock() unlocks it. X509_STORE_free() frees up a single X509_STORE object. +If the argument is NULL, nothing is done. =head1 RETURN VALUES @@ -49,7 +50,7 @@ functions were added in OpenSSL 1.1.0. =head1 COPYRIGHT -Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/X509_dup.pod b/deps/openssl/openssl/doc/man3/X509_dup.pod index 849364e2aae700..c8dd79ff71b73e 100644 --- a/deps/openssl/openssl/doc/man3/X509_dup.pod +++ b/deps/openssl/openssl/doc/man3/X509_dup.pod @@ -367,7 +367,7 @@ followed by I, which re-builds the cached data. B_free>() releases the object and all pointers and sub-objects -within it. +within it. If the argument is NULL, nothing is done. B_print_ctx>() prints the object I on the specified BIO I. Each line will be prefixed with I spaces. diff --git a/deps/openssl/openssl/doc/man3/X509_new.pod b/deps/openssl/openssl/doc/man3/X509_new.pod index ea2b3a2cc9b0dc..4b52972554dee9 100644 --- a/deps/openssl/openssl/doc/man3/X509_new.pod +++ b/deps/openssl/openssl/doc/man3/X509_new.pod @@ -18,7 +18,7 @@ X509_chain_up_ref - X509 certificate ASN1 allocation functions =head1 DESCRIPTION -The X509 ASN1 allocation routines, allocate and free an +The X509 ASN1 allocation routines allocate and free an X509 structure, which represents an X509 certificate. X509_new_ex() allocates and initializes a X509 structure with a @@ -33,7 +33,8 @@ and property query to NULL. This results in the default (NULL) library context being used for any X509 operations requiring algorithm fetches. X509_free() decrements the reference count of B structure B and -frees it up if the reference count is zero. If B is NULL nothing is done. +frees it up if the reference count is zero. If the argument is NULL, +nothing is done. X509_up_ref() increments the reference count of B. @@ -86,7 +87,7 @@ The function X509_new_ex() was added in OpenSSL 3.0. =head1 COPYRIGHT -Copyright 2002-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2002-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man3/d2i_X509.pod b/deps/openssl/openssl/doc/man3/d2i_X509.pod index 00efb603581661..c4b589dd89576e 100644 --- a/deps/openssl/openssl/doc/man3/d2i_X509.pod +++ b/deps/openssl/openssl/doc/man3/d2i_X509.pod @@ -387,7 +387,9 @@ B>() attempts to decode I bytes at I<*ppin>. If successful a pointer to the B> structure is returned and I<*ppin> is incremented to the byte following the parsed data. If I is not NULL then a pointer to the returned structure is also written to I<*a>. If an error occurred -then NULL is returned. +then NULL is returned. The caller retains ownership of the +returned object and needs to free it when it is no longer needed, e.g. +using X509_free() for X509 objects or DSA_SIG_free() for DSA_SIG objects. On a successful return, if I<*a> is not NULL then it is assumed that I<*a> contains a valid B> structure and an attempt is made to reuse it. @@ -615,7 +617,7 @@ efficiency reasons. =head1 COPYRIGHT -Copyright 1998-2023 The OpenSSL Project Authors. All Rights Reserved. +Copyright 1998-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man7/EVP_KEYEXCH-DH.pod b/deps/openssl/openssl/doc/man7/EVP_KEYEXCH-DH.pod index a6927afefb24e9..eaec67775ddb7f 100644 --- a/deps/openssl/openssl/doc/man7/EVP_KEYEXCH-DH.pod +++ b/deps/openssl/openssl/doc/man7/EVP_KEYEXCH-DH.pod @@ -7,9 +7,14 @@ EVP_KEYEXCH-DH =head1 DESCRIPTION -Key exchange support for the B key type. +Key exchange support for the B and B key types. -=head2 DH key exchange parameters +Please note that although both key types support the same key exchange +operations, they cannot be used together in a single key exchange. It +is not possible to use a private key of the B type in key exchange +with the public key of B type and vice versa. + +=head2 DH and DHX key exchange parameters =over 4 @@ -122,7 +127,7 @@ L, =head1 COPYRIGHT -Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man7/EVP_PKEY-DH.pod b/deps/openssl/openssl/doc/man7/EVP_PKEY-DH.pod index 1dfc9c7345442f..1232730c33647c 100644 --- a/deps/openssl/openssl/doc/man7/EVP_PKEY-DH.pod +++ b/deps/openssl/openssl/doc/man7/EVP_PKEY-DH.pod @@ -7,11 +7,12 @@ EVP_PKEY-DH, EVP_PKEY-DHX, EVP_KEYMGMT-DH, EVP_KEYMGMT-DHX =head1 DESCRIPTION -For B FFC key agreement, two classes of domain parameters can be used: -"safe" domain parameters that are associated with approved named safe-prime -groups, and a class of "FIPS186-type" domain parameters. FIPS186-type domain -parameters should only be used for backward compatibility with existing -applications that cannot be upgraded to use the approved safe-prime groups. +For finite field Diffie-Hellman key agreement, two classes of domain +parameters can be used: "safe" domain parameters that are associated with +approved named safe-prime groups, and a class of "FIPS186-type" domain +parameters. FIPS186-type domain parameters should only be used for backward +compatibility with existing applications that cannot be upgraded to use the +approved safe-prime groups. See L for more information about FFC keys. @@ -20,11 +21,11 @@ I value. The B key type uses X9.42 format which saves the value of I and this must be used for FIPS186-4. If key validation is required, users should be aware of the nuances associated with FIPS186-4 style parameters as discussed in -L. +L. =head2 DH and DHX domain parameters -In addition to the common FCC parameters that all FFC keytypes should support +In addition to the common FFC parameters that all FFC keytypes should support (see L) the B and B keytype implementations support the following: @@ -129,43 +130,44 @@ Where s is the security strength of the key which has values of =back -=head2 DH key validation +=head2 DH and DHX key validation -For B that is not a named group the FIPS186-4 standard specifies that the +For keys that are not a named group the FIPS186-4 standard specifies that the values used for FFC parameter generation are also required for parameter validation. This means that optional FFC domain parameter values for I, I and I or I may need to be stored for validation purposes. For B the I and I can be stored in ASN1 data (but the I or I cannot be stored). It is recommended to use a -named safe prime group instead. +B parameters with named safe prime group instead. -For DH keys, L behaves in the following way: -The OpenSSL FIPS provider tests if the parameters are either an approved safe -prime group OR that the FFC parameters conform to FIPS186-4 as defined in -SP800-56Ar3 I. -The OpenSSL default provider uses simpler checks that allows there to be no I -value for backwards compatibility. +With the OpenSSL FIPS provider, L and +L behave in the following way: the parameters +are tested if they are either an approved safe prime group OR that the FFC +parameters conform to FIPS186-4 as defined in SP800-56Ar3 I. -For DH keys, L is equivalent to -L. +The OpenSSL default provider uses simpler checks that allows there to be no I +value for backwards compatibility, however the L will +test the I

value for being a prime (and a safe prime if I is missing) +which can take significant time. The L avoids +the prime tests. -For DH keys, L conforms to -SP800-56Ar3 I. +L conforms to SP800-56Ar3 +I. -For DH keys, L conforms to -SP800-56Ar3 I when the -DH key is an approved named safe prime group, otherwise it is the same as -L. +L conforms to SP800-56Ar3 +I when the key is an approved named safe +prime group, otherwise it is the same as L. -For DH Keys, L tests that the private key is in the -correct range according to SP800-56Ar3. The OpenSSL FIPS provider requires the -value of I to be set (note that this is set for named safe prime groups). +L tests that the private key is in the correct range +according to SP800-56Ar3. The OpenSSL FIPS provider requires the value of I +to be set (note that this is implicitly set for named safe prime groups). For backwards compatibility the OpenSSL default provider only requires I

to be set. -For DH keys, L conforms to -SP800-56Ar3 I. +L conforms to SP800-56Ar3 +I. =head1 EXAMPLES @@ -327,7 +329,7 @@ L =head1 COPYRIGHT -Copyright 2020-2022 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/doc/man7/ossl_store.pod b/deps/openssl/openssl/doc/man7/ossl_store.pod index 3152cff104240a..d6fdae8f22b0f5 100644 --- a/deps/openssl/openssl/doc/man7/ossl_store.pod +++ b/deps/openssl/openssl/doc/man7/ossl_store.pod @@ -44,7 +44,11 @@ other encoding is undefined. =head2 A generic call - OSSL_STORE_CTX *ctx = OSSL_STORE_open("file:/foo/bar/data.pem"); + #include /* for UI_get_default_method */ + #include + + OSSL_STORE_CTX *ctx = OSSL_STORE_open("file:/foo/bar/data.pem", + UI_get_default_method(), NULL, NULL, NULL); /* * OSSL_STORE_eof() simulates file semantics for any repository to signal @@ -65,6 +69,7 @@ other encoding is undefined. PEM_write_X509(stdout, OSSL_STORE_INFO_get0_CERT(info)); break; } + OSSL_STORE_INFO_free(info); } OSSL_STORE_close(ctx); @@ -77,7 +82,7 @@ L =head1 COPYRIGHT -Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. +Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy diff --git a/deps/openssl/openssl/fuzz/bignum.c b/deps/openssl/openssl/fuzz/bignum.c index d7c3716aacb43b..08da6fb197f5be 100644 --- a/deps/openssl/openssl/fuzz/bignum.c +++ b/deps/openssl/openssl/fuzz/bignum.c @@ -1,5 +1,5 @@ /* - * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,11 +52,12 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len) */ if (len > 2) { len -= 3; - l1 = (buf[0] * len) / 255; + /* limit l1, l2, and l3 to be no more than 512 bytes */ + l1 = ((buf[0] * len) / 255) % 512; ++buf; - l2 = (buf[0] * (len - l1)) / 255; + l2 = ((buf[0] * (len - l1)) / 255) % 512; ++buf; - l3 = len - l1 - l2; + l3 = (len - l1 - l2) % 512; s1 = buf[0] & 1; s3 = buf[0] & 4; diff --git a/deps/openssl/openssl/include/crypto/aes_platform.h b/deps/openssl/openssl/include/crypto/aes_platform.h index e95ad5aa5de6f8..30c968b62c6c51 100644 --- a/deps/openssl/openssl/include/crypto/aes_platform.h +++ b/deps/openssl/openssl/include/crypto/aes_platform.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -65,6 +65,7 @@ void AES_xts_decrypt(const unsigned char *inp, unsigned char *out, size_t len, # ifdef VPAES_ASM # define VPAES_CAPABLE (OPENSSL_ppccap_P & PPC_ALTIVEC) # endif +# if !defined(OPENSSL_SYS_MACOSX) # define HWAES_CAPABLE (OPENSSL_ppccap_P & PPC_CRYPTO207) # define HWAES_set_encrypt_key aes_p8_set_encrypt_key # define HWAES_set_decrypt_key aes_p8_set_decrypt_key @@ -74,6 +75,7 @@ void AES_xts_decrypt(const unsigned char *inp, unsigned char *out, size_t len, # define HWAES_ctr32_encrypt_blocks aes_p8_ctr32_encrypt_blocks # define HWAES_xts_encrypt aes_p8_xts_encrypt # define HWAES_xts_decrypt aes_p8_xts_decrypt +# endif /* OPENSSL_SYS_MACOSX */ # endif /* PPC */ # if (defined(__arm__) || defined(__arm) || defined(__aarch64__)) diff --git a/deps/openssl/openssl/include/crypto/bn.h b/deps/openssl/openssl/include/crypto/bn.h index 4cc23bd146fe0b..c5f328156d3a9c 100644 --- a/deps/openssl/openssl/include/crypto/bn.h +++ b/deps/openssl/openssl/include/crypto/bn.h @@ -88,7 +88,7 @@ int bn_rshift_fixed_top(BIGNUM *r, const BIGNUM *a, int n); int bn_div_fixed_top(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); int ossl_bn_mask_bits_fixed_top(BIGNUM *a, int n); -int ossl_bn_is_word_fixed_top(const BIGNUM *a, BN_ULONG w); +int ossl_bn_is_word_fixed_top(const BIGNUM *a, const BN_ULONG w); int ossl_bn_priv_rand_range_fixed_top(BIGNUM *r, const BIGNUM *range, unsigned int strength, BN_CTX *ctx); int ossl_bn_gen_dsa_nonce_fixed_top(BIGNUM *out, const BIGNUM *range, diff --git a/deps/openssl/openssl/include/crypto/bn_conf.h b/deps/openssl/openssl/include/crypto/bn_conf.h deleted file mode 100644 index 79400c6472a49c..00000000000000 --- a/deps/openssl/openssl/include/crypto/bn_conf.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/bn_conf.h" diff --git a/deps/openssl/openssl/include/crypto/dso_conf.h b/deps/openssl/openssl/include/crypto/dso_conf.h deleted file mode 100644 index e7f2afa9872320..00000000000000 --- a/deps/openssl/openssl/include/crypto/dso_conf.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/dso_conf.h" diff --git a/deps/openssl/openssl/include/openssl/asn1.h b/deps/openssl/openssl/include/openssl/asn1.h deleted file mode 100644 index cd9fc7cc706c37..00000000000000 --- a/deps/openssl/openssl/include/openssl/asn1.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/asn1.h" diff --git a/deps/openssl/openssl/include/openssl/asn1t.h b/deps/openssl/openssl/include/openssl/asn1t.h deleted file mode 100644 index 6ff4f574949bbd..00000000000000 --- a/deps/openssl/openssl/include/openssl/asn1t.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/asn1t.h" diff --git a/deps/openssl/openssl/include/openssl/bio.h b/deps/openssl/openssl/include/openssl/bio.h deleted file mode 100644 index dcece3cb4d6ebf..00000000000000 --- a/deps/openssl/openssl/include/openssl/bio.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/bio.h" diff --git a/deps/openssl/openssl/include/openssl/cmp.h b/deps/openssl/openssl/include/openssl/cmp.h deleted file mode 100644 index 7c8a6dc96fc360..00000000000000 --- a/deps/openssl/openssl/include/openssl/cmp.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/cmp.h" diff --git a/deps/openssl/openssl/include/openssl/cms.h b/deps/openssl/openssl/include/openssl/cms.h deleted file mode 100644 index 33a00775c9fa76..00000000000000 --- a/deps/openssl/openssl/include/openssl/cms.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/cms.h" diff --git a/deps/openssl/openssl/include/openssl/conf.h b/deps/openssl/openssl/include/openssl/conf.h deleted file mode 100644 index 2712886cafcd78..00000000000000 --- a/deps/openssl/openssl/include/openssl/conf.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/conf.h" diff --git a/deps/openssl/openssl/include/openssl/configuration.h b/deps/openssl/openssl/include/openssl/configuration.h deleted file mode 100644 index 8ffad996047c5e..00000000000000 --- a/deps/openssl/openssl/include/openssl/configuration.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/configuration.h" diff --git a/deps/openssl/openssl/include/openssl/crmf.h b/deps/openssl/openssl/include/openssl/crmf.h deleted file mode 100644 index 4103852ecb21c2..00000000000000 --- a/deps/openssl/openssl/include/openssl/crmf.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/crmf.h" diff --git a/deps/openssl/openssl/include/openssl/crypto.h b/deps/openssl/openssl/include/openssl/crypto.h deleted file mode 100644 index 6d0e701ebd3c19..00000000000000 --- a/deps/openssl/openssl/include/openssl/crypto.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/crypto.h" diff --git a/deps/openssl/openssl/include/openssl/ct.h b/deps/openssl/openssl/include/openssl/ct.h deleted file mode 100644 index 7ebb84387135be..00000000000000 --- a/deps/openssl/openssl/include/openssl/ct.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/ct.h" diff --git a/deps/openssl/openssl/include/openssl/err.h b/deps/openssl/openssl/include/openssl/err.h deleted file mode 100644 index bf482070474781..00000000000000 --- a/deps/openssl/openssl/include/openssl/err.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/err.h" diff --git a/deps/openssl/openssl/include/openssl/ess.h b/deps/openssl/openssl/include/openssl/ess.h deleted file mode 100644 index 64cc016225119f..00000000000000 --- a/deps/openssl/openssl/include/openssl/ess.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/ess.h" diff --git a/deps/openssl/openssl/include/openssl/fipskey.h b/deps/openssl/openssl/include/openssl/fipskey.h deleted file mode 100644 index c012013d98d4e8..00000000000000 --- a/deps/openssl/openssl/include/openssl/fipskey.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/fipskey.h" diff --git a/deps/openssl/openssl/include/openssl/lhash.h b/deps/openssl/openssl/include/openssl/lhash.h deleted file mode 100644 index 8d824f5cfe6274..00000000000000 --- a/deps/openssl/openssl/include/openssl/lhash.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/lhash.h" diff --git a/deps/openssl/openssl/include/openssl/ocsp.h b/deps/openssl/openssl/include/openssl/ocsp.h deleted file mode 100644 index 5b13afedf36bb6..00000000000000 --- a/deps/openssl/openssl/include/openssl/ocsp.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/ocsp.h" diff --git a/deps/openssl/openssl/include/openssl/opensslv.h b/deps/openssl/openssl/include/openssl/opensslv.h deleted file mode 100644 index 078cfba40fbe73..00000000000000 --- a/deps/openssl/openssl/include/openssl/opensslv.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/opensslv.h" diff --git a/deps/openssl/openssl/include/openssl/pkcs12.h b/deps/openssl/openssl/include/openssl/pkcs12.h deleted file mode 100644 index 2d7e2c08e99175..00000000000000 --- a/deps/openssl/openssl/include/openssl/pkcs12.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/pkcs12.h" diff --git a/deps/openssl/openssl/include/openssl/pkcs7.h b/deps/openssl/openssl/include/openssl/pkcs7.h deleted file mode 100644 index b553f9d0f053b0..00000000000000 --- a/deps/openssl/openssl/include/openssl/pkcs7.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/pkcs7.h" diff --git a/deps/openssl/openssl/include/openssl/safestack.h b/deps/openssl/openssl/include/openssl/safestack.h deleted file mode 100644 index 989eafb33023b9..00000000000000 --- a/deps/openssl/openssl/include/openssl/safestack.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/safestack.h" diff --git a/deps/openssl/openssl/include/openssl/srp.h b/deps/openssl/openssl/include/openssl/srp.h deleted file mode 100644 index 9df42dad4c3127..00000000000000 --- a/deps/openssl/openssl/include/openssl/srp.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/srp.h" diff --git a/deps/openssl/openssl/include/openssl/ssl.h b/deps/openssl/openssl/include/openssl/ssl.h deleted file mode 100644 index eb74ca98a9759a..00000000000000 --- a/deps/openssl/openssl/include/openssl/ssl.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/ssl.h" diff --git a/deps/openssl/openssl/include/openssl/tls1.h b/deps/openssl/openssl/include/openssl/tls1.h index 40ac50e9757ce4..d005d3c16dfff9 100644 --- a/deps/openssl/openssl/include/openssl/tls1.h +++ b/deps/openssl/openssl/include/openssl/tls1.h @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * Copyright 2005 Nokia. All rights reserved. * @@ -214,6 +214,8 @@ extern "C" { # define TLSEXT_max_fragment_length_1024 2 # define TLSEXT_max_fragment_length_2048 3 # define TLSEXT_max_fragment_length_4096 4 +/* OpenSSL value for unset maximum fragment length extension */ +# define TLSEXT_max_fragment_length_UNSPECIFIED 255 int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); diff --git a/deps/openssl/openssl/include/openssl/ui.h b/deps/openssl/openssl/include/openssl/ui.h deleted file mode 100644 index f5edb766b4fc6c..00000000000000 --- a/deps/openssl/openssl/include/openssl/ui.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/ui.h" diff --git a/deps/openssl/openssl/include/openssl/x509.h b/deps/openssl/openssl/include/openssl/x509.h deleted file mode 100644 index ed28bd68cb2474..00000000000000 --- a/deps/openssl/openssl/include/openssl/x509.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/x509.h" diff --git a/deps/openssl/openssl/include/openssl/x509_vfy.h b/deps/openssl/openssl/include/openssl/x509_vfy.h deleted file mode 100644 index 9270a3ee09750a..00000000000000 --- a/deps/openssl/openssl/include/openssl/x509_vfy.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/x509_vfy.h" diff --git a/deps/openssl/openssl/include/openssl/x509v3.h b/deps/openssl/openssl/include/openssl/x509v3.h deleted file mode 100644 index 5629ae9a3a90af..00000000000000 --- a/deps/openssl/openssl/include/openssl/x509v3.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../config/x509v3.h" diff --git a/deps/openssl/openssl/providers/fips-sources.checksums b/deps/openssl/openssl/providers/fips-sources.checksums index 1a6e3732976392..2075eca274d6f1 100644 --- a/deps/openssl/openssl/providers/fips-sources.checksums +++ b/deps/openssl/openssl/providers/fips-sources.checksums @@ -19,7 +19,7 @@ ab94a27e533e164bcf09898a6f6019f43609d51a3b374cf75482dcf2914d464e crypto/aes/asm ce91f0893a2a35fdf4c024ccb0fd8329b30fdbd955f0ae011ab948101ee14951 crypto/aes/asm/aesni-sha256-x86_64.pl 4ff74d4e629a88ef5a9e3d3f5b340fc0a4793d16d7cc7f1b70da62512a856248 crypto/aes/asm/aesni-x86.pl 30103cfe3b29d06b34feff48a927e0fa649e9109d35a3db64b09cfeb15426fa2 crypto/aes/asm/aesni-x86_64.pl -67c73dbf78b5f3c8a436800dc43bf122cd1f0c4fefab357359edaae4fbb27e8e crypto/aes/asm/aesp8-ppc.pl +f3490c936a80e012c49e577ec6e1d4d36df324dfef6264e788e6225e20b5fd52 crypto/aes/asm/aesp8-ppc.pl a5807ed92ec8a16d123061487c385bf1f65e50878cee95c8e8096844454129f8 crypto/aes/asm/aest4-sparcv9.pl d34cf129a8c63e2b77a74117ed4440a4f35408dabd90e21e70eae92d208fa516 crypto/aes/asm/aesv8-armx.pl a0b578b7d2787c91013547df07dfa73d8d7a420446dd624c66f7c55159817eb2 crypto/aes/asm/bsaes-armv7.pl @@ -106,7 +106,7 @@ c4d64da1cdc732ea918fccd6a7bb2746b03365dd26f7ba1e74e08c307ca4c58e crypto/bn/rsaz c39334b70e1394e43f378ae8d31b6e6dc125e4d9181e6536d38e649c4eaadb75 crypto/buffer/buffer.c d2bfdfd96b182741d2d51f91478ffcc48491b0da44662bc1c32bc506b3eef1ba crypto/c64xpluscpuid.pl 0e1a41a2d81b5765bca3df448f60bf1fad91e485fe89dd65a7300ffc419e316d crypto/cmac/cmac.c -ff9be205d6d7ff00b0e64508f0eb8d9ec0415fbabc0948d26e308212b3f7b2d8 crypto/context.c +5113d8d12d884f845cad3d35d92f0a1ee20ebafd7a169273642f4e8178711de9 crypto/context.c c309d81ea991ddf5be4337afad2fd132169f7443c76f863349d3f3c82f3374e4 crypto/core_algorithm.c f0fd9eb38bf7f196bbb4d26ce8fdf86d0a4f9db219157e66b2c0ffefb4f42005 crypto/core_fetch.c 799c84d224639c6760c5c28e0e287500a973ca6d0c3d7c1bdcd61b0da4018b3c crypto/core_namemap.c @@ -178,7 +178,7 @@ fa901b996eb0e460359cd470843bdb03af7a77a2f1136c5e1d30daef70f3e4d2 crypto/ec/ec_m 129c6b42417bfcf582f4a959cfd65433e6f85b158274f4fa38f9c62615ac9166 crypto/ec/ec_oct.c c7fba2f2c33f67dafa23caef8c3abd12f5336274a9a07d412b83be0366969ee6 crypto/ec/ecdh_kdf.c b2cf8f052a5716137da7b0e857ed7a5df5fb513b6d14534199a05e32f2b5a866 crypto/ec/ecdh_ossl.c -031f99c746ac746c1d4f243dd71c8246b502ff00c1d7ca29f7ca024f0e37e14a crypto/ec/ecdsa_ossl.c +2e00c2e0e6f6d58b81fc23fe500f59e98793dc828ca87d64eba10cc0fddd0dc1 crypto/ec/ecdsa_ossl.c b6baa42b16e8df69a12e0ab101033100cddc808ec2682ba1574373e6ec86ae93 crypto/ec/ecdsa_sign.c f686cea8c8a3259d95c1e6142813d9da47b6d624c62f26c7e4a16d5607cddb35 crypto/ec/ecdsa_vrf.c 141cfc1459214555b623517a054a9e8d5e4065a11301237b7247be2c6f397a0a crypto/ec/ecp_mont.c @@ -191,7 +191,7 @@ e2705097cfab64e8d7eb2feba37c3f12b18aec74b135ad0c7f073efccf336d4c crypto/ec/ecx_ 22c44f561ab42d1bd7fd3a3c538ebaba375a704f98056b035e7949d73963c580 crypto/ec/ecx_key.c 28abc295dad8888b5482eb61d31cd78dd80545ecb67dc6f9446a36deb8c40a5e crypto/evp/asymcipher.c 0e75a058dcbbb62cfe39fec6c4a85385dc1a8fce794e4278ce6cebb29763b82b crypto/evp/dh_support.c -1af3872164b4a4757bc7896a24b4d2f8eb2cfb4cba0d872a93db69975693e0a6 crypto/evp/digest.c +8f9e9da65ab1d0fb3feae5abd6b5c3649d3a4d03e936bb7624a431080de181ae crypto/evp/digest.c 838277f228cd3025cf95a9cd435e5606ad1fb5d207bbb057aa29892e6a657c55 crypto/evp/ec_support.c 61df3942752307b7006f09d7628348a0cc9e5555469a3a8862349067a52824b7 crypto/evp/evp_enc.c 62c994fd91dc4a5a1a81dfa9391d6eadae62d3549b2e1b22acb2e7c4cd278f27 crypto/evp/evp_fetch.c @@ -249,7 +249,7 @@ af1c034152d82b29cb7c938c8516cfd136b62bac0908c1d40eb50790d23b288c crypto/modes/c bdf25257b15eca206be4d950d2dd807ca5f058f91f54edbd7a0d312ed83eef8e crypto/modes/ofb128.c e55a816c356b2d526bc6e40c8b81afa02576e4d44c7d7b6bbe444fb8b01aad41 crypto/modes/wrap128.c 608a04f387be2a509b4d4ad414b7015ab833e56b85020e692e193160f36883a2 crypto/modes/xts128.c -fecd75b0e1646fb18eeb6b1f528015296157a9bcf97191d0f32b9619aa4f0ffb crypto/o_str.c +abba788a11469f5c01c766fdac64eccd4fb598b2d4d9a12efb086ae87009acb8 crypto/o_str.c 8ddbbdf43131c10dcd4428aef0eff2b1e98b0410accada0fad41a4925868beef crypto/packet.c c698d5166d091d6bb6e9df3c211fe1cc916fd43a26ec844f28f547cd708f9c55 crypto/param_build.c 2a0f272dd553b698e8c6fa57962694ebd6064cb03fe26a60df529205568d315d crypto/param_build_set.c @@ -259,7 +259,7 @@ b6cbfc8791b31587f32a3f9e4c117549793528ebddc34a361bad1ad8cf8d4c42 crypto/params_ 97cb7414dc2f165d5849ee3b46cdfff0afb067729435d9c01a747e0ca41e230c crypto/ppccap.c 826a78afb376cbf1e87f12a2a67eef2ee47059a0fd3f9cba7ce7f035e34f8052 crypto/ppccpuid.pl b4d34272a0bd1fbe6562022bf7ea6259b6a5a021a48222d415be47ef5ef2a905 crypto/property/defn_cache.c -3c4ade2fed4605e374d85ec1134a98da34e7124f89f44b81a754e8cfe81f14ba crypto/property/property.c +c3709986fd2ab18f3c6136d8dd7705a4538986aa789ceafe770c3a376db3c569 crypto/property/property.c 66da4f28d408133fb544b14aeb9ad4913e7c5c67e2826e53f0dc5bf4d8fada26 crypto/property/property_local.h b0b382ce829192d2537561cfb0fb5c7afb04305f321f7b3c91441b4ba99b9c92 crypto/property/property_parse.c a7cefda6a117550e2c76e0f307565ce1e11640b11ba10c80e469a837fd1212a3 crypto/property/property_query.c @@ -278,7 +278,7 @@ f2222f270e57559537d3da8abbeb1390bc5376b73dae59d536af6e73eb48bba0 crypto/rsa/rsa a65e85be5269d8cb88e86b3413c978fa8994419a671092cbf104ff1a08fda23b crypto/rsa/rsa_local.h cf0b75cd54b61b9b9a290ef18d0ddce9fb26a029a54eb3f720d9b25188440f00 crypto/rsa/rsa_mp_names.c 5c60f6e05db82e13178d805deb1947b8eee4a905e6e77523d3b288da70a46bb5 crypto/rsa/rsa_none.c -33de2accc3af530fd0a4758eb83d5e1d994bf49bac4512b01387dbae656e1a7d crypto/rsa/rsa_oaep.c +f733d03a7f633514bfb33862cd0fa46ac952a86f84000f109c0d37937bac9a1e crypto/rsa/rsa_oaep.c e05fcad237b7e4e7842ad6e142789fe25d060247283c337c78703be6ecc31ed9 crypto/rsa/rsa_ossl.c be3f39c1fcb777d6c0122061f9ef735d10a6bee95d67fcc1ca6ae2a664022d2b crypto/rsa/rsa_pk1.c 174a42e156be48927fe6d6bf0d95575619b8e643a99761275bff933bc3449722 crypto/rsa/rsa_pss.c @@ -349,9 +349,9 @@ a41ae93a755e2ec89b3cb5b4932e2b508fdda92ace2e025a2650a6da0e9e972c crypto/threads af0af59fe2cb8668a96751f343232d7faa3e7a937beb2bda09ed74fe60b9cb5f crypto/x86_64cpuid.pl bbec287bb9bf35379885f8f8998b7fd9e8fc22efee9e1b299109af0f33a7ee16 crypto/x86cpuid.pl acbb841170d4d3eb91d969be1c0e4973b1babfd5fcd76440b0628f509f82fd76 e_os.h -6f353dc7c8c4d8f24f7ffbf920668ccb224ebb5810805a7c80d96770cd858005 include/crypto/aes_platform.h +249a0e58e9692920eddc1ada2ac772a0cfd749cfbf618f2f5da08280df545d8f include/crypto/aes_platform.h 8c6f308c1ca774e6127e325c3b80511dbcdc99631f032694d8db53a5c02364ee include/crypto/asn1_dsa.h -f6b01cff254311e973361190011cb6aa4d24b3a8c92f54e5191b7e2f669b8745 include/crypto/bn.h +2e8c284672c4e8e395b3da56a3abf3e65bb4346313fb6f7358e925d077a2e1e2 include/crypto/bn.h 1c46818354d42bd1b1c4e5fdae9e019814936e775fd8c918ca49959c2a6416df include/crypto/bn_conf.h.in 7a43a4898fcc8446065e6c99249bcc14e475716e8c1d40d50408c0ab179520e6 include/crypto/bn_dh.h e69b2b20fb415e24b970941c84a62b752b5d0175bc68126e467f7cc970495504 include/crypto/cryptlib.h diff --git a/deps/openssl/openssl/providers/fips.checksum b/deps/openssl/openssl/providers/fips.checksum index 7b84d2271d3a9d..cbd9c09511796a 100644 --- a/deps/openssl/openssl/providers/fips.checksum +++ b/deps/openssl/openssl/providers/fips.checksum @@ -1 +1 @@ -4e1960f3d68410e8daf1893c9133ba9840912974ec65f885054c46b6bbeff5cd providers/fips-sources.checksums +101807560af8f62c064ad796dfa1e4c269d45aaf5303b47ad0b25fdd6cc92466 providers/fips-sources.checksums diff --git a/deps/openssl/openssl/providers/implementations/encode_decode/decode_der2key.c b/deps/openssl/openssl/providers/implementations/encode_decode/decode_der2key.c index d598f7eba1acc9..f2d9d825564882 100644 --- a/deps/openssl/openssl/providers/implementations/encode_decode/decode_der2key.c +++ b/deps/openssl/openssl/providers/implementations/encode_decode/decode_der2key.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -32,6 +32,7 @@ #include "crypto/ecx.h" #include "crypto/rsa.h" #include "crypto/x509.h" +#include "openssl/obj_mac.h" #include "prov/bio.h" #include "prov/implementations.h" #include "endecoder_local.h" @@ -107,7 +108,10 @@ static void *der2key_decode_p8(const unsigned char **input_der, if ((p8inf = d2i_PKCS8_PRIV_KEY_INFO(NULL, input_der, input_der_len)) != NULL && PKCS8_pkey_get0(NULL, NULL, NULL, &alg, p8inf) - && OBJ_obj2nid(alg->algorithm) == ctx->desc->evp_type) + && (OBJ_obj2nid(alg->algorithm) == ctx->desc->evp_type + /* Allow decoding sm2 private key with id_ecPublicKey */ + || (OBJ_obj2nid(alg->algorithm) == NID_X9_62_id_ecPublicKey + && ctx->desc->evp_type == NID_sm2))) key = key_from_pkcs8(p8inf, PROV_LIBCTX_OF(ctx->provctx), NULL); PKCS8_PRIV_KEY_INFO_free(p8inf); @@ -286,10 +290,19 @@ static int der2key_decode(void *vctx, OSSL_CORE_BIO *cin, int selection, params[0] = OSSL_PARAM_construct_int(OSSL_OBJECT_PARAM_TYPE, &object_type); - params[1] = - OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, - (char *)ctx->desc->keytype_name, - 0); + +#ifndef OPENSSL_NO_SM2 + if (strcmp(ctx->desc->keytype_name, "EC") == 0 + && (EC_KEY_get_flags(key) & EC_FLAG_SM2_RANGE) != 0) + params[1] = + OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, + "SM2", 0); + else +#endif + params[1] = + OSSL_PARAM_construct_utf8_string(OSSL_OBJECT_PARAM_DATA_TYPE, + (char *)ctx->desc->keytype_name, + 0); /* The address of the key becomes the octet string */ params[2] = OSSL_PARAM_construct_octet_string(OSSL_OBJECT_PARAM_REFERENCE, @@ -409,10 +422,16 @@ static void *ec_d2i_PKCS8(void **key, const unsigned char **der, long der_len, static int ec_check(void *key, struct der2key_ctx_st *ctx) { /* We're trying to be clever by comparing two truths */ - + int ret = 0; int sm2 = (EC_KEY_get_flags(key) & EC_FLAG_SM2_RANGE) != 0; - return sm2 == (ctx->desc->evp_type == EVP_PKEY_SM2); + if (sm2) + ret = ctx->desc->evp_type == EVP_PKEY_SM2 + || ctx->desc->evp_type == NID_X9_62_id_ecPublicKey; + else + ret = ctx->desc->evp_type != EVP_PKEY_SM2; + + return ret; } static void ec_adjust(void *key, struct der2key_ctx_st *ctx) diff --git a/deps/openssl/openssl/providers/implementations/rands/drbg.c b/deps/openssl/openssl/providers/implementations/rands/drbg.c index 41ff2a8e33f6e8..9ab18af900bcbc 100644 --- a/deps/openssl/openssl/providers/implementations/rands/drbg.c +++ b/deps/openssl/openssl/providers/implementations/rands/drbg.c @@ -203,6 +203,11 @@ static size_t get_entropy(PROV_DRBG *drbg, unsigned char **pout, int entropy, return ossl_crngt_get_entropy(drbg, pout, entropy, min_len, max_len, prediction_resistance); #else + /* + * In normal use (i.e. OpenSSL's own uses), this is never called. + * Outside of the FIPS provider, OpenSSL sets its DRBGs up so that + * they always have a parent. This remains purely for legacy reasons. + */ return ossl_prov_get_entropy(drbg->provctx, pout, entropy, min_len, max_len); #endif diff --git a/deps/openssl/openssl/ssl/bio_ssl.c b/deps/openssl/openssl/ssl/bio_ssl.c index 401178f0c2e48c..be3159b32a9ff0 100644 --- a/deps/openssl/openssl/ssl/bio_ssl.c +++ b/deps/openssl/openssl/ssl/bio_ssl.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -77,7 +77,7 @@ static int ssl_free(BIO *a) return 0; bs = BIO_get_data(a); if (BIO_get_shutdown(a)) { - if (bs->ssl != NULL) + if (bs->ssl != NULL && !SSL_in_init(bs->ssl)) SSL_shutdown(bs->ssl); if (BIO_get_init(a)) SSL_free(bs->ssl); diff --git a/deps/openssl/openssl/ssl/ssl_lib.c b/deps/openssl/openssl/ssl/ssl_lib.c index 2ea39b745a6893..2619636df88372 100644 --- a/deps/openssl/openssl/ssl/ssl_lib.c +++ b/deps/openssl/openssl/ssl/ssl_lib.c @@ -3037,37 +3037,54 @@ int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, unsigned int server_len, const unsigned char *client, unsigned int client_len) { - unsigned int i, j; - const unsigned char *result; - int status = OPENSSL_NPN_UNSUPPORTED; + PACKET cpkt, csubpkt, spkt, ssubpkt; + + if (!PACKET_buf_init(&cpkt, client, client_len) + || !PACKET_get_length_prefixed_1(&cpkt, &csubpkt) + || PACKET_remaining(&csubpkt) == 0) { + *out = NULL; + *outlen = 0; + return OPENSSL_NPN_NO_OVERLAP; + } + + /* + * Set the default opportunistic protocol. Will be overwritten if we find + * a match. + */ + *out = (unsigned char *)PACKET_data(&csubpkt); + *outlen = (unsigned char)PACKET_remaining(&csubpkt); /* * For each protocol in server preference order, see if we support it. */ - for (i = 0; i < server_len;) { - for (j = 0; j < client_len;) { - if (server[i] == client[j] && - memcmp(&server[i + 1], &client[j + 1], server[i]) == 0) { - /* We found a match */ - result = &server[i]; - status = OPENSSL_NPN_NEGOTIATED; - goto found; + if (PACKET_buf_init(&spkt, server, server_len)) { + while (PACKET_get_length_prefixed_1(&spkt, &ssubpkt)) { + if (PACKET_remaining(&ssubpkt) == 0) + continue; /* Invalid - ignore it */ + if (PACKET_buf_init(&cpkt, client, client_len)) { + while (PACKET_get_length_prefixed_1(&cpkt, &csubpkt)) { + if (PACKET_equal(&csubpkt, PACKET_data(&ssubpkt), + PACKET_remaining(&ssubpkt))) { + /* We found a match */ + *out = (unsigned char *)PACKET_data(&ssubpkt); + *outlen = (unsigned char)PACKET_remaining(&ssubpkt); + return OPENSSL_NPN_NEGOTIATED; + } + } + /* Ignore spurious trailing bytes in the client list */ + } else { + /* This should never happen */ + return OPENSSL_NPN_NO_OVERLAP; } - j += client[j]; - j++; } - i += server[i]; - i++; + /* Ignore spurious trailing bytes in the server list */ } - /* There's no overlap between our protocols and the server's list. */ - result = client; - status = OPENSSL_NPN_NO_OVERLAP; - - found: - *out = (unsigned char *)result + 1; - *outlen = result[0]; - return status; + /* + * There's no overlap between our protocols and the server's list. We use + * the default opportunistic protocol selected earlier + */ + return OPENSSL_NPN_NO_OVERLAP; } #ifndef OPENSSL_NO_NEXTPROTONEG diff --git a/deps/openssl/openssl/ssl/ssl_sess.c b/deps/openssl/openssl/ssl/ssl_sess.c index 56854fc8902301..ec937a321c3018 100644 --- a/deps/openssl/openssl/ssl/ssl_sess.c +++ b/deps/openssl/openssl/ssl/ssl_sess.c @@ -53,21 +53,36 @@ __owur static int timeoutcmp(SSL_SESSION *a, SSL_SESSION *b) return 0; } +#ifdef __DJGPP__ /* time_t is unsigned on djgpp, it's signed anywhere else */ +# define TMAX(_type_) ((time_t)-1) +#else +# define TMAX(_type_) ((time_t)(((_type_)-1) >> 1)) +#endif + +#define CALCULATE_TIMEOUT(_ss_, _type_) do { \ + _type_ overflow; \ + time_t tmax = TMAX(_type_); \ + overflow = (_type_)tmax - (_type_)(_ss_)->time; \ + if ((_ss_)->timeout > (time_t)overflow) { \ + (_ss_)->timeout_ovf = 1; \ + (_ss_)->calc_timeout = (_ss_)->timeout - (time_t)overflow; \ + } else { \ + (_ss_)->timeout_ovf = 0; \ + (_ss_)->calc_timeout = (_ss_)->time + (_ss_)->timeout; \ + } \ + } while (0) /* * Calculates effective timeout, saving overflow state * Locking must be done by the caller of this function */ void ssl_session_calculate_timeout(SSL_SESSION *ss) { - /* Force positive timeout */ - if (ss->timeout < 0) - ss->timeout = 0; - ss->calc_timeout = ss->time + ss->timeout; - /* - * |timeout| is always zero or positive, so the check for - * overflow only needs to consider if |time| is positive - */ - ss->timeout_ovf = ss->time > 0 && ss->calc_timeout < ss->time; + + if (sizeof(time_t) == 8) + CALCULATE_TIMEOUT(ss, uint64_t); + else + CALCULATE_TIMEOUT(ss, uint32_t); + /* * N.B. Realistic overflow can only occur in our lifetimes on a * 32-bit machine in January 2038. @@ -132,6 +147,7 @@ SSL_SESSION *SSL_SESSION_new(void) return NULL; } + ss->ext.max_fragment_len_mode = TLSEXT_max_fragment_length_UNSPECIFIED; ss->verify_result = 1; /* avoid 0 (= X509_V_OK) just in case */ ss->references = 1; ss->timeout = 60 * 5 + 4; /* 5 minute timeout by default */ diff --git a/deps/openssl/openssl/ssl/statem/extensions.c b/deps/openssl/openssl/ssl/statem/extensions.c index d686bd6dba8a9b..ed78744119e209 100644 --- a/deps/openssl/openssl/ssl/statem/extensions.c +++ b/deps/openssl/openssl/ssl/statem/extensions.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1712,15 +1712,9 @@ static int final_early_data(SSL *s, unsigned int context, int sent) static int final_maxfragmentlen(SSL *s, unsigned int context, int sent) { - /* - * Session resumption on server-side with MFL extension active - * BUT MFL extension packet was not resent (i.e. sent == 0) - */ - if (s->server && s->hit && USE_MAX_FRAGMENT_LENGTH_EXT(s->session) - && !sent ) { - SSLfatal(s, SSL_AD_MISSING_EXTENSION, SSL_R_BAD_EXTENSION); - return 0; - } + /* MaxFragmentLength defaults to disabled */ + if (s->session->ext.max_fragment_len_mode == TLSEXT_max_fragment_length_UNSPECIFIED) + s->session->ext.max_fragment_len_mode = TLSEXT_max_fragment_length_DISABLED; /* Current SSL buffer is lower than requested MFL */ if (s->session && USE_MAX_FRAGMENT_LENGTH_EXT(s->session) diff --git a/deps/openssl/openssl/ssl/statem/extensions_clnt.c b/deps/openssl/openssl/ssl/statem/extensions_clnt.c index caeb818a37ce4a..3b0781fc71c70e 100644 --- a/deps/openssl/openssl/ssl/statem/extensions_clnt.c +++ b/deps/openssl/openssl/ssl/statem/extensions_clnt.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1576,7 +1576,8 @@ int tls_parse_stoc_npn(SSL *s, PACKET *pkt, unsigned int context, X509 *x, PACKET_data(pkt), PACKET_remaining(pkt), s->ctx->ext.npn_select_cb_arg) != - SSL_TLSEXT_ERR_OK) { + SSL_TLSEXT_ERR_OK + || selected_len == 0) { SSLfatal(s, SSL_AD_HANDSHAKE_FAILURE, SSL_R_BAD_EXTENSION); return 0; } @@ -1605,6 +1606,8 @@ int tls_parse_stoc_alpn(SSL *s, PACKET *pkt, unsigned int context, X509 *x, size_t chainidx) { size_t len; + PACKET confpkt, protpkt; + int valid = 0; /* We must have requested it. */ if (!s->s3.alpn_sent) { @@ -1623,6 +1626,28 @@ int tls_parse_stoc_alpn(SSL *s, PACKET *pkt, unsigned int context, X509 *x, SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_BAD_EXTENSION); return 0; } + + /* It must be a protocol that we sent */ + if (!PACKET_buf_init(&confpkt, s->ext.alpn, s->ext.alpn_len)) { + SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); + return 0; + } + while (PACKET_get_length_prefixed_1(&confpkt, &protpkt)) { + if (PACKET_remaining(&protpkt) != len) + continue; + if (memcmp(PACKET_data(pkt), PACKET_data(&protpkt), len) == 0) { + /* Valid protocol found */ + valid = 1; + break; + } + } + + if (!valid) { + /* The protocol sent from the server does not match one we advertised */ + SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_BAD_EXTENSION); + return 0; + } + OPENSSL_free(s->s3.alpn_selected); s->s3.alpn_selected = OPENSSL_malloc(len); if (s->s3.alpn_selected == NULL) { diff --git a/deps/openssl/openssl/ssl/statem/extensions_srvr.c b/deps/openssl/openssl/ssl/statem/extensions_srvr.c index 0dfbfed9a4af6c..546d11dd1f73af 100644 --- a/deps/openssl/openssl/ssl/statem/extensions_srvr.c +++ b/deps/openssl/openssl/ssl/statem/extensions_srvr.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -181,21 +181,26 @@ int tls_parse_ctos_maxfragmentlen(SSL *s, PACKET *pkt, unsigned int context, } /* - * RFC 6066: The negotiated length applies for the duration of the session + * When doing a full handshake or a renegotiation max_fragment_len_mode will + * be TLSEXT_max_fragment_length_UNSPECIFIED + * + * In case of a resumption max_fragment_len_mode will be one of + * TLSEXT_max_fragment_length_DISABLED, TLSEXT_max_fragment_length_512, + * TLSEXT_max_fragment_length_1024, TLSEXT_max_fragment_length_2048. + * TLSEXT_max_fragment_length_4096 + * + * RFC 6066: The negotiated length applies for the duration of the session * including session resumptions. - * We should receive the same code as in resumed session ! + * + * So we only set the value in case it is unspecified. */ - if (s->hit && s->session->ext.max_fragment_len_mode != value) { - SSLfatal(s, SSL_AD_ILLEGAL_PARAMETER, - SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH); - return 0; - } + if (s->session->ext.max_fragment_len_mode == TLSEXT_max_fragment_length_UNSPECIFIED) + /* + * Store it in session, so it'll become binding for us + * and we'll include it in a next Server Hello. + */ + s->session->ext.max_fragment_len_mode = value; - /* - * Store it in session, so it'll become binding for us - * and we'll include it in a next Server Hello. - */ - s->session->ext.max_fragment_len_mode = value; return 1; } @@ -1505,9 +1510,10 @@ EXT_RETURN tls_construct_stoc_next_proto_neg(SSL *s, WPACKET *pkt, return EXT_RETURN_FAIL; } s->s3.npn_seen = 1; + return EXT_RETURN_SENT; } - return EXT_RETURN_SENT; + return EXT_RETURN_NOT_SENT; } #endif diff --git a/deps/openssl/openssl/ssl/statem/statem_lib.c b/deps/openssl/openssl/ssl/statem/statem_lib.c index cb31835265ff76..121929b06f4062 100644 --- a/deps/openssl/openssl/ssl/statem/statem_lib.c +++ b/deps/openssl/openssl/ssl/statem/statem_lib.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -501,6 +501,10 @@ MSG_PROCESS_RETURN tls_process_cert_verify(SSL *s, PACKET *pkt) SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_LENGTH_MISMATCH); goto err; } + if (PACKET_remaining(pkt) != 0) { + SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_LENGTH_MISMATCH); + goto err; + } if (!get_cert_verify_tbs_data(s, tls13tbs, &hdata, &hdatalen)) { /* SSLfatal() already called */ diff --git a/deps/openssl/openssl/ssl/t1_lib.c b/deps/openssl/openssl/ssl/t1_lib.c index 673e2f0f0248d7..bbb3b514d77f14 100644 --- a/deps/openssl/openssl/ssl/t1_lib.c +++ b/deps/openssl/openssl/ssl/t1_lib.c @@ -3401,6 +3401,8 @@ int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode) uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *session) { + if (session->ext.max_fragment_len_mode == TLSEXT_max_fragment_length_UNSPECIFIED) + return TLSEXT_max_fragment_length_DISABLED; return session->ext.max_fragment_len_mode; } diff --git a/deps/openssl/openssl/test/build.info b/deps/openssl/openssl/test/build.info index 25ab0430b731a2..76ff945ab8b390 100644 --- a/deps/openssl/openssl/test/build.info +++ b/deps/openssl/openssl/test/build.info @@ -40,7 +40,7 @@ IF[{- !$disabled{tests} -}] exptest pbetest localetest evp_pkey_ctx_new_from_name\ evp_pkey_provided_test evp_test evp_extra_test evp_extra_test2 \ evp_fetch_prov_test evp_libctx_test ossl_store_test \ - v3nametest v3ext punycode_test \ + v3nametest v3ext punycode_test evp_byname_test \ crltest danetest bad_dtls_test lhash_test sparse_array_test \ conf_include_test params_api_test params_conversion_test \ constant_time_test verify_extra_test clienthellotest \ @@ -305,6 +305,10 @@ IF[{- !$disabled{tests} -}] INCLUDE[punycode_test]=../include ../apps/include DEPEND[punycode_test]=../libcrypto.a libtestutil.a + SOURCE[evp_byname_test]=evp_byname_test.c + INCLUDE[evp_byname_test]=../include ../apps/include + DEPEND[evp_byname_test]=../libcrypto libtestutil.a + SOURCE[stack_test]=stack_test.c INCLUDE[stack_test]=../include ../apps/include DEPEND[stack_test]=../libcrypto libtestutil.a diff --git a/deps/openssl/openssl/test/crltest.c b/deps/openssl/openssl/test/crltest.c index d17fac43f82a31..c96561c69bfa92 100644 --- a/deps/openssl/openssl/test/crltest.c +++ b/deps/openssl/openssl/test/crltest.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -101,6 +101,13 @@ static const char *kRevokedCRL[] = { NULL }; +static const char *kInvalidCRL[] = { + "-----BEGIN X509 CRL-----\n", + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n", + "-----END X509 CRL-----\n", + NULL +}; + static const char *kBadIssuerCRL[] = { "-----BEGIN X509 CRL-----\n", "MIIBwjCBqwIBATANBgkqhkiG9w0BAQsFADBSMQswCQYDVQQGEwJVUzETMBEGA1UE\n", @@ -371,24 +378,58 @@ static int test_unknown_critical_crl(int n) return r; } -static int test_reuse_crl(void) +static int test_reuse_crl(int idx) { - X509_CRL *reused_crl = CRL_from_strings(kBasicCRL); - char *p; - BIO *b = glue2bio(kRevokedCRL, &p); + X509_CRL *result, *reused_crl = CRL_from_strings(kBasicCRL); + X509_CRL *addref_crl = NULL; + char *p = NULL; + BIO *b = NULL; + int r = 0; - if (b == NULL) { - OPENSSL_free(p); - X509_CRL_free(reused_crl); - return 0; + if (!TEST_ptr(reused_crl)) + goto err; + + if (idx & 1) { + if (!TEST_true(X509_CRL_up_ref(reused_crl))) + goto err; + addref_crl = reused_crl; } - reused_crl = PEM_read_bio_X509_CRL(b, &reused_crl, NULL, NULL); + idx >>= 1; + b = glue2bio(idx == 2 ? kRevokedCRL : kInvalidCRL + idx, &p); + if (!TEST_ptr(b)) + goto err; + + result = PEM_read_bio_X509_CRL(b, &reused_crl, NULL, NULL); + + switch (idx) { + case 0: /* valid PEM + invalid DER */ + if (!TEST_ptr_null(result) + || !TEST_ptr_null(reused_crl)) + goto err; + break; + case 1: /* invalid PEM */ + if (!TEST_ptr_null(result) + || !TEST_ptr(reused_crl)) + goto err; + break; + case 2: + if (!TEST_ptr(result) + || !TEST_ptr(reused_crl) + || !TEST_ptr_eq(result, reused_crl)) + goto err; + break; + } + + r = 1; + + err: OPENSSL_free(p); BIO_free(b); X509_CRL_free(reused_crl); - return 1; + X509_CRL_free(addref_crl); + return r; } int setup_tests(void) @@ -402,7 +443,7 @@ int setup_tests(void) ADD_TEST(test_bad_issuer_crl); ADD_TEST(test_known_critical_crl); ADD_ALL_TESTS(test_unknown_critical_crl, OSSL_NELEM(unknown_critical_crls)); - ADD_TEST(test_reuse_crl); + ADD_ALL_TESTS(test_reuse_crl, 6); return 1; } diff --git a/deps/openssl/openssl/test/endecode_test.c b/deps/openssl/openssl/test/endecode_test.c index 5158b39ee41f19..0611d94216f014 100644 --- a/deps/openssl/openssl/test/endecode_test.c +++ b/deps/openssl/openssl/test/endecode_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -1028,6 +1028,10 @@ DOMAIN_KEYS(ECExplicitTri2G); IMPLEMENT_TEST_SUITE(ECExplicitTri2G, "EC", 0) IMPLEMENT_TEST_SUITE_LEGACY(ECExplicitTri2G, "EC") # endif +# ifndef OPENSSL_NO_SM2 +KEYS(SM2); +IMPLEMENT_TEST_SUITE(SM2, "SM2", 0) +# endif KEYS(ED25519); IMPLEMENT_TEST_SUITE(ED25519, "ED25519", 1) KEYS(ED448); @@ -1333,9 +1337,7 @@ int setup_tests(void) } /* FIPS(3.0.0): provider imports explicit params but they won't work #17998 */ - is_fips_3_0_0 = fips_provider_version_eq(testctx, 3, 0, 0); - if (is_fips_3_0_0 < 0) - return 0; + is_fips_3_0_0 = is_fips && fips_provider_version_eq(testctx, 3, 0, 0); /* Separate provider/ctx for generating the test data */ if (!TEST_ptr(keyctx = OSSL_LIB_CTX_new())) @@ -1382,6 +1384,9 @@ int setup_tests(void) # ifndef OPENSSL_NO_EC2M MAKE_DOMAIN_KEYS(ECExplicitTriNamedCurve, "EC", ec_explicit_tri_params_nc); MAKE_DOMAIN_KEYS(ECExplicitTri2G, "EC", ec_explicit_tri_params_explicit); +# endif +# ifndef OPENSSL_NO_SM2 + MAKE_KEYS(SM2, "SM2", NULL); # endif MAKE_KEYS(ED25519, "ED25519", NULL); MAKE_KEYS(ED448, "ED448", NULL); @@ -1428,6 +1433,12 @@ int setup_tests(void) ADD_TEST_SUITE_LEGACY(ECExplicitTriNamedCurve); ADD_TEST_SUITE(ECExplicitTri2G); ADD_TEST_SUITE_LEGACY(ECExplicitTri2G); +# endif +# ifndef OPENSSL_NO_SM2 + if (!is_fips_3_0_0) { + /* 3.0.0 FIPS provider imports explicit EC params and then fails. */ + ADD_TEST_SUITE(SM2); + } # endif ADD_TEST_SUITE(ED25519); ADD_TEST_SUITE(ED448); @@ -1485,6 +1496,9 @@ void cleanup_tests(void) # ifndef OPENSSL_NO_EC2M FREE_DOMAIN_KEYS(ECExplicitTriNamedCurve); FREE_DOMAIN_KEYS(ECExplicitTri2G); +# endif +# ifndef OPENSSL_NO_SM2 + FREE_KEYS(SM2); # endif FREE_KEYS(ED25519); FREE_KEYS(ED448); diff --git a/deps/openssl/openssl/test/evp_byname_test.c b/deps/openssl/openssl/test/evp_byname_test.c new file mode 100644 index 00000000000000..e16e27a3a5ec33 --- /dev/null +++ b/deps/openssl/openssl/test/evp_byname_test.c @@ -0,0 +1,40 @@ +/* + * Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include +#include + +#include +#include "testutil.h" + +static int test_evp_get_digestbyname(void) +{ + const EVP_MD *md; + + if (!TEST_ptr(md = EVP_get_digestbyname("SHA2-256"))) + return 0; + return 1; +} + +static int test_evp_get_cipherbyname(void) +{ + const EVP_CIPHER *cipher; + + if (!TEST_ptr(cipher = EVP_get_cipherbyname("AES-256-WRAP"))) + return 0; + return 1; +} + +int setup_tests(void) +{ + ADD_TEST(test_evp_get_digestbyname); + ADD_TEST(test_evp_get_cipherbyname); + return 1; +} diff --git a/deps/openssl/openssl/test/evp_extra_test.c b/deps/openssl/openssl/test/evp_extra_test.c index 7e97e2d34d5dc7..c5fbbf8a830921 100644 --- a/deps/openssl/openssl/test/evp_extra_test.c +++ b/deps/openssl/openssl/test/evp_extra_test.c @@ -5351,6 +5351,25 @@ static int test_aes_rc4_keylen_change_cve_2023_5363(void) } #endif +static int test_invalid_ctx_for_digest(void) +{ + int ret; + EVP_MD_CTX *mdctx; + + mdctx = EVP_MD_CTX_new(); + if (!TEST_ptr(mdctx)) + return 0; + + if (!TEST_int_eq(EVP_DigestUpdate(mdctx, "test", sizeof("test") - 1), 0)) + ret = 0; + else + ret = 1; + + EVP_MD_CTX_free(mdctx); + + return ret; +} + int setup_tests(void) { OPTION_CHOICE o; @@ -5514,6 +5533,8 @@ int setup_tests(void) ADD_TEST(test_aes_rc4_keylen_change_cve_2023_5363); #endif + ADD_TEST(test_invalid_ctx_for_digest); + return 1; } diff --git a/deps/openssl/openssl/test/helpers/handshake.c b/deps/openssl/openssl/test/helpers/handshake.c index 285391bc03b64f..5744c6a54ee54e 100644 --- a/deps/openssl/openssl/test/helpers/handshake.c +++ b/deps/openssl/openssl/test/helpers/handshake.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -348,6 +348,12 @@ static int parse_protos(const char *protos, unsigned char **out, size_t *outlen) len = strlen(protos); + if (len == 0) { + *out = NULL; + *outlen = 0; + return 1; + } + /* Should never have reuse. */ if (!TEST_ptr_null(*out) /* Test values are small, so we omit length limit checks. */ diff --git a/deps/openssl/openssl/test/hexstr_test.c b/deps/openssl/openssl/test/hexstr_test.c index 5a9684e0e69779..566615ed6d6857 100644 --- a/deps/openssl/openssl/test/hexstr_test.c +++ b/deps/openssl/openssl/test/hexstr_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -120,9 +120,14 @@ static int test_hexstr_ex_to_from(int test_index) return TEST_true(OPENSSL_hexstr2buf_ex(buf, sizeof(buf), &len, test->in, ':')) && TEST_mem_eq(buf, len, test->expected, test->expected_len) + && TEST_false(OPENSSL_buf2hexstr_ex(out, 3 * len - 1, NULL, buf, len, + ':')) && TEST_true(OPENSSL_buf2hexstr_ex(out, sizeof(out), NULL, buf, len, - ':')) - && TEST_str_eq(out, test->in); + ':')) + && TEST_str_eq(out, test->in) + && TEST_true(OPENSSL_buf2hexstr_ex(out, sizeof(out), NULL, buf, 0, + ':')) + && TEST_size_t_eq(strlen(out), 0); } int setup_tests(void) diff --git a/deps/openssl/openssl/test/prov_config_test.c b/deps/openssl/openssl/test/prov_config_test.c index f93d8d62be6a14..2fd913deadf4f8 100644 --- a/deps/openssl/openssl/test/prov_config_test.c +++ b/deps/openssl/openssl/test/prov_config_test.c @@ -26,15 +26,13 @@ static int test_double_config(void) int testresult = 0; EVP_MD *sha256 = NULL; - if (!TEST_ptr(configfile)) - return 0; if (!TEST_ptr(ctx)) return 0; if (!TEST_true(OSSL_LIB_CTX_load_config(ctx, configfile))) - return 0; + goto err; if (!TEST_true(OSSL_LIB_CTX_load_config(ctx, configfile))) - return 0; + goto err; /* Check we can actually fetch something */ sha256 = EVP_MD_fetch(ctx, "SHA2-256", NULL); @@ -54,9 +52,6 @@ static int test_recursive_config(void) int testresult = 0; unsigned long err; - if (!TEST_ptr(recurseconfigfile)) - goto err; - if (!TEST_ptr(ctx)) goto err; diff --git a/deps/openssl/openssl/test/provider_fallback_test.c b/deps/openssl/openssl/test/provider_fallback_test.c index 5902f57c85e723..26ba9ea1dcb06b 100644 --- a/deps/openssl/openssl/test/provider_fallback_test.c +++ b/deps/openssl/openssl/test/provider_fallback_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -39,9 +39,15 @@ static int test_explicit_provider(void) int ok; ok = TEST_ptr(ctx = OSSL_LIB_CTX_new()) - && TEST_ptr(prov = OSSL_PROVIDER_load(ctx, "default")) - && test_provider(ctx) - && TEST_true(OSSL_PROVIDER_unload(prov)); + && TEST_ptr(prov = OSSL_PROVIDER_load(ctx, "default")); + + if (ok) { + ok = test_provider(ctx); + if (ok) + ok = TEST_true(OSSL_PROVIDER_unload(prov)); + else + OSSL_PROVIDER_unload(prov); + } OSSL_LIB_CTX_free(ctx); return ok; diff --git a/deps/openssl/openssl/test/provider_internal_test.c b/deps/openssl/openssl/test/provider_internal_test.c index 1fe8fb0cc5c412..e42af73b1746ba 100644 --- a/deps/openssl/openssl/test/provider_internal_test.c +++ b/deps/openssl/openssl/test/provider_internal_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -22,7 +22,7 @@ static OSSL_PARAM greeting_request[] = { static int test_provider(OSSL_PROVIDER *prov, const char *expected_greeting) { - const char *greeting = NULL; + const char *greeting = "no greeting received"; int ret = 0; ret = diff --git a/deps/openssl/openssl/test/provider_test.c b/deps/openssl/openssl/test/provider_test.c index b2e0a5da716f91..762c2ee16eff1c 100644 --- a/deps/openssl/openssl/test/provider_test.c +++ b/deps/openssl/openssl/test/provider_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -197,6 +197,7 @@ static int test_builtin_provider_with_child(void) if (!TEST_true(OSSL_PROVIDER_add_builtin(libctx, name, PROVIDER_INIT_FUNCTION_NAME))) { + OSSL_PROVIDER_unload(legacy); OSSL_LIB_CTX_free(libctx); return 0; } diff --git a/deps/openssl/openssl/test/recipes/03-test_fipsinstall.t b/deps/openssl/openssl/test/recipes/03-test_fipsinstall.t index c39b2cee09ecc7..5f514e231b5978 100644 --- a/deps/openssl/openssl/test/recipes/03-test_fipsinstall.t +++ b/deps/openssl/openssl/test/recipes/03-test_fipsinstall.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -30,6 +30,9 @@ my $infile = bldtop_file('providers', platform->dso('fips')); my $fipskey = $ENV{FIPSKEY} // config('FIPSKEY') // '00'; my $provconf = srctop_file("test", "fips-and-base.cnf"); +run(test(["fips_version_test", "-config", $provconf, "<3.4.0"]), + capture => 1, statusvar => \my $indicatorpost); + # Read in a text $infile and replace the regular expression in $srch with the # value in $repl and output to a new file $outfile. sub replace_line_file_internal { @@ -182,7 +185,7 @@ ok(!run(app(['openssl', 'fipsinstall', '-out', 'fips.cnf', '-module', $infile, ok(!run(app(['openssl', 'fipsinstall', '-out', 'fips_fail.cnf', '-module', $infile, '-provider_name', 'fips', '-mac_name', 'HMAC', '-macopt', 'digest:SHA256', '-macopt', "hexkey:$fipskey", - '-section_name', 'fips_sect', '-corrupt_desc', 'SHA1'])), + '-section_name', 'fips_sect', '-corrupt_desc', 'SHA2'])), "fipsinstall fails when the digest result is corrupted"); # corrupt another digest @@ -269,24 +272,27 @@ ok(replace_parent_line_file('fips_no_module_mac.cnf', '-config', 'fips_parent_no_module_mac.cnf'])), "verify load config fail no module mac"); -ok(replace_parent_line_file('fips_no_install_mac.cnf', - 'fips_parent_no_install_mac.cnf') - && !run(app(['openssl', 'fipsinstall', - '-config', 'fips_parent_no_install_mac.cnf'])), - "verify load config fail no install mac"); - -ok(replace_parent_line_file('fips_bad_indicator.cnf', - 'fips_parent_bad_indicator.cnf') - && !run(app(['openssl', 'fipsinstall', - '-config', 'fips_parent_bad_indicator.cnf'])), - "verify load config fail bad indicator"); - -ok(replace_parent_line_file('fips_bad_install_mac.cnf', - 'fips_parent_bad_install_mac.cnf') - && !run(app(['openssl', 'fipsinstall', - '-config', 'fips_parent_bad_install_mac.cnf'])), - "verify load config fail bad install mac"); +SKIP: { + skip "Newer FIPS provider version does not support this feature", 3 + if !$indicatorpost; + + ok(replace_parent_line_file('fips_no_install_mac.cnf', + 'fips_parent_no_install_mac.cnf') + && !run(app(['openssl', 'fipsinstall', + '-config', 'fips_parent_no_install_mac.cnf'])), + "verify load config fail no install mac"); + ok(replace_parent_line_file('fips_bad_indicator.cnf', + 'fips_parent_bad_indicator.cnf') + && !run(app(['openssl', 'fipsinstall', + '-config', 'fips_parent_bad_indicator.cnf'])), + "verify load config fail bad indicator"); + ok(replace_parent_line_file('fips_bad_install_mac.cnf', + 'fips_parent_bad_install_mac.cnf') + && !run(app(['openssl', 'fipsinstall', + '-config', 'fips_parent_bad_install_mac.cnf'])), + "verify load config fail bad install mac"); +} ok(replace_parent_line_file('fips_bad_module_mac.cnf', 'fips_parent_bad_module_mac.cnf') diff --git a/deps/openssl/openssl/test/recipes/04-test_conf.t b/deps/openssl/openssl/test/recipes/04-test_conf.t index f987e43c8e94ea..574859e90e1ccf 100644 --- a/deps/openssl/openssl/test/recipes/04-test_conf.t +++ b/deps/openssl/openssl/test/recipes/04-test_conf.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2017-2021 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2017-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -18,6 +18,7 @@ setup('test_conf'); my %input_result = ( 'dollarid_on.cnf' => 'dollarid_on.txt', 'dollarid_off.cnf' => 'dollarid_off.txt', + 'oversized_line.cnf' => 'oversized_line.txt', ); plan skip_all => 'This is unsupported for cross compiled configurations' diff --git a/deps/openssl/openssl/test/recipes/04-test_conf_data/oversized_line.cnf b/deps/openssl/openssl/test/recipes/04-test_conf_data/oversized_line.cnf new file mode 100644 index 00000000000000..08988a2e0f1d83 --- /dev/null +++ b/deps/openssl/openssl/test/recipes/04-test_conf_data/oversized_line.cnf @@ -0,0 +1,3 @@ +foo = a_line_longer_than_512_characters_\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"_end +bar = a_line_longer_than_512_characters__\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"_end +last = x diff --git a/deps/openssl/openssl/test/recipes/04-test_conf_data/oversized_line.txt b/deps/openssl/openssl/test/recipes/04-test_conf_data/oversized_line.txt new file mode 100644 index 00000000000000..c15b654300c765 --- /dev/null +++ b/deps/openssl/openssl/test/recipes/04-test_conf_data/oversized_line.txt @@ -0,0 +1,4 @@ +[ default ] +foo = a_line_longer_than_512_characters_""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""_end +bar = a_line_longer_than_512_characters__""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""_end +last = x diff --git a/deps/openssl/openssl/test/recipes/25-test_eai_data.t b/deps/openssl/openssl/test/recipes/25-test_eai_data.t index 522982ddfb8025..63548d060293ba 100644 --- a/deps/openssl/openssl/test/recipes/25-test_eai_data.t +++ b/deps/openssl/openssl/test/recipes/25-test_eai_data.t @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2019-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -21,16 +21,18 @@ setup("test_eai_data"); #./util/wrap.pl apps/openssl verify -nameopt utf8 -no_check_time -CAfile test/recipes/25-test_eai_data/utf8_chain.pem test/recipes/25-test_eai_data/ascii_leaf.pem #./util/wrap.pl apps/openssl verify -nameopt utf8 -no_check_time -CAfile test/recipes/25-test_eai_data/ascii_chain.pem test/recipes/25-test_eai_data/utf8_leaf.pem -plan tests => 12; +plan tests => 16; require_ok(srctop_file('test','recipes','tconversion.pl')); my $folder = "test/recipes/25-test_eai_data"; my $ascii_pem = srctop_file($folder, "ascii_leaf.pem"); my $utf8_pem = srctop_file($folder, "utf8_leaf.pem"); +my $kdc_pem = srctop_file($folder, "kdc-cert.pem"); my $ascii_chain_pem = srctop_file($folder, "ascii_chain.pem"); my $utf8_chain_pem = srctop_file($folder, "utf8_chain.pem"); +my $kdc_chain_pem = srctop_file($folder, "kdc-root-cert.pem"); my $out; my $outcnt = 0; @@ -56,10 +58,18 @@ SKIP: { ok(run(app(["openssl", "verify", "-nameopt", "utf8", "-no_check_time", "-CAfile", $ascii_chain_pem, $ascii_pem]))); ok(run(app(["openssl", "verify", "-nameopt", "utf8", "-no_check_time", "-CAfile", $utf8_chain_pem, $utf8_pem]))); +ok(run(app(["openssl", "verify", "-nameopt", "utf8", "-no_check_time", "-CAfile", $kdc_chain_pem, $kdc_pem]))); ok(!run(app(["openssl", "verify", "-nameopt", "utf8", "-no_check_time", "-CAfile", $ascii_chain_pem, $utf8_pem]))); ok(!run(app(["openssl", "verify", "-nameopt", "utf8", "-no_check_time", "-CAfile", $utf8_chain_pem, $ascii_pem]))); +# Check an otherName does not get misparsed as an DNS name, (should trigger ASAN errors if violated). +ok(run(app(["openssl", "verify", "-nameopt", "utf8", "-no_check_time", "-verify_hostname", 'mx1.example.com', "-CAfile", $kdc_chain_pem, $kdc_pem]))); +# Check an otherName does not get misparsed as an email address, (should trigger ASAN errors if violated). +ok(run(app(["openssl", "verify", "-nameopt", "utf8", "-no_check_time", "-verify_email", 'joe@example.com', "-CAfile", $kdc_chain_pem, $kdc_pem]))); +# We expect SmtpUTF8Mailbox to be a UTF8 String, not an IA5String. +ok(!run(app(["openssl", "verify", "-nameopt", "utf8", "-no_check_time", "-verify_email", 'moe@example.com', "-CAfile", $kdc_chain_pem, $kdc_pem]))); + #Check that we get the expected failure return code with({ exit_checker => sub { return shift == 2; } }, sub { diff --git a/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc-cert.pem b/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc-cert.pem new file mode 100644 index 00000000000000..e8a2c6f55d4598 --- /dev/null +++ b/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc-cert.pem @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDbDCCAlSgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDDARSb290 +MCAXDTI0MDYyMDA2MTQxNVoYDzIxMjQwNjIwMDYxNDE1WjAXMRUwEwYDVQQDDAxU +RVNULkVYQU1QTEUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6wfP+ +6go79dkpo/dGLMlPZ7Gw/Q6gUYrCWZWUEgEeRVHCrqOlgUEyA+PcWas/XDPUxXry +BQlJHLvlqamAQn8gs4QPBARFYWKNiTVGyaRkgNA1N5gqyZdrP9UE+ZJmdqxRAAe8 +vvpGZWSgevPhLUiSCFYDiD0Rtji2Hm3rGUrReQFBQDEw2pNGwz9zIaxUs08kQZcx +Yzyiplz5Oau+R/6sAgUwDlrD9xOlUxx/tA/MSDIfkK8qioU11uUZtO5VjkNQy/bT +7zQMmXxWgm2MIgOs1u4YN7YGOtgqHE9v9iPHHfgrkbQDtVDGQsa8AQEhkUDSCtW9 +3VFAKx6dGNXYzFwfAgMBAAGjgcgwgcUwHQYDVR0OBBYEFFR5tZycW19DmtbL4Zqj +te1c2vZLMAkGA1UdIwQCMAAwCQYDVR0TBAIwADCBjQYDVR0RBIGFMIGCoD8GBisG +AQUCAqA1MDOgDhsMVEVTVC5FWEFNUExFoSEwH6ADAgEBoRgwFhsGa3JidGd0GwxU +RVNULkVYQU1QTEWgHQYIKwYBBQUHCAmgERYPbW9lQGV4YW1wbGUuY29tgQ9qb2VA +ZXhhbXBsZS5jb22CD214MS5leGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEA +T0xzVtVpRtaOzIhgzw7XQUdzWD5UEGSJJ1cBCOmKUWwDLTAouCYLFB4TbEE7MMUb +iuMy60bjmVtvfJIXorGUgSadRe5RWJ5DamJWvPA0Q9x7blnEcXqEF+9Td+ypevgU +UYHFmg83OYwxOsFXZ5cRuXMk3WCsDHQIBi6D1L6oDDZ2pfArs5mqm3thQKVlqyl1 +El3XRYEdqAz/5eCOFNfwxF0ALxjxVr/Z50StUZU8I7Zfev6+kHhyrR7dqzYJImv9 +0fTCOBEMjIETDsrA70OxAMu4V16nrWZdJdvzblS2qrt97Omkj+2kiPAJFB76RpwI +oDQ9fKfUOAmUFth2/R/eGA== +-----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc-root-cert.pem b/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc-root-cert.pem new file mode 100644 index 00000000000000..a74c96bf31469f --- /dev/null +++ b/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc-root-cert.pem @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE----- +MIICnDCCAYQCCQCBswYcrlZSHjANBgkqhkiG9w0BAQsFADAPMQ0wCwYDVQQDDARS +b290MCAXDTI0MDYyMDA2MTQxNVoYDzIxMjQwNjIwMDYxNDE1WjAPMQ0wCwYDVQQD +DARSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqRj8S4kBbIUj +61kZfi6nE35Q38U140+qt4uAiwAhKumfVHlBM0zQ98WFt5zMHIBQwIb3yjc2zj+0 +qzUnQfwm1r/RfcMmBPEti9Ge+aEMSsds2gMXziOFM8wd2aAFPy7UVE0XpEWofsRK +MGi61MKVdPSbGIxBwY9VW38/7D/wf1HtJe7y0xpuecR7GB2XAs+qST59NjuF+7wS +dLM8Hb3TATgeYbXXWsRJgwz+SPzExg5WmLnU+7y4brZ32dHtdSmkRVSgSlaIf7Xj +3Tc6Zi7I+W/JYk7hy1zUexVdWCak4PHcoWrXe0gNNN/t8VfLfMExt5z/HIylXnU7 +pGUyqZlTGQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAHpLF1UCRy7b6Hk0rLokxI +lgwiH9BU9mktigAGASvkbllpt+YbUbWnuYAvpHBGiP1qZtfX2r96UrSJaGO9BEzT +Gp9ThnSjoj4Srul0+s/NArU22irFLmDzbalgevAmm9gMGkdqkiIm/mXbwrPj0ncl +KGicevXryVpvaP62eZ8cc3C4p97frMmXxRX8sTdQpD/gRI7prdEILRSKveqT+AEW +7rFGM5AOevb4U8ddop8A3D/kX0wcCAIBF6jCNk3uEJ57jVcagL04kPnVfdRiedTS +vfq1DRNcD29d1H/9u0fHdSn1/+8Ep3X+afQ3C6//5NvOEaXcIGO4QSwkprQydfv8 +-----END CERTIFICATE----- diff --git a/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc.sh b/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc.sh new file mode 100755 index 00000000000000..7a8dbc719fb71e --- /dev/null +++ b/deps/openssl/openssl/test/recipes/25-test_eai_data/kdc.sh @@ -0,0 +1,41 @@ +#! /usr/bin/env bash + +# Create a root CA, signing a leaf cert with a KDC principal otherName SAN, and +# also a non-UTF8 smtpUtf8Mailbox SAN followed by an rfc822Name SAN and a DNS +# name SAN. In the vulnerable EAI code, the KDC principal `otherName` should +# trigger ASAN errors in DNS name checks, while the non-UTF8 `smtpUtf8Mailbox` +# should likewise lead to ASAN issues with email name checks. + +rm -f root-key.pem root-cert.pem +openssl req -nodes -new -newkey rsa:2048 -keyout kdc-root-key.pem \ + -x509 -subj /CN=Root -days 36524 -out kdc-root-cert.pem + +exts=$( + printf "%s\n%s\n%s\n%s = " \ + "subjectKeyIdentifier = hash" \ + "authorityKeyIdentifier = keyid" \ + "basicConstraints = CA:false" \ + "subjectAltName" + printf "%s, " "otherName:1.3.6.1.5.2.2;SEQUENCE:kdc_princ_name" + printf "%s, " "otherName:1.3.6.1.5.5.7.8.9;IA5:moe@example.com" + printf "%s, " "email:joe@example.com" + printf "%s\n" "DNS:mx1.example.com" + printf "[kdc_princ_name]\n" + printf "realm = EXP:0, GeneralString:TEST.EXAMPLE\n" + printf "principal_name = EXP:1, SEQUENCE:kdc_principal_seq\n" + printf "[kdc_principal_seq]\n" + printf "name_type = EXP:0, INTEGER:1\n" + printf "name_string = EXP:1, SEQUENCE:kdc_principal_components\n" + printf "[kdc_principal_components]\n" + printf "princ1 = GeneralString:krbtgt\n" + printf "princ2 = GeneralString:TEST.EXAMPLE\n" + ) + +printf "%s\n" "$exts" + +openssl req -nodes -new -newkey rsa:2048 -keyout kdc-key.pem \ + -subj "/CN=TEST.EXAMPLE" | + openssl x509 -req -out kdc-cert.pem \ + -CA "kdc-root-cert.pem" -CAkey "kdc-root-key.pem" \ + -set_serial 2 -days 36524 \ + -extfile <(printf "%s\n" "$exts") diff --git a/deps/openssl/openssl/test/recipes/30-test_evp_byname.t b/deps/openssl/openssl/test/recipes/30-test_evp_byname.t new file mode 100644 index 00000000000000..d06e874fe927b3 --- /dev/null +++ b/deps/openssl/openssl/test/recipes/30-test_evp_byname.t @@ -0,0 +1,16 @@ +#! /usr/bin/env perl +# Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +use strict; +use OpenSSL::Test; +use OpenSSL::Test::Simple; +use OpenSSL::Test::Utils; + +setup("test_evp_byname"); + +simple_test("test_evp_byname", "evp_byname_test"); diff --git a/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_dsa.txt b/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_dsa.txt index debd62bca84cbc..39f9a01343bf74 100644 --- a/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_dsa.txt +++ b/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_dsa.txt @@ -1,5 +1,5 @@ # -# Copyright 2001-2023 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -270,6 +270,7 @@ Title = FIPS Tests (using different key sizes and digests) # Test sign with a 2048 bit key with N == 160 is not allowed in fips mode Availablein = fips +FIPSversion = <3.4.0 DigestSign = SHA256 Key = DSA-2048-160 Input = "Hello" @@ -324,6 +325,7 @@ Title = Fips Negative Tests (using different key sizes and digests) # Test sign with a 1024 bit key is not allowed in fips mode Availablein = fips +FIPSversion = <3.4.0 DigestSign = SHA256 Securitycheck = 1 Key = DSA-1024-FIPS186-2 @@ -340,6 +342,7 @@ Result = DIGESTSIGNINIT_ERROR # Test sign with a 3072 bit key with N == 224 is not allowed in fips mode Availablein = fips +FIPSversion = <3.4.0 DigestSign = SHA256 Securitycheck = 1 Key = DSA-3072-224 @@ -348,6 +351,7 @@ Result = DIGESTSIGNINIT_ERROR # Test sign with a 4096 bit key is not allowed in fips mode Availablein = fips +FIPSversion = <3.4.0 DigestSign = SHA256 Securitycheck = 1 Key = DSA-4096-256 diff --git a/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_ecdsa.txt b/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_ecdsa.txt index ec3c032aba8d8f..1f9ce93cd1661f 100644 --- a/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_ecdsa.txt +++ b/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_ecdsa.txt @@ -1,5 +1,5 @@ # -# Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -216,6 +216,7 @@ Result = DIGESTSIGNINIT_ERROR # Test that SHA1 is not allowed in fips mode for signing Availablein = fips +FIPSversion = <3.4.0 Sign = P-256 Securitycheck = 1 Ctrl = digest:SHA1 diff --git a/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_rsa_common.txt b/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_rsa_common.txt index 24ec6a4f770521..5f3b396a675309 100644 --- a/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_rsa_common.txt +++ b/deps/openssl/openssl/test/recipes/30-test_evp_data/evppkey_rsa_common.txt @@ -1,5 +1,5 @@ # -# Copyright 2001-2021 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2001-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -1344,6 +1344,7 @@ Output = 80382819f51b197c42f9fc02a85198683d918059afc013ae155992442563dd289700829 # Signing with SHA1 is not allowed in fips mode Availablein = fips +FIPSversion = <3.4.0 DigestSign = SHA1 Securitycheck = 1 Key = RSA-2048 diff --git a/deps/openssl/openssl/test/recipes/70-test_npn.t b/deps/openssl/openssl/test/recipes/70-test_npn.t new file mode 100644 index 00000000000000..f82e71af6aca14 --- /dev/null +++ b/deps/openssl/openssl/test/recipes/70-test_npn.t @@ -0,0 +1,73 @@ +#! /usr/bin/env perl +# Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +use strict; +use OpenSSL::Test qw/:DEFAULT cmdstr srctop_file/; +use OpenSSL::Test::Utils; + +use TLSProxy::Proxy; + +my $test_name = "test_npn"; +setup($test_name); + +plan skip_all => "TLSProxy isn't usable on $^O" + if $^O =~ /^(VMS)$/; + +plan skip_all => "$test_name needs the dynamic engine feature enabled" + if disabled("engine") || disabled("dynamic-engine"); + +plan skip_all => "$test_name needs the sock feature enabled" + if disabled("sock"); + +plan skip_all => "$test_name needs NPN enabled" + if disabled("nextprotoneg"); + +plan skip_all => "$test_name needs TLSv1.2 enabled" + if disabled("tls1_2"); + +my $proxy = TLSProxy::Proxy->new( + undef, + cmdstr(app(["openssl"]), display => 1), + srctop_file("apps", "server.pem"), + (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE}) +); + +$proxy->start() or plan skip_all => "Unable to start up Proxy for tests"; +plan tests => 1; + +my $npnseen = 0; + +# Test 1: Check sending an empty NextProto message from the client works. This is +# valid as per the spec, but OpenSSL does not allow you to send it. +# Therefore we must be prepared to receive such a message but we cannot +# generate it except via TLSProxy +$proxy->clear(); +$proxy->filter(\&npn_filter); +$proxy->clientflags("-nextprotoneg foo -no_tls1_3"); +$proxy->serverflags("-nextprotoneg foo"); +$proxy->start(); +ok($npnseen && TLSProxy::Message->success(), "Empty NPN message"); + +sub npn_filter +{ + my $proxy = shift; + my $message; + + # The NextProto message always appears in flight 2 + return if $proxy->flight != 2; + + foreach my $message (@{$proxy->message_list}) { + if ($message->mt == TLSProxy::Message::MT_NEXT_PROTO) { + # Our TLSproxy NextProto message support doesn't support parsing of + # the message. If we repack it just creates an empty NextProto + # message - which is exactly the scenario we want to test here. + $message->repack(); + $npnseen = 1; + } + } +} diff --git a/deps/openssl/openssl/test/ssl-tests/08-npn.cnf b/deps/openssl/openssl/test/ssl-tests/08-npn.cnf index f38b3f6975ce06..1931d02de4bacb 100644 --- a/deps/openssl/openssl/test/ssl-tests/08-npn.cnf +++ b/deps/openssl/openssl/test/ssl-tests/08-npn.cnf @@ -1,6 +1,6 @@ # Generated with generate_ssl_tests.pl -num_tests = 20 +num_tests = 22 test-0 = 0-npn-simple test-1 = 1-npn-client-finds-match @@ -8,20 +8,22 @@ test-2 = 2-npn-client-honours-server-pref test-3 = 3-npn-client-first-pref-on-mismatch test-4 = 4-npn-no-server-support test-5 = 5-npn-no-client-support -test-6 = 6-npn-with-sni-no-context-switch -test-7 = 7-npn-with-sni-context-switch -test-8 = 8-npn-selected-sni-server-supports-npn -test-9 = 9-npn-selected-sni-server-does-not-support-npn -test-10 = 10-alpn-preferred-over-npn -test-11 = 11-sni-npn-preferred-over-alpn -test-12 = 12-npn-simple-resumption -test-13 = 13-npn-server-switch-resumption -test-14 = 14-npn-client-switch-resumption -test-15 = 15-npn-client-first-pref-on-mismatch-resumption -test-16 = 16-npn-no-server-support-resumption -test-17 = 17-npn-no-client-support-resumption -test-18 = 18-alpn-preferred-over-npn-resumption -test-19 = 19-npn-used-if-alpn-not-supported-resumption +test-6 = 6-npn-empty-client-list +test-7 = 7-npn-empty-server-list +test-8 = 8-npn-with-sni-no-context-switch +test-9 = 9-npn-with-sni-context-switch +test-10 = 10-npn-selected-sni-server-supports-npn +test-11 = 11-npn-selected-sni-server-does-not-support-npn +test-12 = 12-alpn-preferred-over-npn +test-13 = 13-sni-npn-preferred-over-alpn +test-14 = 14-npn-simple-resumption +test-15 = 15-npn-server-switch-resumption +test-16 = 16-npn-client-switch-resumption +test-17 = 17-npn-client-first-pref-on-mismatch-resumption +test-18 = 18-npn-no-server-support-resumption +test-19 = 19-npn-no-client-support-resumption +test-20 = 20-alpn-preferred-over-npn-resumption +test-21 = 21-npn-used-if-alpn-not-supported-resumption # =========================================================== [0-npn-simple] @@ -206,253 +208,318 @@ NPNProtocols = foo # =========================================================== -[6-npn-with-sni-no-context-switch] -ssl_conf = 6-npn-with-sni-no-context-switch-ssl +[6-npn-empty-client-list] +ssl_conf = 6-npn-empty-client-list-ssl -[6-npn-with-sni-no-context-switch-ssl] -server = 6-npn-with-sni-no-context-switch-server -client = 6-npn-with-sni-no-context-switch-client -server2 = 6-npn-with-sni-no-context-switch-server2 +[6-npn-empty-client-list-ssl] +server = 6-npn-empty-client-list-server +client = 6-npn-empty-client-list-client -[6-npn-with-sni-no-context-switch-server] +[6-npn-empty-client-list-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[6-npn-with-sni-no-context-switch-server2] +[6-npn-empty-client-list-client] +CipherString = DEFAULT +MaxProtocol = TLSv1.2 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-6] +ExpectedClientAlert = HandshakeFailure +ExpectedResult = ClientFail +server = 6-npn-empty-client-list-server-extra +client = 6-npn-empty-client-list-client-extra + +[6-npn-empty-client-list-server-extra] +NPNProtocols = foo + +[6-npn-empty-client-list-client-extra] +NPNProtocols = + + +# =========================================================== + +[7-npn-empty-server-list] +ssl_conf = 7-npn-empty-server-list-ssl + +[7-npn-empty-server-list-ssl] +server = 7-npn-empty-server-list-server +client = 7-npn-empty-server-list-client + +[7-npn-empty-server-list-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[6-npn-with-sni-no-context-switch-client] +[7-npn-empty-server-list-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-6] +[test-7] +ExpectedNPNProtocol = foo +server = 7-npn-empty-server-list-server-extra +client = 7-npn-empty-server-list-client-extra + +[7-npn-empty-server-list-server-extra] +NPNProtocols = + +[7-npn-empty-server-list-client-extra] +NPNProtocols = foo + + +# =========================================================== + +[8-npn-with-sni-no-context-switch] +ssl_conf = 8-npn-with-sni-no-context-switch-ssl + +[8-npn-with-sni-no-context-switch-ssl] +server = 8-npn-with-sni-no-context-switch-server +client = 8-npn-with-sni-no-context-switch-client +server2 = 8-npn-with-sni-no-context-switch-server2 + +[8-npn-with-sni-no-context-switch-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[8-npn-with-sni-no-context-switch-server2] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[8-npn-with-sni-no-context-switch-client] +CipherString = DEFAULT +MaxProtocol = TLSv1.2 +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-8] ExpectedNPNProtocol = foo ExpectedServerName = server1 -server = 6-npn-with-sni-no-context-switch-server-extra -server2 = 6-npn-with-sni-no-context-switch-server2-extra -client = 6-npn-with-sni-no-context-switch-client-extra +server = 8-npn-with-sni-no-context-switch-server-extra +server2 = 8-npn-with-sni-no-context-switch-server2-extra +client = 8-npn-with-sni-no-context-switch-client-extra -[6-npn-with-sni-no-context-switch-server-extra] +[8-npn-with-sni-no-context-switch-server-extra] NPNProtocols = foo ServerNameCallback = IgnoreMismatch -[6-npn-with-sni-no-context-switch-server2-extra] +[8-npn-with-sni-no-context-switch-server2-extra] NPNProtocols = bar -[6-npn-with-sni-no-context-switch-client-extra] +[8-npn-with-sni-no-context-switch-client-extra] NPNProtocols = foo,bar ServerName = server1 # =========================================================== -[7-npn-with-sni-context-switch] -ssl_conf = 7-npn-with-sni-context-switch-ssl +[9-npn-with-sni-context-switch] +ssl_conf = 9-npn-with-sni-context-switch-ssl -[7-npn-with-sni-context-switch-ssl] -server = 7-npn-with-sni-context-switch-server -client = 7-npn-with-sni-context-switch-client -server2 = 7-npn-with-sni-context-switch-server2 +[9-npn-with-sni-context-switch-ssl] +server = 9-npn-with-sni-context-switch-server +client = 9-npn-with-sni-context-switch-client +server2 = 9-npn-with-sni-context-switch-server2 -[7-npn-with-sni-context-switch-server] +[9-npn-with-sni-context-switch-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[7-npn-with-sni-context-switch-server2] +[9-npn-with-sni-context-switch-server2] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[7-npn-with-sni-context-switch-client] +[9-npn-with-sni-context-switch-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-7] +[test-9] ExpectedNPNProtocol = bar ExpectedServerName = server2 -server = 7-npn-with-sni-context-switch-server-extra -server2 = 7-npn-with-sni-context-switch-server2-extra -client = 7-npn-with-sni-context-switch-client-extra +server = 9-npn-with-sni-context-switch-server-extra +server2 = 9-npn-with-sni-context-switch-server2-extra +client = 9-npn-with-sni-context-switch-client-extra -[7-npn-with-sni-context-switch-server-extra] +[9-npn-with-sni-context-switch-server-extra] NPNProtocols = foo ServerNameCallback = IgnoreMismatch -[7-npn-with-sni-context-switch-server2-extra] +[9-npn-with-sni-context-switch-server2-extra] NPNProtocols = bar -[7-npn-with-sni-context-switch-client-extra] +[9-npn-with-sni-context-switch-client-extra] NPNProtocols = foo,bar ServerName = server2 # =========================================================== -[8-npn-selected-sni-server-supports-npn] -ssl_conf = 8-npn-selected-sni-server-supports-npn-ssl +[10-npn-selected-sni-server-supports-npn] +ssl_conf = 10-npn-selected-sni-server-supports-npn-ssl -[8-npn-selected-sni-server-supports-npn-ssl] -server = 8-npn-selected-sni-server-supports-npn-server -client = 8-npn-selected-sni-server-supports-npn-client -server2 = 8-npn-selected-sni-server-supports-npn-server2 +[10-npn-selected-sni-server-supports-npn-ssl] +server = 10-npn-selected-sni-server-supports-npn-server +client = 10-npn-selected-sni-server-supports-npn-client +server2 = 10-npn-selected-sni-server-supports-npn-server2 -[8-npn-selected-sni-server-supports-npn-server] +[10-npn-selected-sni-server-supports-npn-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[8-npn-selected-sni-server-supports-npn-server2] +[10-npn-selected-sni-server-supports-npn-server2] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[8-npn-selected-sni-server-supports-npn-client] +[10-npn-selected-sni-server-supports-npn-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-8] +[test-10] ExpectedNPNProtocol = bar ExpectedServerName = server2 -server = 8-npn-selected-sni-server-supports-npn-server-extra -server2 = 8-npn-selected-sni-server-supports-npn-server2-extra -client = 8-npn-selected-sni-server-supports-npn-client-extra +server = 10-npn-selected-sni-server-supports-npn-server-extra +server2 = 10-npn-selected-sni-server-supports-npn-server2-extra +client = 10-npn-selected-sni-server-supports-npn-client-extra -[8-npn-selected-sni-server-supports-npn-server-extra] +[10-npn-selected-sni-server-supports-npn-server-extra] ServerNameCallback = IgnoreMismatch -[8-npn-selected-sni-server-supports-npn-server2-extra] +[10-npn-selected-sni-server-supports-npn-server2-extra] NPNProtocols = bar -[8-npn-selected-sni-server-supports-npn-client-extra] +[10-npn-selected-sni-server-supports-npn-client-extra] NPNProtocols = foo,bar ServerName = server2 # =========================================================== -[9-npn-selected-sni-server-does-not-support-npn] -ssl_conf = 9-npn-selected-sni-server-does-not-support-npn-ssl +[11-npn-selected-sni-server-does-not-support-npn] +ssl_conf = 11-npn-selected-sni-server-does-not-support-npn-ssl -[9-npn-selected-sni-server-does-not-support-npn-ssl] -server = 9-npn-selected-sni-server-does-not-support-npn-server -client = 9-npn-selected-sni-server-does-not-support-npn-client -server2 = 9-npn-selected-sni-server-does-not-support-npn-server2 +[11-npn-selected-sni-server-does-not-support-npn-ssl] +server = 11-npn-selected-sni-server-does-not-support-npn-server +client = 11-npn-selected-sni-server-does-not-support-npn-client +server2 = 11-npn-selected-sni-server-does-not-support-npn-server2 -[9-npn-selected-sni-server-does-not-support-npn-server] +[11-npn-selected-sni-server-does-not-support-npn-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[9-npn-selected-sni-server-does-not-support-npn-server2] +[11-npn-selected-sni-server-does-not-support-npn-server2] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[9-npn-selected-sni-server-does-not-support-npn-client] +[11-npn-selected-sni-server-does-not-support-npn-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-9] +[test-11] ExpectedServerName = server2 -server = 9-npn-selected-sni-server-does-not-support-npn-server-extra -client = 9-npn-selected-sni-server-does-not-support-npn-client-extra +server = 11-npn-selected-sni-server-does-not-support-npn-server-extra +client = 11-npn-selected-sni-server-does-not-support-npn-client-extra -[9-npn-selected-sni-server-does-not-support-npn-server-extra] +[11-npn-selected-sni-server-does-not-support-npn-server-extra] NPNProtocols = bar ServerNameCallback = IgnoreMismatch -[9-npn-selected-sni-server-does-not-support-npn-client-extra] +[11-npn-selected-sni-server-does-not-support-npn-client-extra] NPNProtocols = foo,bar ServerName = server2 # =========================================================== -[10-alpn-preferred-over-npn] -ssl_conf = 10-alpn-preferred-over-npn-ssl +[12-alpn-preferred-over-npn] +ssl_conf = 12-alpn-preferred-over-npn-ssl -[10-alpn-preferred-over-npn-ssl] -server = 10-alpn-preferred-over-npn-server -client = 10-alpn-preferred-over-npn-client +[12-alpn-preferred-over-npn-ssl] +server = 12-alpn-preferred-over-npn-server +client = 12-alpn-preferred-over-npn-client -[10-alpn-preferred-over-npn-server] +[12-alpn-preferred-over-npn-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[10-alpn-preferred-over-npn-client] +[12-alpn-preferred-over-npn-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-10] +[test-12] ExpectedALPNProtocol = foo -server = 10-alpn-preferred-over-npn-server-extra -client = 10-alpn-preferred-over-npn-client-extra +server = 12-alpn-preferred-over-npn-server-extra +client = 12-alpn-preferred-over-npn-client-extra -[10-alpn-preferred-over-npn-server-extra] +[12-alpn-preferred-over-npn-server-extra] ALPNProtocols = foo NPNProtocols = bar -[10-alpn-preferred-over-npn-client-extra] +[12-alpn-preferred-over-npn-client-extra] ALPNProtocols = foo NPNProtocols = bar # =========================================================== -[11-sni-npn-preferred-over-alpn] -ssl_conf = 11-sni-npn-preferred-over-alpn-ssl +[13-sni-npn-preferred-over-alpn] +ssl_conf = 13-sni-npn-preferred-over-alpn-ssl -[11-sni-npn-preferred-over-alpn-ssl] -server = 11-sni-npn-preferred-over-alpn-server -client = 11-sni-npn-preferred-over-alpn-client -server2 = 11-sni-npn-preferred-over-alpn-server2 +[13-sni-npn-preferred-over-alpn-ssl] +server = 13-sni-npn-preferred-over-alpn-server +client = 13-sni-npn-preferred-over-alpn-client +server2 = 13-sni-npn-preferred-over-alpn-server2 -[11-sni-npn-preferred-over-alpn-server] +[13-sni-npn-preferred-over-alpn-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[11-sni-npn-preferred-over-alpn-server2] +[13-sni-npn-preferred-over-alpn-server2] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[11-sni-npn-preferred-over-alpn-client] +[13-sni-npn-preferred-over-alpn-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-11] +[test-13] ExpectedNPNProtocol = bar ExpectedServerName = server2 -server = 11-sni-npn-preferred-over-alpn-server-extra -server2 = 11-sni-npn-preferred-over-alpn-server2-extra -client = 11-sni-npn-preferred-over-alpn-client-extra +server = 13-sni-npn-preferred-over-alpn-server-extra +server2 = 13-sni-npn-preferred-over-alpn-server2-extra +client = 13-sni-npn-preferred-over-alpn-client-extra -[11-sni-npn-preferred-over-alpn-server-extra] +[13-sni-npn-preferred-over-alpn-server-extra] ALPNProtocols = foo ServerNameCallback = IgnoreMismatch -[11-sni-npn-preferred-over-alpn-server2-extra] +[13-sni-npn-preferred-over-alpn-server2-extra] NPNProtocols = bar -[11-sni-npn-preferred-over-alpn-client-extra] +[13-sni-npn-preferred-over-alpn-client-extra] ALPNProtocols = foo NPNProtocols = bar ServerName = server2 @@ -460,356 +527,356 @@ ServerName = server2 # =========================================================== -[12-npn-simple-resumption] -ssl_conf = 12-npn-simple-resumption-ssl +[14-npn-simple-resumption] +ssl_conf = 14-npn-simple-resumption-ssl -[12-npn-simple-resumption-ssl] -server = 12-npn-simple-resumption-server -client = 12-npn-simple-resumption-client -resume-server = 12-npn-simple-resumption-server -resume-client = 12-npn-simple-resumption-client +[14-npn-simple-resumption-ssl] +server = 14-npn-simple-resumption-server +client = 14-npn-simple-resumption-client +resume-server = 14-npn-simple-resumption-server +resume-client = 14-npn-simple-resumption-client -[12-npn-simple-resumption-server] +[14-npn-simple-resumption-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[12-npn-simple-resumption-client] +[14-npn-simple-resumption-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-12] +[test-14] ExpectedNPNProtocol = foo HandshakeMode = Resume ResumptionExpected = Yes -server = 12-npn-simple-resumption-server-extra -resume-server = 12-npn-simple-resumption-server-extra -client = 12-npn-simple-resumption-client-extra -resume-client = 12-npn-simple-resumption-client-extra +server = 14-npn-simple-resumption-server-extra +resume-server = 14-npn-simple-resumption-server-extra +client = 14-npn-simple-resumption-client-extra +resume-client = 14-npn-simple-resumption-client-extra -[12-npn-simple-resumption-server-extra] +[14-npn-simple-resumption-server-extra] NPNProtocols = foo -[12-npn-simple-resumption-client-extra] +[14-npn-simple-resumption-client-extra] NPNProtocols = foo # =========================================================== -[13-npn-server-switch-resumption] -ssl_conf = 13-npn-server-switch-resumption-ssl +[15-npn-server-switch-resumption] +ssl_conf = 15-npn-server-switch-resumption-ssl -[13-npn-server-switch-resumption-ssl] -server = 13-npn-server-switch-resumption-server -client = 13-npn-server-switch-resumption-client -resume-server = 13-npn-server-switch-resumption-resume-server -resume-client = 13-npn-server-switch-resumption-client +[15-npn-server-switch-resumption-ssl] +server = 15-npn-server-switch-resumption-server +client = 15-npn-server-switch-resumption-client +resume-server = 15-npn-server-switch-resumption-resume-server +resume-client = 15-npn-server-switch-resumption-client -[13-npn-server-switch-resumption-server] +[15-npn-server-switch-resumption-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[13-npn-server-switch-resumption-resume-server] +[15-npn-server-switch-resumption-resume-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[13-npn-server-switch-resumption-client] +[15-npn-server-switch-resumption-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-13] +[test-15] ExpectedNPNProtocol = baz HandshakeMode = Resume ResumptionExpected = Yes -server = 13-npn-server-switch-resumption-server-extra -resume-server = 13-npn-server-switch-resumption-resume-server-extra -client = 13-npn-server-switch-resumption-client-extra -resume-client = 13-npn-server-switch-resumption-client-extra +server = 15-npn-server-switch-resumption-server-extra +resume-server = 15-npn-server-switch-resumption-resume-server-extra +client = 15-npn-server-switch-resumption-client-extra +resume-client = 15-npn-server-switch-resumption-client-extra -[13-npn-server-switch-resumption-server-extra] +[15-npn-server-switch-resumption-server-extra] NPNProtocols = bar,foo -[13-npn-server-switch-resumption-resume-server-extra] +[15-npn-server-switch-resumption-resume-server-extra] NPNProtocols = baz,foo -[13-npn-server-switch-resumption-client-extra] +[15-npn-server-switch-resumption-client-extra] NPNProtocols = foo,bar,baz # =========================================================== -[14-npn-client-switch-resumption] -ssl_conf = 14-npn-client-switch-resumption-ssl +[16-npn-client-switch-resumption] +ssl_conf = 16-npn-client-switch-resumption-ssl -[14-npn-client-switch-resumption-ssl] -server = 14-npn-client-switch-resumption-server -client = 14-npn-client-switch-resumption-client -resume-server = 14-npn-client-switch-resumption-server -resume-client = 14-npn-client-switch-resumption-resume-client +[16-npn-client-switch-resumption-ssl] +server = 16-npn-client-switch-resumption-server +client = 16-npn-client-switch-resumption-client +resume-server = 16-npn-client-switch-resumption-server +resume-client = 16-npn-client-switch-resumption-resume-client -[14-npn-client-switch-resumption-server] +[16-npn-client-switch-resumption-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[14-npn-client-switch-resumption-client] +[16-npn-client-switch-resumption-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[14-npn-client-switch-resumption-resume-client] +[16-npn-client-switch-resumption-resume-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-14] +[test-16] ExpectedNPNProtocol = bar HandshakeMode = Resume ResumptionExpected = Yes -server = 14-npn-client-switch-resumption-server-extra -resume-server = 14-npn-client-switch-resumption-server-extra -client = 14-npn-client-switch-resumption-client-extra -resume-client = 14-npn-client-switch-resumption-resume-client-extra +server = 16-npn-client-switch-resumption-server-extra +resume-server = 16-npn-client-switch-resumption-server-extra +client = 16-npn-client-switch-resumption-client-extra +resume-client = 16-npn-client-switch-resumption-resume-client-extra -[14-npn-client-switch-resumption-server-extra] +[16-npn-client-switch-resumption-server-extra] NPNProtocols = foo,bar,baz -[14-npn-client-switch-resumption-client-extra] +[16-npn-client-switch-resumption-client-extra] NPNProtocols = foo,baz -[14-npn-client-switch-resumption-resume-client-extra] +[16-npn-client-switch-resumption-resume-client-extra] NPNProtocols = bar,baz # =========================================================== -[15-npn-client-first-pref-on-mismatch-resumption] -ssl_conf = 15-npn-client-first-pref-on-mismatch-resumption-ssl +[17-npn-client-first-pref-on-mismatch-resumption] +ssl_conf = 17-npn-client-first-pref-on-mismatch-resumption-ssl -[15-npn-client-first-pref-on-mismatch-resumption-ssl] -server = 15-npn-client-first-pref-on-mismatch-resumption-server -client = 15-npn-client-first-pref-on-mismatch-resumption-client -resume-server = 15-npn-client-first-pref-on-mismatch-resumption-resume-server -resume-client = 15-npn-client-first-pref-on-mismatch-resumption-client +[17-npn-client-first-pref-on-mismatch-resumption-ssl] +server = 17-npn-client-first-pref-on-mismatch-resumption-server +client = 17-npn-client-first-pref-on-mismatch-resumption-client +resume-server = 17-npn-client-first-pref-on-mismatch-resumption-resume-server +resume-client = 17-npn-client-first-pref-on-mismatch-resumption-client -[15-npn-client-first-pref-on-mismatch-resumption-server] +[17-npn-client-first-pref-on-mismatch-resumption-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[15-npn-client-first-pref-on-mismatch-resumption-resume-server] +[17-npn-client-first-pref-on-mismatch-resumption-resume-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[15-npn-client-first-pref-on-mismatch-resumption-client] +[17-npn-client-first-pref-on-mismatch-resumption-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-15] +[test-17] ExpectedNPNProtocol = foo HandshakeMode = Resume ResumptionExpected = Yes -server = 15-npn-client-first-pref-on-mismatch-resumption-server-extra -resume-server = 15-npn-client-first-pref-on-mismatch-resumption-resume-server-extra -client = 15-npn-client-first-pref-on-mismatch-resumption-client-extra -resume-client = 15-npn-client-first-pref-on-mismatch-resumption-client-extra +server = 17-npn-client-first-pref-on-mismatch-resumption-server-extra +resume-server = 17-npn-client-first-pref-on-mismatch-resumption-resume-server-extra +client = 17-npn-client-first-pref-on-mismatch-resumption-client-extra +resume-client = 17-npn-client-first-pref-on-mismatch-resumption-client-extra -[15-npn-client-first-pref-on-mismatch-resumption-server-extra] +[17-npn-client-first-pref-on-mismatch-resumption-server-extra] NPNProtocols = bar -[15-npn-client-first-pref-on-mismatch-resumption-resume-server-extra] +[17-npn-client-first-pref-on-mismatch-resumption-resume-server-extra] NPNProtocols = baz -[15-npn-client-first-pref-on-mismatch-resumption-client-extra] +[17-npn-client-first-pref-on-mismatch-resumption-client-extra] NPNProtocols = foo,bar # =========================================================== -[16-npn-no-server-support-resumption] -ssl_conf = 16-npn-no-server-support-resumption-ssl +[18-npn-no-server-support-resumption] +ssl_conf = 18-npn-no-server-support-resumption-ssl -[16-npn-no-server-support-resumption-ssl] -server = 16-npn-no-server-support-resumption-server -client = 16-npn-no-server-support-resumption-client -resume-server = 16-npn-no-server-support-resumption-resume-server -resume-client = 16-npn-no-server-support-resumption-client +[18-npn-no-server-support-resumption-ssl] +server = 18-npn-no-server-support-resumption-server +client = 18-npn-no-server-support-resumption-client +resume-server = 18-npn-no-server-support-resumption-resume-server +resume-client = 18-npn-no-server-support-resumption-client -[16-npn-no-server-support-resumption-server] +[18-npn-no-server-support-resumption-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[16-npn-no-server-support-resumption-resume-server] +[18-npn-no-server-support-resumption-resume-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[16-npn-no-server-support-resumption-client] +[18-npn-no-server-support-resumption-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-16] +[test-18] HandshakeMode = Resume ResumptionExpected = Yes -server = 16-npn-no-server-support-resumption-server-extra -client = 16-npn-no-server-support-resumption-client-extra -resume-client = 16-npn-no-server-support-resumption-client-extra +server = 18-npn-no-server-support-resumption-server-extra +client = 18-npn-no-server-support-resumption-client-extra +resume-client = 18-npn-no-server-support-resumption-client-extra -[16-npn-no-server-support-resumption-server-extra] +[18-npn-no-server-support-resumption-server-extra] NPNProtocols = foo -[16-npn-no-server-support-resumption-client-extra] +[18-npn-no-server-support-resumption-client-extra] NPNProtocols = foo # =========================================================== -[17-npn-no-client-support-resumption] -ssl_conf = 17-npn-no-client-support-resumption-ssl +[19-npn-no-client-support-resumption] +ssl_conf = 19-npn-no-client-support-resumption-ssl -[17-npn-no-client-support-resumption-ssl] -server = 17-npn-no-client-support-resumption-server -client = 17-npn-no-client-support-resumption-client -resume-server = 17-npn-no-client-support-resumption-server -resume-client = 17-npn-no-client-support-resumption-resume-client +[19-npn-no-client-support-resumption-ssl] +server = 19-npn-no-client-support-resumption-server +client = 19-npn-no-client-support-resumption-client +resume-server = 19-npn-no-client-support-resumption-server +resume-client = 19-npn-no-client-support-resumption-resume-client -[17-npn-no-client-support-resumption-server] +[19-npn-no-client-support-resumption-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[17-npn-no-client-support-resumption-client] +[19-npn-no-client-support-resumption-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[17-npn-no-client-support-resumption-resume-client] +[19-npn-no-client-support-resumption-resume-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-17] +[test-19] HandshakeMode = Resume ResumptionExpected = Yes -server = 17-npn-no-client-support-resumption-server-extra -resume-server = 17-npn-no-client-support-resumption-server-extra -client = 17-npn-no-client-support-resumption-client-extra +server = 19-npn-no-client-support-resumption-server-extra +resume-server = 19-npn-no-client-support-resumption-server-extra +client = 19-npn-no-client-support-resumption-client-extra -[17-npn-no-client-support-resumption-server-extra] +[19-npn-no-client-support-resumption-server-extra] NPNProtocols = foo -[17-npn-no-client-support-resumption-client-extra] +[19-npn-no-client-support-resumption-client-extra] NPNProtocols = foo # =========================================================== -[18-alpn-preferred-over-npn-resumption] -ssl_conf = 18-alpn-preferred-over-npn-resumption-ssl +[20-alpn-preferred-over-npn-resumption] +ssl_conf = 20-alpn-preferred-over-npn-resumption-ssl -[18-alpn-preferred-over-npn-resumption-ssl] -server = 18-alpn-preferred-over-npn-resumption-server -client = 18-alpn-preferred-over-npn-resumption-client -resume-server = 18-alpn-preferred-over-npn-resumption-resume-server -resume-client = 18-alpn-preferred-over-npn-resumption-client +[20-alpn-preferred-over-npn-resumption-ssl] +server = 20-alpn-preferred-over-npn-resumption-server +client = 20-alpn-preferred-over-npn-resumption-client +resume-server = 20-alpn-preferred-over-npn-resumption-resume-server +resume-client = 20-alpn-preferred-over-npn-resumption-client -[18-alpn-preferred-over-npn-resumption-server] +[20-alpn-preferred-over-npn-resumption-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[18-alpn-preferred-over-npn-resumption-resume-server] +[20-alpn-preferred-over-npn-resumption-resume-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[18-alpn-preferred-over-npn-resumption-client] +[20-alpn-preferred-over-npn-resumption-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-18] +[test-20] ExpectedALPNProtocol = foo HandshakeMode = Resume ResumptionExpected = Yes -server = 18-alpn-preferred-over-npn-resumption-server-extra -resume-server = 18-alpn-preferred-over-npn-resumption-resume-server-extra -client = 18-alpn-preferred-over-npn-resumption-client-extra -resume-client = 18-alpn-preferred-over-npn-resumption-client-extra +server = 20-alpn-preferred-over-npn-resumption-server-extra +resume-server = 20-alpn-preferred-over-npn-resumption-resume-server-extra +client = 20-alpn-preferred-over-npn-resumption-client-extra +resume-client = 20-alpn-preferred-over-npn-resumption-client-extra -[18-alpn-preferred-over-npn-resumption-server-extra] +[20-alpn-preferred-over-npn-resumption-server-extra] NPNProtocols = bar -[18-alpn-preferred-over-npn-resumption-resume-server-extra] +[20-alpn-preferred-over-npn-resumption-resume-server-extra] ALPNProtocols = foo NPNProtocols = baz -[18-alpn-preferred-over-npn-resumption-client-extra] +[20-alpn-preferred-over-npn-resumption-client-extra] ALPNProtocols = foo NPNProtocols = bar,baz # =========================================================== -[19-npn-used-if-alpn-not-supported-resumption] -ssl_conf = 19-npn-used-if-alpn-not-supported-resumption-ssl +[21-npn-used-if-alpn-not-supported-resumption] +ssl_conf = 21-npn-used-if-alpn-not-supported-resumption-ssl -[19-npn-used-if-alpn-not-supported-resumption-ssl] -server = 19-npn-used-if-alpn-not-supported-resumption-server -client = 19-npn-used-if-alpn-not-supported-resumption-client -resume-server = 19-npn-used-if-alpn-not-supported-resumption-resume-server -resume-client = 19-npn-used-if-alpn-not-supported-resumption-client +[21-npn-used-if-alpn-not-supported-resumption-ssl] +server = 21-npn-used-if-alpn-not-supported-resumption-server +client = 21-npn-used-if-alpn-not-supported-resumption-client +resume-server = 21-npn-used-if-alpn-not-supported-resumption-resume-server +resume-client = 21-npn-used-if-alpn-not-supported-resumption-client -[19-npn-used-if-alpn-not-supported-resumption-server] +[21-npn-used-if-alpn-not-supported-resumption-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[19-npn-used-if-alpn-not-supported-resumption-resume-server] +[21-npn-used-if-alpn-not-supported-resumption-resume-server] Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem CipherString = DEFAULT PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem -[19-npn-used-if-alpn-not-supported-resumption-client] +[21-npn-used-if-alpn-not-supported-resumption-client] CipherString = DEFAULT MaxProtocol = TLSv1.2 VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem VerifyMode = Peer -[test-19] +[test-21] ExpectedNPNProtocol = baz HandshakeMode = Resume ResumptionExpected = Yes -server = 19-npn-used-if-alpn-not-supported-resumption-server-extra -resume-server = 19-npn-used-if-alpn-not-supported-resumption-resume-server-extra -client = 19-npn-used-if-alpn-not-supported-resumption-client-extra -resume-client = 19-npn-used-if-alpn-not-supported-resumption-client-extra +server = 21-npn-used-if-alpn-not-supported-resumption-server-extra +resume-server = 21-npn-used-if-alpn-not-supported-resumption-resume-server-extra +client = 21-npn-used-if-alpn-not-supported-resumption-client-extra +resume-client = 21-npn-used-if-alpn-not-supported-resumption-client-extra -[19-npn-used-if-alpn-not-supported-resumption-server-extra] +[21-npn-used-if-alpn-not-supported-resumption-server-extra] ALPNProtocols = foo NPNProtocols = bar -[19-npn-used-if-alpn-not-supported-resumption-resume-server-extra] +[21-npn-used-if-alpn-not-supported-resumption-resume-server-extra] NPNProtocols = baz -[19-npn-used-if-alpn-not-supported-resumption-client-extra] +[21-npn-used-if-alpn-not-supported-resumption-client-extra] ALPNProtocols = foo NPNProtocols = bar,baz diff --git a/deps/openssl/openssl/test/ssl-tests/08-npn.cnf.in b/deps/openssl/openssl/test/ssl-tests/08-npn.cnf.in index 30783e45eb5931..0caed2100ed488 100644 --- a/deps/openssl/openssl/test/ssl-tests/08-npn.cnf.in +++ b/deps/openssl/openssl/test/ssl-tests/08-npn.cnf.in @@ -1,5 +1,5 @@ # -*- mode: perl; -*- -# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -110,6 +110,41 @@ our @tests = ( "ExpectedNPNProtocol" => undef, }, }, + { + name => "npn-empty-client-list", + server => { + extra => { + "NPNProtocols" => "foo", + }, + }, + client => { + extra => { + "NPNProtocols" => "", + }, + "MaxProtocol" => "TLSv1.2" + }, + test => { + "ExpectedResult" => "ClientFail", + "ExpectedClientAlert" => "HandshakeFailure" + }, + }, + { + name => "npn-empty-server-list", + server => { + extra => { + "NPNProtocols" => "", + }, + }, + client => { + extra => { + "NPNProtocols" => "foo", + }, + "MaxProtocol" => "TLSv1.2" + }, + test => { + "ExpectedNPNProtocol" => "foo" + }, + }, { name => "npn-with-sni-no-context-switch", server => { diff --git a/deps/openssl/openssl/test/ssl-tests/09-alpn.cnf b/deps/openssl/openssl/test/ssl-tests/09-alpn.cnf index e7e6cb95348b72..dd668739ab9a06 100644 --- a/deps/openssl/openssl/test/ssl-tests/09-alpn.cnf +++ b/deps/openssl/openssl/test/ssl-tests/09-alpn.cnf @@ -1,6 +1,6 @@ # Generated with generate_ssl_tests.pl -num_tests = 16 +num_tests = 18 test-0 = 0-alpn-simple test-1 = 1-alpn-server-finds-match @@ -18,6 +18,8 @@ test-12 = 12-alpn-client-switch-resumption test-13 = 13-alpn-alert-on-mismatch-resumption test-14 = 14-alpn-no-server-support-resumption test-15 = 15-alpn-no-client-support-resumption +test-16 = 16-alpn-empty-client-list +test-17 = 17-alpn-empty-server-list # =========================================================== [0-alpn-simple] @@ -617,3 +619,65 @@ ALPNProtocols = foo ALPNProtocols = foo +# =========================================================== + +[16-alpn-empty-client-list] +ssl_conf = 16-alpn-empty-client-list-ssl + +[16-alpn-empty-client-list-ssl] +server = 16-alpn-empty-client-list-server +client = 16-alpn-empty-client-list-client + +[16-alpn-empty-client-list-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[16-alpn-empty-client-list-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-16] +server = 16-alpn-empty-client-list-server-extra +client = 16-alpn-empty-client-list-client-extra + +[16-alpn-empty-client-list-server-extra] +ALPNProtocols = foo + +[16-alpn-empty-client-list-client-extra] +ALPNProtocols = + + +# =========================================================== + +[17-alpn-empty-server-list] +ssl_conf = 17-alpn-empty-server-list-ssl + +[17-alpn-empty-server-list-ssl] +server = 17-alpn-empty-server-list-server +client = 17-alpn-empty-server-list-client + +[17-alpn-empty-server-list-server] +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem +CipherString = DEFAULT +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem + +[17-alpn-empty-server-list-client] +CipherString = DEFAULT +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem +VerifyMode = Peer + +[test-17] +ExpectedResult = ServerFail +ExpectedServerAlert = NoApplicationProtocol +server = 17-alpn-empty-server-list-server-extra +client = 17-alpn-empty-server-list-client-extra + +[17-alpn-empty-server-list-server-extra] +ALPNProtocols = + +[17-alpn-empty-server-list-client-extra] +ALPNProtocols = foo + + diff --git a/deps/openssl/openssl/test/ssl-tests/09-alpn.cnf.in b/deps/openssl/openssl/test/ssl-tests/09-alpn.cnf.in index 81330756c62ce6..73e9cbabb0538a 100644 --- a/deps/openssl/openssl/test/ssl-tests/09-alpn.cnf.in +++ b/deps/openssl/openssl/test/ssl-tests/09-alpn.cnf.in @@ -1,5 +1,5 @@ # -*- mode: perl; -*- -# Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -322,4 +322,37 @@ our @tests = ( "ExpectedALPNProtocol" => undef, }, }, + { + name => "alpn-empty-client-list", + server => { + extra => { + "ALPNProtocols" => "foo", + }, + }, + client => { + extra => { + "ALPNProtocols" => "", + }, + }, + test => { + "ExpectedALPNProtocol" => undef, + }, + }, + { + name => "alpn-empty-server-list", + server => { + extra => { + "ALPNProtocols" => "", + }, + }, + client => { + extra => { + "ALPNProtocols" => "foo", + }, + }, + test => { + "ExpectedResult" => "ServerFail", + "ExpectedServerAlert" => "NoApplicationProtocol", + }, + }, ); diff --git a/deps/openssl/openssl/test/sslapitest.c b/deps/openssl/openssl/test/sslapitest.c index 057c0dddaccc0a..b0544d4942f7ea 100644 --- a/deps/openssl/openssl/test/sslapitest.c +++ b/deps/openssl/openssl/test/sslapitest.c @@ -3938,7 +3938,7 @@ static int early_data_skip_helper(int testtype, int cipher, int idx) if (!TEST_true(SSL_set1_groups_list(serverssl, "ffdhe3072"))) goto end; #else - if (!TEST_true(SSL_set1_groups_list(serverssl, "P-256"))) + if (!TEST_true(SSL_set1_groups_list(serverssl, "P-384"))) goto end; #endif } else if (idx == 2) { @@ -5553,7 +5553,7 @@ static int test_tls13_psk(int idx) if (!TEST_true(SSL_set1_groups_list(serverssl, "ffdhe3072"))) goto end; #else - if (!TEST_true(SSL_set1_groups_list(serverssl, "P-256"))) + if (!TEST_true(SSL_set1_groups_list(serverssl, "P-384"))) goto end; #endif @@ -11123,6 +11123,367 @@ static int test_quic_early_data(int tst) # endif /* OSSL_NO_USABLE_TLS1_3 */ #endif /* OPENSSL_NO_QUIC */ +static struct next_proto_st { + int serverlen; + unsigned char server[40]; + int clientlen; + unsigned char client[40]; + int expected_ret; + size_t selectedlen; + unsigned char selected[40]; +} next_proto_tests[] = { + { + 4, { 3, 'a', 'b', 'c' }, + 4, { 3, 'a', 'b', 'c' }, + OPENSSL_NPN_NEGOTIATED, + 3, { 'a', 'b', 'c' } + }, + { + 7, { 3, 'a', 'b', 'c', 2, 'a', 'b' }, + 4, { 3, 'a', 'b', 'c' }, + OPENSSL_NPN_NEGOTIATED, + 3, { 'a', 'b', 'c' } + }, + { + 7, { 2, 'a', 'b', 3, 'a', 'b', 'c', }, + 4, { 3, 'a', 'b', 'c' }, + OPENSSL_NPN_NEGOTIATED, + 3, { 'a', 'b', 'c' } + }, + { + 4, { 3, 'a', 'b', 'c' }, + 7, { 3, 'a', 'b', 'c', 2, 'a', 'b', }, + OPENSSL_NPN_NEGOTIATED, + 3, { 'a', 'b', 'c' } + }, + { + 4, { 3, 'a', 'b', 'c' }, + 7, { 2, 'a', 'b', 3, 'a', 'b', 'c'}, + OPENSSL_NPN_NEGOTIATED, + 3, { 'a', 'b', 'c' } + }, + { + 7, { 2, 'b', 'c', 3, 'a', 'b', 'c' }, + 7, { 2, 'a', 'b', 3, 'a', 'b', 'c'}, + OPENSSL_NPN_NEGOTIATED, + 3, { 'a', 'b', 'c' } + }, + { + 10, { 2, 'b', 'c', 3, 'a', 'b', 'c', 2, 'a', 'b' }, + 7, { 2, 'a', 'b', 3, 'a', 'b', 'c'}, + OPENSSL_NPN_NEGOTIATED, + 3, { 'a', 'b', 'c' } + }, + { + 4, { 3, 'b', 'c', 'd' }, + 4, { 3, 'a', 'b', 'c' }, + OPENSSL_NPN_NO_OVERLAP, + 3, { 'a', 'b', 'c' } + }, + { + 0, { 0 }, + 4, { 3, 'a', 'b', 'c' }, + OPENSSL_NPN_NO_OVERLAP, + 3, { 'a', 'b', 'c' } + }, + { + -1, { 0 }, + 4, { 3, 'a', 'b', 'c' }, + OPENSSL_NPN_NO_OVERLAP, + 3, { 'a', 'b', 'c' } + }, + { + 4, { 3, 'a', 'b', 'c' }, + 0, { 0 }, + OPENSSL_NPN_NO_OVERLAP, + 0, { 0 } + }, + { + 4, { 3, 'a', 'b', 'c' }, + -1, { 0 }, + OPENSSL_NPN_NO_OVERLAP, + 0, { 0 } + }, + { + 3, { 3, 'a', 'b', 'c' }, + 4, { 3, 'a', 'b', 'c' }, + OPENSSL_NPN_NO_OVERLAP, + 3, { 'a', 'b', 'c' } + }, + { + 4, { 3, 'a', 'b', 'c' }, + 3, { 3, 'a', 'b', 'c' }, + OPENSSL_NPN_NO_OVERLAP, + 0, { 0 } + } +}; + +static int test_select_next_proto(int idx) +{ + struct next_proto_st *np = &next_proto_tests[idx]; + int ret = 0; + unsigned char *out, *client, *server; + unsigned char outlen; + unsigned int clientlen, serverlen; + + if (np->clientlen == -1) { + client = NULL; + clientlen = 0; + } else { + client = np->client; + clientlen = (unsigned int)np->clientlen; + } + if (np->serverlen == -1) { + server = NULL; + serverlen = 0; + } else { + server = np->server; + serverlen = (unsigned int)np->serverlen; + } + + if (!TEST_int_eq(SSL_select_next_proto(&out, &outlen, server, serverlen, + client, clientlen), + np->expected_ret)) + goto err; + + if (np->selectedlen == 0) { + if (!TEST_ptr_null(out) || !TEST_uchar_eq(outlen, 0)) + goto err; + } else { + if (!TEST_mem_eq(out, outlen, np->selected, np->selectedlen)) + goto err; + } + + ret = 1; + err: + return ret; +} + +static const unsigned char fooprot[] = {3, 'f', 'o', 'o' }; +static const unsigned char barprot[] = {3, 'b', 'a', 'r' }; + +#if !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_NEXTPROTONEG) +static int npn_advert_cb(SSL *ssl, const unsigned char **out, + unsigned int *outlen, void *arg) +{ + int *idx = (int *)arg; + + switch (*idx) { + default: + case 0: + *out = fooprot; + *outlen = sizeof(fooprot); + return SSL_TLSEXT_ERR_OK; + + case 1: + *outlen = 0; + return SSL_TLSEXT_ERR_OK; + + case 2: + return SSL_TLSEXT_ERR_NOACK; + } +} + +static int npn_select_cb(SSL *s, unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, void *arg) +{ + int *idx = (int *)arg; + + switch (*idx) { + case 0: + case 1: + *out = (unsigned char *)(fooprot + 1); + *outlen = *fooprot; + return SSL_TLSEXT_ERR_OK; + + case 3: + *out = (unsigned char *)(barprot + 1); + *outlen = *barprot; + return SSL_TLSEXT_ERR_OK; + + case 4: + *outlen = 0; + return SSL_TLSEXT_ERR_OK; + + default: + case 2: + return SSL_TLSEXT_ERR_ALERT_FATAL; + } +} + +/* + * Test the NPN callbacks + * Test 0: advert = foo, select = foo + * Test 1: advert = , select = foo + * Test 2: no advert + * Test 3: advert = foo, select = bar + * Test 4: advert = foo, select = (should fail) + */ +static int test_npn(int idx) +{ + SSL_CTX *sctx = NULL, *cctx = NULL; + SSL *serverssl = NULL, *clientssl = NULL; + int testresult = 0; + + if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(), + TLS_client_method(), 0, TLS1_2_VERSION, + &sctx, &cctx, cert, privkey))) + goto end; + + SSL_CTX_set_next_protos_advertised_cb(sctx, npn_advert_cb, &idx); + SSL_CTX_set_next_proto_select_cb(cctx, npn_select_cb, &idx); + + if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, NULL, + NULL))) + goto end; + + if (idx == 4) { + /* We don't allow empty selection of NPN, so this should fail */ + if (!TEST_false(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE))) + goto end; + } else { + const unsigned char *prot; + unsigned int protlen; + + if (!TEST_true(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE))) + goto end; + + SSL_get0_next_proto_negotiated(serverssl, &prot, &protlen); + switch (idx) { + case 0: + case 1: + if (!TEST_mem_eq(prot, protlen, fooprot + 1, *fooprot)) + goto end; + break; + case 2: + if (!TEST_uint_eq(protlen, 0)) + goto end; + break; + case 3: + if (!TEST_mem_eq(prot, protlen, barprot + 1, *barprot)) + goto end; + break; + default: + TEST_error("Should not get here"); + goto end; + } + } + + testresult = 1; + end: + SSL_free(serverssl); + SSL_free(clientssl); + SSL_CTX_free(sctx); + SSL_CTX_free(cctx); + + return testresult; +} +#endif /* !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_NEXTPROTONEG) */ + +static int alpn_select_cb2(SSL *ssl, const unsigned char **out, + unsigned char *outlen, const unsigned char *in, + unsigned int inlen, void *arg) +{ + int *idx = (int *)arg; + + switch (*idx) { + case 0: + *out = (unsigned char *)(fooprot + 1); + *outlen = *fooprot; + return SSL_TLSEXT_ERR_OK; + + case 2: + *out = (unsigned char *)(barprot + 1); + *outlen = *barprot; + return SSL_TLSEXT_ERR_OK; + + case 3: + *outlen = 0; + return SSL_TLSEXT_ERR_OK; + + default: + case 1: + return SSL_TLSEXT_ERR_ALERT_FATAL; + } + return 0; +} + +/* + * Test the ALPN callbacks + * Test 0: client = foo, select = foo + * Test 1: client = , select = none + * Test 2: client = foo, select = bar (should fail) + * Test 3: client = foo, select = (should fail) + */ +static int test_alpn(int idx) +{ + SSL_CTX *sctx = NULL, *cctx = NULL; + SSL *serverssl = NULL, *clientssl = NULL; + int testresult = 0; + const unsigned char *prots = fooprot; + unsigned int protslen = sizeof(fooprot); + + if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(), + TLS_client_method(), 0, 0, + &sctx, &cctx, cert, privkey))) + goto end; + + SSL_CTX_set_alpn_select_cb(sctx, alpn_select_cb2, &idx); + + if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, NULL, + NULL))) + goto end; + + if (idx == 1) { + prots = NULL; + protslen = 0; + } + + /* SSL_set_alpn_protos returns 0 for success! */ + if (!TEST_false(SSL_set_alpn_protos(clientssl, prots, protslen))) + goto end; + + if (idx == 2 || idx == 3) { + /* We don't allow empty selection of NPN, so this should fail */ + if (!TEST_false(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE))) + goto end; + } else { + const unsigned char *prot; + unsigned int protlen; + + if (!TEST_true(create_ssl_connection(serverssl, clientssl, + SSL_ERROR_NONE))) + goto end; + + SSL_get0_alpn_selected(clientssl, &prot, &protlen); + switch (idx) { + case 0: + if (!TEST_mem_eq(prot, protlen, fooprot + 1, *fooprot)) + goto end; + break; + case 1: + if (!TEST_uint_eq(protlen, 0)) + goto end; + break; + default: + TEST_error("Should not get here"); + goto end; + } + } + + testresult = 1; + end: + SSL_free(serverssl); + SSL_free(clientssl); + SSL_CTX_free(sctx); + SSL_CTX_free(cctx); + + return testresult; +} + OPT_TEST_DECLARE_USAGE("certfile privkeyfile srpvfile tmpfile provider config dhfile\n") int setup_tests(void) @@ -11399,6 +11760,11 @@ int setup_tests(void) #endif ADD_ALL_TESTS(test_handshake_retry, 16); ADD_ALL_TESTS(test_multi_resume, 5); + ADD_ALL_TESTS(test_select_next_proto, OSSL_NELEM(next_proto_tests)); +#if !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_NEXTPROTONEG) + ADD_ALL_TESTS(test_npn, 5); +#endif + ADD_ALL_TESTS(test_alpn, 4); #ifndef OPENSSL_NO_QUIC ADD_ALL_TESTS(test_quic_api, 9); # ifndef OSSL_NO_USABLE_TLS1_3 diff --git a/deps/openssl/openssl/util/check-format-commit.sh b/deps/openssl/openssl/util/check-format-commit.sh new file mode 100755 index 00000000000000..7e712dc48cf655 --- /dev/null +++ b/deps/openssl/openssl/util/check-format-commit.sh @@ -0,0 +1,171 @@ +#!/bin/bash +# Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# You can obtain a copy in the file LICENSE in the source distribution +# or at https://www.openssl.org/source/license.html +# +# This script is a wrapper around check-format.pl. It accepts a commit sha +# value as input, and uses it to identify the files and ranges that were +# changed in that commit, filtering check-format.pl output only to lines that +# fall into the commits change ranges. +# + + +# List of Regexes to use when running check-format.pl. +# Style checks don't apply to any of these +EXCLUDED_FILE_REGEX=("\.pod" \ + "\.pl" \ + "\.pm" \ + "\.t" \ + "\.yml" \ + "\.sh") + +# Exit code for the script +EXIT_CODE=0 + +# Global vars + +# TEMPDIR is used to hold any files this script creates +# And is cleaned on EXIT with a trap function +TEMPDIR=$(mktemp -d /tmp/checkformat.XXXXXX) + +# TOPDIR always points to the root of the git tree we are working in +# used to locate the check-format.pl script +TOPDIR=$(git rev-parse --show-toplevel) + + +# cleanup handler function, returns us to the root of the git tree +# and erases our temp directory +cleanup() { + rm -rf $TEMPDIR + cd $TOPDIR +} + +trap cleanup EXIT + +# Get the canonical sha256 sum for the commit we are checking +# This lets us pass in symbolic ref names like master/etc and +# resolve them to sha256 sums easily +COMMIT=$(git rev-parse $1) + +# Fail gracefully if git rev-parse doesn't produce a valid +# commit +if [ $? -ne 0 ] +then + echo "$1 is not a valid revision" + exit 1 +fi + +# Create a iteratable list of files to check for a +# given commit. It produces output of the format +# , +touch $TEMPDIR/ranges.txt +git show $COMMIT | awk -v mycmt=$COMMIT ' + BEGIN {myfile=""} + /+{3}/ { + gsub(/b\//,"",$2); + myfile=$2 + } + /@@/ { + gsub(/+/,"",$3); + printf mycmt " " myfile " " $3 "\n" + }' >> $TEMPDIR/ranges.txt || true + +# filter out anything that matches on a filter regex +for i in ${EXCLUDED_FILE_REGEX[@]} +do + touch $TEMPDIR/ranges.filter + grep -v "$i" $TEMPDIR/ranges.txt >> $TEMPDIR/ranges.filter || true + REMAINING_FILES=$(wc -l $TEMPDIR/ranges.filter | awk '{print $1}') + if [ $REMAINING_FILES -eq 0 ] + then + echo "This commit has no files that require checking" + exit 0 + fi + mv $TEMPDIR/ranges.filter $TEMPDIR/ranges.txt +done + +# check out the files from the commit level. +# For each file name in ranges, we show that file at the commit +# level we are checking, and redirect it to the same path, relative +# to $TEMPDIR/check-format. This give us the full file to run +# check-format.pl on with line numbers matching the ranges in the +# $TEMPDIR/ranges.txt file +for j in $(grep $COMMIT $TEMPDIR/ranges.txt | awk '{print $2}') +do + FDIR=$(dirname $j) + mkdir -p $TEMPDIR/check-format/$FDIR + git show $COMMIT:$j > $TEMPDIR/check-format/$j +done + +# Now for each file in $TEMPDIR/check-format run check-format.pl +# Note that we use the %P formatter in the find utilty. This strips +# off the $TEMPDIR/check-format path prefix, leaving $j with the +# path to the file relative to the root of the source dir, so that +# output from check-format.pl looks correct, relative to the root +# of the git tree. +for j in $(find $TEMPDIR/check-format -type f -printf "%P\n") +do + range_start=() + range_end=() + + # Get the ranges for this file. Create 2 arrays. range_start contains + # the start lines for valid ranges from the commit. the range_end array + # contains the corresponding end line (note, since diff output gives us + # a line count for a change, the range_end[k] entry is actually + # range_start[k]+line count + for k in $(grep $COMMIT $TEMPDIR/ranges.txt | grep $j | awk '{print $3}') + do + RANGE=$k + RSTART=$(echo $RANGE | awk -F',' '{print $1}') + RLEN=$(echo $RANGE | awk -F',' '{print $2}') + let REND=$RSTART+$RLEN + range_start+=($RSTART) + range_end+=($REND) + done + + # Go to our checked out tree + cd $TEMPDIR/check-format + + # Actually run check-format.pl on the file, capturing the output + # in a temporary file. Note the format of check-patch.pl output is + # ::: + $TOPDIR/util/check-format.pl $j > $TEMPDIR/format-results.txt + + # Now we filter the check-format.pl output based on the changed lines + # captured in the range_start/end arrays + let maxidx=${#range_start[@]}-1 + for k in $(seq 0 1 $maxidx) + do + RSTART=${range_start[$k]} + REND=${range_end[$k]} + + # field 2 of check-format.pl output is the offending line number + # Check here if any line in that output falls between any of the + # start/end ranges defined in the range_start/range_end array. + # If it does fall in that range, print the entire line to stdout + # If anything is printed, have awk exit with a non-zero exit code + awk -v rstart=$RSTART -v rend=$REND -F':' ' + BEGIN {rc=0} + /:/ { + if (($2 >= rstart) && ($2 <= rend)) { + print $0; + rc=1 + } + } + END {exit rc;} + ' $TEMPDIR/format-results.txt + + # If awk exited with a non-zero code, this script will also exit + # with a non-zero code + if [ $? -ne 0 ] + then + EXIT_CODE=1 + fi + done +done + +# Exit with the recorded exit code above +exit $EXIT_CODE diff --git a/deps/openssl/openssl/util/check-format-test-negatives.c b/deps/openssl/openssl/util/check-format-test-negatives.c index b6c42a00a0750e..f6b1bfb31920ff 100644 --- a/deps/openssl/openssl/util/check-format-test-negatives.c +++ b/deps/openssl/openssl/util/check-format-test-negatives.c @@ -1,5 +1,5 @@ /* - * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2007-2024 The OpenSSL Project Authors. All Rights Reserved. * Copyright Siemens AG 2015-2022 * * Licensed under the Apache License 2.0 (the "License"). You may not use @@ -335,9 +335,8 @@ size_t UTIL_url_encode(const char *source, int f() { c; - if (1) { + if (1) c; - } c; if (1) if (2) diff --git a/deps/openssl/openssl/util/check-format.pl b/deps/openssl/openssl/util/check-format.pl index e1a91bcc58150d..ef2c1920e7220a 100755 --- a/deps/openssl/openssl/util/check-format.pl +++ b/deps/openssl/openssl/util/check-format.pl @@ -1,6 +1,6 @@ #! /usr/bin/env perl # -# Copyright 2020-2023 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2020-2024 The OpenSSL Project Authors. All Rights Reserved. # Copyright Siemens AG 2019-2022 # # Licensed under the Apache License 2.0 (the "License"). @@ -167,7 +167,7 @@ my $line_body_start; # number of line where last function body started, or 0 my $line_function_start; # number of line where last function definition started, used for $line_body_start my $last_function_header; # header containing name of last function defined, used if $line_body_start != 0 -my $line_opening_brace; # number of previous line with opening brace after do/while/for, optionally for if/else +my $line_opening_brace; # number of previous line with opening brace after if/do/while/for, optionally for 'else' my $keyword_opening_brace; # name of previous keyword, used if $line_opening_brace != 0 my $block_indent; # currently required normal indentation at block/statement level @@ -972,9 +972,12 @@ sub check_nested_nonblock_indents { # check for code block containing a single line/statement if ($line_before2 > 0 && !$outermost_level && # within function body $in_typedecl == 0 && @nested_indents == 0 && # neither within type declaration nor inside stmt/expr - m/^[\s@]*\}/) { # leading closing brace '}', any preceding blinded comment must not be matched + m/^[\s@]*\}\s*(\w*)/) { # leading closing brace '}', any preceding blinded comment must not be matched # TODO extend detection from single-line to potentially multi-line statement + my $next_word = $1; if ($line_opening_brace > 0 && + ($keyword_opening_brace ne "if" || + $extended_1_stmt || $next_word ne "else") && ($line_opening_brace == $line_before2 || $line_opening_brace == $line_before) && $contents_before =~ m/;/) { # there is at least one terminator ';', so there is some stmt @@ -1132,9 +1135,9 @@ sub check_nested_nonblock_indents { $line_body_start = $contents =~ m/LONG BODY/ ? 0 : $line if $line_function_start != 0; } } else { - $line_opening_brace = $line if $keyword_opening_brace =~ m/do|while|for/; + $line_opening_brace = $line if $keyword_opening_brace =~ m/if|do|while|for/; # using, not assigning, $keyword_opening_brace here because it could be on an earlier line - $line_opening_brace = $line if $keyword_opening_brace =~ m/if|else/ && $extended_1_stmt && + $line_opening_brace = $line if $keyword_opening_brace eq "else" && $extended_1_stmt && # TODO prevent false positives for if/else where braces around single-statement branches # should be avoided but only if all branches have just single statements # The following helps detecting the exception when handling multiple 'if ... else' branches: diff --git a/deps/openssl/openssl/util/perl/OpenSSL/Test/Utils.pm b/deps/openssl/openssl/util/perl/OpenSSL/Test/Utils.pm index dcff6a5c996795..34eafc4659a5df 100644 --- a/deps/openssl/openssl/util/perl/OpenSSL/Test/Utils.pm +++ b/deps/openssl/openssl/util/perl/OpenSSL/Test/Utils.pm @@ -1,4 +1,4 @@ -# Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -72,6 +72,8 @@ Returns an item from the %config hash in \$TOP/configdata.pm. =item B Return true if IPv4 / IPv6 is possible to use on the current system. +Additionally, B also checks how OpenSSL was configured, +i.e. if IPv6 was explicitly disabled with -DOPENSSL_USE_IPv6=0. =back @@ -80,6 +82,7 @@ Return true if IPv4 / IPv6 is possible to use on the current system. our %available_protocols; our %disabled; our %config; +our %target; my $configdata_loaded = 0; sub load_configdata { @@ -91,6 +94,7 @@ sub load_configdata { %available_protocols = %configdata::available_protocols; %disabled = %configdata::disabled; %config = %configdata::config; + %target = %configdata::target; }; $configdata_loaded = 1; } @@ -221,6 +225,18 @@ sub have_IPv4 { } sub have_IPv6 { + if ($have_IPv6 < 0) { + load_configdata() unless $configdata_loaded; + # If OpenSSL is configured with IPv6 explicitly disabled, no IPv6 + # related tests should be performed. In other words, pretend IPv6 + # isn't present. + $have_IPv6 = 0 + if grep { $_ eq 'OPENSSL_USE_IPV6=0' } @{$config{CPPDEFINES}}; + # Similarly, if a config target has explicitly disabled IPv6, no + # IPv6 related tests should be performed. + $have_IPv6 = 0 + if grep { $_ eq 'OPENSSL_USE_IPV6=0' } @{$target{defines}}; + } if ($have_IPv6 < 0) { $have_IPv6 = check_IP("::1"); } diff --git a/deps/openssl/openssl/util/perl/TLSProxy/Message.pm b/deps/openssl/openssl/util/perl/TLSProxy/Message.pm index 2c1bdb3837e259..193aa2554f1971 100644 --- a/deps/openssl/openssl/util/perl/TLSProxy/Message.pm +++ b/deps/openssl/openssl/util/perl/TLSProxy/Message.pm @@ -1,4 +1,4 @@ -# Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -379,6 +379,15 @@ sub create_message [@message_frag_lens] ); $message->parse(); + } elsif ($mt == MT_NEXT_PROTO) { + $message = TLSProxy::NextProto->new( + $server, + $data, + [@message_rec_list], + $startoffset, + [@message_frag_lens] + ); + $message->parse(); } else { #Unknown message type $message = TLSProxy::Message->new( diff --git a/deps/openssl/openssl/util/perl/TLSProxy/NextProto.pm b/deps/openssl/openssl/util/perl/TLSProxy/NextProto.pm new file mode 100644 index 00000000000000..0e1834754667b1 --- /dev/null +++ b/deps/openssl/openssl/util/perl/TLSProxy/NextProto.pm @@ -0,0 +1,54 @@ +# Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +use strict; + +package TLSProxy::NextProto; + +use vars '@ISA'; +push @ISA, 'TLSProxy::Message'; + +sub new +{ + my $class = shift; + my ($server, + $data, + $records, + $startoffset, + $message_frag_lens) = @_; + + my $self = $class->SUPER::new( + $server, + TLSProxy::Message::MT_NEXT_PROTO, + $data, + $records, + $startoffset, + $message_frag_lens); + + return $self; +} + +sub parse +{ + # We don't support parsing at the moment +} + +# This is supposed to reconstruct the on-the-wire message data following changes. +# For now though since we don't support parsing we just create an empty NextProto +# message - this capability is used in test_npn +sub set_message_contents +{ + my $self = shift; + my $data; + + $data = pack("C32", 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00); + $self->data($data); +} +1; diff --git a/deps/openssl/openssl/util/perl/TLSProxy/Proxy.pm b/deps/openssl/openssl/util/perl/TLSProxy/Proxy.pm index 3de10eccb94eff..7ad7c939ad5270 100644 --- a/deps/openssl/openssl/util/perl/TLSProxy/Proxy.pm +++ b/deps/openssl/openssl/util/perl/TLSProxy/Proxy.pm @@ -1,4 +1,4 @@ -# Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -23,6 +23,7 @@ use TLSProxy::CertificateRequest; use TLSProxy::CertificateVerify; use TLSProxy::ServerKeyExchange; use TLSProxy::NewSessionTicket; +use TLSProxy::NextProto; my $have_IPv6; my $IP_factory; From fce3ab686d3a0e090676dce8d071c51c6306c78d Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 30 Sep 2024 17:16:57 +0000 Subject: [PATCH 47/76] deps: update archs files for openssl-3.0.15+quic1 PR-URL: https://github.com/nodejs/node/pull/55184 Reviewed-By: Rafael Gonzaga Reviewed-By: Richard Lau Reviewed-By: Michael Dawson Reviewed-By: Luigi Pinca --- .../config/archs/BSD-x86/asm/configdata.pm | 26 +++- .../archs/BSD-x86/asm/crypto/buildinf.h | 2 +- .../BSD-x86/asm/include/openssl/opensslv.h | 10 +- .../archs/BSD-x86/asm_avx2/configdata.pm | 26 +++- .../archs/BSD-x86/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../config/archs/BSD-x86/no-asm/configdata.pm | 26 +++- .../archs/BSD-x86/no-asm/crypto/buildinf.h | 2 +- .../BSD-x86/no-asm/include/openssl/opensslv.h | 10 +- .../config/archs/BSD-x86_64/asm/configdata.pm | 26 +++- .../archs/BSD-x86_64/asm/crypto/buildinf.h | 2 +- .../BSD-x86_64/asm/include/openssl/opensslv.h | 10 +- .../archs/BSD-x86_64/asm_avx2/configdata.pm | 26 +++- .../BSD-x86_64/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/BSD-x86_64/no-asm/configdata.pm | 26 +++- .../archs/BSD-x86_64/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../config/archs/VC-WIN32/asm/configdata.pm | 28 +++- .../archs/VC-WIN32/asm/crypto/buildinf.h | 2 +- .../VC-WIN32/asm/include/openssl/opensslv.h | 10 +- .../archs/VC-WIN32/asm_avx2/configdata.pm | 28 +++- .../archs/VC-WIN32/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/VC-WIN32/no-asm/configdata.pm | 28 +++- .../archs/VC-WIN32/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/VC-WIN64-ARM/no-asm/configdata.pm | 28 +++- .../VC-WIN64-ARM/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../config/archs/VC-WIN64A/asm/configdata.pm | 28 +++- .../archs/VC-WIN64A/asm/crypto/buildinf.h | 2 +- .../VC-WIN64A/asm/include/openssl/opensslv.h | 10 +- .../archs/VC-WIN64A/asm_avx2/configdata.pm | 28 +++- .../VC-WIN64A/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/VC-WIN64A/no-asm/configdata.pm | 28 +++- .../archs/VC-WIN64A/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/aix64-gcc-as/asm/configdata.pm | 26 +++- .../aix64-gcc-as/asm/crypto/aes/aesp8-ppc.s | 143 ++++++++++++------ .../archs/aix64-gcc-as/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../archs/aix64-gcc-as/asm_avx2/configdata.pm | 26 +++- .../asm_avx2/crypto/aes/aesp8-ppc.s | 143 ++++++++++++------ .../aix64-gcc-as/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/aix64-gcc-as/no-asm/configdata.pm | 26 +++- .../aix64-gcc-as/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/darwin-i386-cc/asm/configdata.pm | 26 +++- .../darwin-i386-cc/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../darwin-i386-cc/asm_avx2/configdata.pm | 26 +++- .../darwin-i386-cc/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/darwin-i386-cc/no-asm/configdata.pm | 26 +++- .../darwin-i386-cc/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/darwin64-arm64-cc/asm/configdata.pm | 26 +++- .../darwin64-arm64-cc/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../darwin64-arm64-cc/asm_avx2/configdata.pm | 26 +++- .../asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../darwin64-arm64-cc/no-asm/configdata.pm | 26 +++- .../no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../darwin64-x86_64-cc/asm/configdata.pm | 26 +++- .../darwin64-x86_64-cc/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../darwin64-x86_64-cc/asm_avx2/configdata.pm | 26 +++- .../asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../darwin64-x86_64-cc/no-asm/configdata.pm | 26 +++- .../no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/linux-aarch64/asm/configdata.pm | 26 +++- .../archs/linux-aarch64/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../linux-aarch64/asm_avx2/configdata.pm | 26 +++- .../linux-aarch64/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/linux-aarch64/no-asm/configdata.pm | 26 +++- .../linux-aarch64/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/linux-armv4/asm/configdata.pm | 26 +++- .../archs/linux-armv4/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../archs/linux-armv4/asm_avx2/configdata.pm | 26 +++- .../linux-armv4/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/linux-armv4/no-asm/configdata.pm | 26 +++- .../linux-armv4/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../config/archs/linux-elf/asm/configdata.pm | 26 +++- .../archs/linux-elf/asm/crypto/buildinf.h | 2 +- .../linux-elf/asm/include/openssl/opensslv.h | 10 +- .../archs/linux-elf/asm_avx2/configdata.pm | 26 +++- .../linux-elf/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/linux-elf/no-asm/configdata.pm | 26 +++- .../archs/linux-elf/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/linux-ppc64le/asm/configdata.pm | 26 +++- .../linux-ppc64le/asm/crypto/aes/aesp8-ppc.s | 143 ++++++++++++------ .../archs/linux-ppc64le/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../linux-ppc64le/asm_avx2/configdata.pm | 26 +++- .../asm_avx2/crypto/aes/aesp8-ppc.s | 143 ++++++++++++------ .../linux-ppc64le/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/linux-ppc64le/no-asm/configdata.pm | 26 +++- .../linux-ppc64le/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/linux-x86_64/asm/configdata.pm | 26 +++- .../archs/linux-x86_64/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../archs/linux-x86_64/asm_avx2/configdata.pm | 26 +++- .../linux-x86_64/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/linux-x86_64/no-asm/configdata.pm | 26 +++- .../linux-x86_64/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/linux32-s390x/asm/configdata.pm | 26 +++- .../archs/linux32-s390x/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../linux32-s390x/asm_avx2/configdata.pm | 26 +++- .../linux32-s390x/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/linux32-s390x/no-asm/configdata.pm | 26 +++- .../linux32-s390x/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../linux64-loongarch64/no-asm/configdata.pm | 26 +++- .../no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/linux64-mips64/asm/configdata.pm | 26 +++- .../linux64-mips64/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../linux64-mips64/asm_avx2/configdata.pm | 26 +++- .../linux64-mips64/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/linux64-mips64/no-asm/configdata.pm | 26 +++- .../linux64-mips64/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../linux64-riscv64/no-asm/configdata.pm | 26 +++- .../linux64-riscv64/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/linux64-s390x/asm/configdata.pm | 26 +++- .../archs/linux64-s390x/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../linux64-s390x/asm_avx2/configdata.pm | 26 +++- .../linux64-s390x/asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../archs/linux64-s390x/no-asm/configdata.pm | 26 +++- .../linux64-s390x/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../archs/solaris-x86-gcc/asm/configdata.pm | 26 +++- .../solaris-x86-gcc/asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../solaris-x86-gcc/asm_avx2/configdata.pm | 26 +++- .../asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../solaris-x86-gcc/no-asm/configdata.pm | 26 +++- .../solaris-x86-gcc/no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- .../solaris64-x86_64-gcc/asm/configdata.pm | 26 +++- .../asm/crypto/buildinf.h | 2 +- .../asm/include/openssl/opensslv.h | 10 +- .../asm_avx2/configdata.pm | 26 +++- .../asm_avx2/crypto/buildinf.h | 2 +- .../asm_avx2/include/openssl/opensslv.h | 10 +- .../solaris64-x86_64-gcc/no-asm/configdata.pm | 26 +++- .../no-asm/crypto/buildinf.h | 2 +- .../no-asm/include/openssl/opensslv.h | 10 +- deps/openssl/openssl/crypto/perlasm/x86asm.pl | 4 +- deps/openssl/openssl/include/crypto/bn_conf.h | 1 + .../openssl/openssl/include/crypto/dso_conf.h | 1 + deps/openssl/openssl/include/openssl/asn1.h | 1 + deps/openssl/openssl/include/openssl/asn1t.h | 1 + deps/openssl/openssl/include/openssl/bio.h | 1 + deps/openssl/openssl/include/openssl/cmp.h | 1 + deps/openssl/openssl/include/openssl/cms.h | 1 + deps/openssl/openssl/include/openssl/conf.h | 1 + .../openssl/include/openssl/configuration.h | 1 + deps/openssl/openssl/include/openssl/crmf.h | 1 + deps/openssl/openssl/include/openssl/crypto.h | 1 + deps/openssl/openssl/include/openssl/ct.h | 1 + deps/openssl/openssl/include/openssl/err.h | 1 + deps/openssl/openssl/include/openssl/ess.h | 1 + .../openssl/openssl/include/openssl/fipskey.h | 1 + deps/openssl/openssl/include/openssl/lhash.h | 1 + deps/openssl/openssl/include/openssl/ocsp.h | 1 + .../openssl/include/openssl/opensslv.h | 1 + deps/openssl/openssl/include/openssl/pkcs12.h | 1 + deps/openssl/openssl/include/openssl/pkcs7.h | 1 + .../openssl/include/openssl/safestack.h | 1 + deps/openssl/openssl/include/openssl/srp.h | 1 + deps/openssl/openssl/include/openssl/ssl.h | 1 + deps/openssl/openssl/include/openssl/ui.h | 1 + deps/openssl/openssl/include/openssl/x509.h | 1 + .../openssl/include/openssl/x509_vfy.h | 1 + deps/openssl/openssl/include/openssl/x509v3.h | 1 + 203 files changed, 2008 insertions(+), 775 deletions(-) create mode 100644 deps/openssl/openssl/include/crypto/bn_conf.h create mode 100644 deps/openssl/openssl/include/crypto/dso_conf.h create mode 100644 deps/openssl/openssl/include/openssl/asn1.h create mode 100644 deps/openssl/openssl/include/openssl/asn1t.h create mode 100644 deps/openssl/openssl/include/openssl/bio.h create mode 100644 deps/openssl/openssl/include/openssl/cmp.h create mode 100644 deps/openssl/openssl/include/openssl/cms.h create mode 100644 deps/openssl/openssl/include/openssl/conf.h create mode 100644 deps/openssl/openssl/include/openssl/configuration.h create mode 100644 deps/openssl/openssl/include/openssl/crmf.h create mode 100644 deps/openssl/openssl/include/openssl/crypto.h create mode 100644 deps/openssl/openssl/include/openssl/ct.h create mode 100644 deps/openssl/openssl/include/openssl/err.h create mode 100644 deps/openssl/openssl/include/openssl/ess.h create mode 100644 deps/openssl/openssl/include/openssl/fipskey.h create mode 100644 deps/openssl/openssl/include/openssl/lhash.h create mode 100644 deps/openssl/openssl/include/openssl/ocsp.h create mode 100644 deps/openssl/openssl/include/openssl/opensslv.h create mode 100644 deps/openssl/openssl/include/openssl/pkcs12.h create mode 100644 deps/openssl/openssl/include/openssl/pkcs7.h create mode 100644 deps/openssl/openssl/include/openssl/safestack.h create mode 100644 deps/openssl/openssl/include/openssl/srp.h create mode 100644 deps/openssl/openssl/include/openssl/ssl.h create mode 100644 deps/openssl/openssl/include/openssl/ui.h create mode 100644 deps/openssl/openssl/include/openssl/x509.h create mode 100644 deps/openssl/openssl/include/openssl/x509_vfy.h create mode 100644 deps/openssl/openssl/include/openssl/x509v3.h diff --git a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm index bd74fe533ab88d..b4ff88112bd18d 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/asm/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -203,7 +203,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -255,11 +255,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1240,6 +1240,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7735,6 +7738,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18773,6 +18780,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20335,6 +20346,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26687,6 +26699,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h index e2dfa52caff5de..af438f4f0fa031 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Mon Aug 12 15:15:09 2024 UTC" +#define DATE "built on: Mon Sep 30 17:05:30 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm index 4500704d893270..058d8def744cbf 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -203,7 +203,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -255,11 +255,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1240,6 +1240,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7735,6 +7738,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18773,6 +18780,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20335,6 +20346,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26687,6 +26699,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h index 391cb76baefd79..fce54a74f651f5 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Mon Aug 12 15:15:22 2024 UTC" +#define DATE "built on: Mon Sep 30 17:05:44 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm index 7066667eb21b35..6b5d662fd77178 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86/no-asm/configdata.pm @@ -154,7 +154,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -202,7 +202,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -255,11 +255,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "BSD-x86", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1241,6 +1241,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7677,6 +7680,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18693,6 +18700,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20255,6 +20266,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26519,6 +26531,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h index f84df8008b215f..14d772edccc76f 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86" -#define DATE "built on: Mon Aug 12 15:15:35 2024 UTC" +#define DATE "built on: Mon Sep 30 17:05:57 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm index 537f63b89b2bea..f7cc1b97611e63 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/asm/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -203,7 +203,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -255,11 +255,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1241,6 +1241,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7741,6 +7744,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18815,6 +18822,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20377,6 +20388,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26833,6 +26845,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h index 3fd2b7152a8941..9d75e25aa5f6cd 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Mon Aug 12 15:15:46 2024 UTC" +#define DATE "built on: Mon Sep 30 17:06:08 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm index 18f9483b32ba67..a9ff7c2027b32a 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -203,7 +203,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -255,11 +255,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1241,6 +1241,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7741,6 +7744,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18815,6 +18822,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20377,6 +20388,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26833,6 +26845,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h index 0cf6c7e98f6d83..f1b735d8043953 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Mon Aug 12 15:16:02 2024 UTC" +#define DATE "built on: Mon Sep 30 17:06:24 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm index b3f186cd72ab0e..1ab302ff9a2dd9 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/configdata.pm @@ -154,7 +154,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -202,7 +202,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -255,11 +255,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "BSD-x86_64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7678,6 +7681,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18694,6 +18701,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20256,6 +20267,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26520,6 +26532,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h index 18bde84f83aea3..c2bae3d778be1d 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: BSD-x86_64" -#define DATE "built on: Mon Aug 12 15:16:17 2024 UTC" +#define DATE "built on: Mon Sep 30 17:06:40 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/BSD-x86_64/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm index 48531552b9df01..3c9cf488d332fc 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/asm/configdata.pm @@ -165,7 +165,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -216,7 +216,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -268,11 +268,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "lib", @@ -287,7 +287,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55f8cd334c08)", + "RANLIB" => "CODE(0x55c413c34420)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -1291,6 +1291,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7789,6 +7792,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18853,6 +18860,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20415,6 +20426,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26781,6 +26793,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h index 975d7809028b79..ddbc0c9135bcdf 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Mon Aug 12 15:25:26 2024 UTC" +#define DATE "built on: Mon Sep 30 17:15:56 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h index 323055548b4de8..50c2dce1470fde 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm index 8c059e49c3d77d..a9d9e2fe5751aa 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/configdata.pm @@ -165,7 +165,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -216,7 +216,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -268,11 +268,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "lib", @@ -287,7 +287,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x5627db2c44f8)", + "RANLIB" => "CODE(0x55fa4e900730)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -1291,6 +1291,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7789,6 +7792,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18853,6 +18860,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20415,6 +20426,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26781,6 +26793,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h index 984e53763cb3d4..25257dbe4cdc20 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Mon Aug 12 15:25:38 2024 UTC" +#define DATE "built on: Mon Sep 30 17:16:08 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h index 323055548b4de8..50c2dce1470fde 100644 --- a/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm index 1d57d08440d094..242b585006bf5d 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/configdata.pm @@ -163,7 +163,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -215,7 +215,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -268,11 +268,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "VC-WIN32", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "lib", @@ -287,7 +287,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55aecc68c4c0)", + "RANLIB" => "CODE(0x556017cde7e0)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -1292,6 +1292,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7731,6 +7734,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18773,6 +18780,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20335,6 +20346,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26613,6 +26625,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h index bb9cdb1e9d6a87..f3494c62b7ffb6 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Mon Aug 12 15:25:50 2024 UTC" +#define DATE "built on: Mon Sep 30 17:16:20 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h index 323055548b4de8..50c2dce1470fde 100644 --- a/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN32/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm index 96b697f52c01f4..51e48deaccd109 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/configdata.pm @@ -163,7 +163,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -213,7 +213,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -266,11 +266,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "VC-WIN64-ARM", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "lib", @@ -283,7 +283,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x557b539dde30)", + "RANLIB" => "CODE(0x563ab4010d40)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -1284,6 +1284,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7723,6 +7726,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18765,6 +18772,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20327,6 +20338,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26605,6 +26617,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h index d4143ae88a51c9..9e7f66c628b399 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: VC-WIN64-ARM" -#define DATE "built on: Mon Aug 12 15:26:01 2024 UTC" +#define DATE "built on: Mon Sep 30 17:16:31 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h index 323055548b4de8..50c2dce1470fde 100644 --- a/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64-ARM/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm index 41958ba7e56e7b..a58ae5c555f86e 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/asm/configdata.pm @@ -168,7 +168,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -219,7 +219,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -271,11 +271,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "lib", @@ -290,7 +290,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55ef171f0eb8)", + "RANLIB" => "CODE(0x5567a098ee80)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -1295,6 +1295,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7798,6 +7801,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18888,6 +18895,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20450,6 +20461,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26920,6 +26932,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h index 1ae4d1b0dc280c..af6d41b18a92c0 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Mon Aug 12 15:24:44 2024 UTC" +#define DATE "built on: Mon Sep 30 17:15:14 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h index 323055548b4de8..50c2dce1470fde 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm index d4d84c663680a4..b6476912c55ecc 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/configdata.pm @@ -168,7 +168,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -219,7 +219,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -271,11 +271,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "lib", @@ -290,7 +290,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x563fb67da2f8)", + "RANLIB" => "CODE(0x563a6722d330)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -1295,6 +1295,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7798,6 +7801,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18888,6 +18895,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20450,6 +20461,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26920,6 +26932,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h index 7279d44b0b6609..8e51d88ba4b79b 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Mon Aug 12 15:24:59 2024 UTC" +#define DATE "built on: Mon Sep 30 17:15:29 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h index 323055548b4de8..50c2dce1470fde 100644 --- a/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm index 4d005dd4b1d05c..08e8c7dc590b24 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/configdata.pm @@ -166,7 +166,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -218,7 +218,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -271,11 +271,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "VC-WIN64A", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "lib", @@ -290,7 +290,7 @@ our %target = ( "LDFLAGS" => "/nologo /debug", "MT" => "mt", "MTFLAGS" => "-nologo", - "RANLIB" => "CODE(0x55f6b0dcff20)", + "RANLIB" => "CODE(0x55f18ff2a220)", "RC" => "rc", "_conf_fname_int" => [ "Configurations/00-base-templates.conf", @@ -1296,6 +1296,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7735,6 +7738,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18777,6 +18784,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20339,6 +20350,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26617,6 +26629,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h index 53599b88e2db36..50896740e947c3 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: " -#define DATE "built on: Mon Aug 12 15:25:14 2024 UTC" +#define DATE "built on: Mon Sep 30 17:15:44 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h index 323055548b4de8..50c2dce1470fde 100644 --- a/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/VC-WIN64A/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm index c19c0c4369b0da..77e00d35a9d76f 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar -X64", @@ -1244,6 +1244,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7718,6 +7721,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18771,6 +18778,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20333,6 +20344,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26745,6 +26757,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/aes/aesp8-ppc.s b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/aes/aesp8-ppc.s index 998bc4481c4029..811f4d23d53ad6 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/aes/aesp8-ppc.s +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/aes/aesp8-ppc.s @@ -8,11 +8,12 @@ rcon: .byte 0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00 .byte 0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe Lconsts: mflr 0 bcl 20,31,$+4 mflr 6 - addi 6,6,-0x48 + addi 6,6,-0x58 mtlr 0 blr .long 0 @@ -2338,6 +2339,18 @@ _aesp8_xts_encrypt6x: li 31,0x70 or 0,0,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -2380,69 +2393,77 @@ Load_xts_enc_key: vperm 31,31,22,7 lvx 25,3,7 + + + + + + + + vperm 0,2,4,5 subi 10,10,31 vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -2468,6 +2489,8 @@ Loop_xts_enc6x: lvx 25,3,7 bc 16,0,Loop_xts_enc6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C508 @@ -2477,7 +2500,6 @@ Loop_xts_enc6x: vaddubm 8,8,8 .long 0x11ADC508 .long 0x11CEC508 - vsldoi 11,11,11,15 .long 0x11EFC508 .long 0x1210C508 @@ -2485,7 +2507,8 @@ Loop_xts_enc6x: vand 11,11,10 .long 0x10E7CD08 .long 0x118CCD08 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD08 .long 0x11CECD08 vxor 1,18,31 @@ -2496,13 +2519,13 @@ Loop_xts_enc6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D508 .long 0x118CD508 vand 11,11,10 .long 0x11ADD508 .long 0x11CED508 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD508 .long 0x1210D508 @@ -2516,7 +2539,6 @@ Loop_xts_enc6x: vaddubm 8,8,8 .long 0x10E7DD08 .long 0x118CDD08 - vsldoi 11,11,11,15 .long 0x11ADDD08 .long 0x11CEDD08 vand 11,11,10 @@ -2524,7 +2546,8 @@ Loop_xts_enc6x: .long 0x1210DD08 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E508 .long 0x118CE508 vxor 3,20,31 @@ -2533,7 +2556,6 @@ Loop_xts_enc6x: .long 0x11ADE508 .long 0x11CEE508 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE508 .long 0x1210E508 lvx 24,0,7 @@ -2541,7 +2563,8 @@ Loop_xts_enc6x: .long 0x10E7ED08 .long 0x118CED08 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED08 .long 0x11CEED08 vxor 4,21,31 @@ -2551,14 +2574,14 @@ Loop_xts_enc6x: .long 0x1210ED08 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F508 .long 0x118CF508 vand 11,11,10 .long 0x11ADF508 .long 0x11CEF508 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF508 .long 0x1210F508 vxor 5,22,31 @@ -2568,7 +2591,6 @@ Loop_xts_enc6x: .long 0x10E70509 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D09 .long 0x7C235699 .long 0x11AD1509 @@ -2581,7 +2603,10 @@ Loop_xts_enc6x: .long 0x11EF2509 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x11702D09 @@ -2614,6 +2639,8 @@ Loop_xts_enc6x: mtctr 9 beq Loop_xts_enc6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq Lxts_enc6x_zero cmpwi 5,0x20 @@ -2990,6 +3017,18 @@ _aesp8_xts_decrypt6x: li 31,0x70 or 0,0,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -3037,64 +3076,64 @@ Load_xts_dec_key: vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -3120,6 +3159,8 @@ Loop_xts_dec6x: lvx 25,3,7 bc 16,0,Loop_xts_dec6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C548 @@ -3129,7 +3170,6 @@ Loop_xts_dec6x: vaddubm 8,8,8 .long 0x11ADC548 .long 0x11CEC548 - vsldoi 11,11,11,15 .long 0x11EFC548 .long 0x1210C548 @@ -3137,7 +3177,8 @@ Loop_xts_dec6x: vand 11,11,10 .long 0x10E7CD48 .long 0x118CCD48 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD48 .long 0x11CECD48 vxor 1,18,31 @@ -3148,13 +3189,13 @@ Loop_xts_dec6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D548 .long 0x118CD548 vand 11,11,10 .long 0x11ADD548 .long 0x11CED548 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD548 .long 0x1210D548 @@ -3168,7 +3209,6 @@ Loop_xts_dec6x: vaddubm 8,8,8 .long 0x10E7DD48 .long 0x118CDD48 - vsldoi 11,11,11,15 .long 0x11ADDD48 .long 0x11CEDD48 vand 11,11,10 @@ -3176,7 +3216,8 @@ Loop_xts_dec6x: .long 0x1210DD48 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E548 .long 0x118CE548 vxor 3,20,31 @@ -3185,7 +3226,6 @@ Loop_xts_dec6x: .long 0x11ADE548 .long 0x11CEE548 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE548 .long 0x1210E548 lvx 24,0,7 @@ -3193,7 +3233,8 @@ Loop_xts_dec6x: .long 0x10E7ED48 .long 0x118CED48 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED48 .long 0x11CEED48 vxor 4,21,31 @@ -3203,14 +3244,14 @@ Loop_xts_dec6x: .long 0x1210ED48 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F548 .long 0x118CF548 vand 11,11,10 .long 0x11ADF548 .long 0x11CEF548 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF548 .long 0x1210F548 vxor 5,22,31 @@ -3220,7 +3261,6 @@ Loop_xts_dec6x: .long 0x10E70549 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D49 .long 0x7C235699 .long 0x11AD1549 @@ -3233,7 +3273,10 @@ Loop_xts_dec6x: .long 0x11EF2549 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x12102D49 .long 0x7CBD5699 @@ -3264,6 +3307,8 @@ Loop_xts_dec6x: mtctr 9 beq Loop_xts_dec6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq Lxts_dec6x_zero cmpwi 5,0x20 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h index 6db11546efcad4..99d30076120310 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Mon Aug 12 15:14:32 2024 UTC" +#define DATE "built on: Mon Sep 30 17:04:53 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm index 75c34e009c4fae..34862e4d370a0e 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar -X64", @@ -1244,6 +1244,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7718,6 +7721,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18771,6 +18778,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20333,6 +20344,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26745,6 +26757,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/aes/aesp8-ppc.s b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/aes/aesp8-ppc.s index 998bc4481c4029..811f4d23d53ad6 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/aes/aesp8-ppc.s +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/aes/aesp8-ppc.s @@ -8,11 +8,12 @@ rcon: .byte 0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00 .byte 0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c,0x0d,0x0e,0x0f,0x0c .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe Lconsts: mflr 0 bcl 20,31,$+4 mflr 6 - addi 6,6,-0x48 + addi 6,6,-0x58 mtlr 0 blr .long 0 @@ -2338,6 +2339,18 @@ _aesp8_xts_encrypt6x: li 31,0x70 or 0,0,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -2380,69 +2393,77 @@ Load_xts_enc_key: vperm 31,31,22,7 lvx 25,3,7 + + + + + + + + vperm 0,2,4,5 subi 10,10,31 vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -2468,6 +2489,8 @@ Loop_xts_enc6x: lvx 25,3,7 bc 16,0,Loop_xts_enc6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C508 @@ -2477,7 +2500,6 @@ Loop_xts_enc6x: vaddubm 8,8,8 .long 0x11ADC508 .long 0x11CEC508 - vsldoi 11,11,11,15 .long 0x11EFC508 .long 0x1210C508 @@ -2485,7 +2507,8 @@ Loop_xts_enc6x: vand 11,11,10 .long 0x10E7CD08 .long 0x118CCD08 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD08 .long 0x11CECD08 vxor 1,18,31 @@ -2496,13 +2519,13 @@ Loop_xts_enc6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D508 .long 0x118CD508 vand 11,11,10 .long 0x11ADD508 .long 0x11CED508 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD508 .long 0x1210D508 @@ -2516,7 +2539,6 @@ Loop_xts_enc6x: vaddubm 8,8,8 .long 0x10E7DD08 .long 0x118CDD08 - vsldoi 11,11,11,15 .long 0x11ADDD08 .long 0x11CEDD08 vand 11,11,10 @@ -2524,7 +2546,8 @@ Loop_xts_enc6x: .long 0x1210DD08 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E508 .long 0x118CE508 vxor 3,20,31 @@ -2533,7 +2556,6 @@ Loop_xts_enc6x: .long 0x11ADE508 .long 0x11CEE508 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE508 .long 0x1210E508 lvx 24,0,7 @@ -2541,7 +2563,8 @@ Loop_xts_enc6x: .long 0x10E7ED08 .long 0x118CED08 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED08 .long 0x11CEED08 vxor 4,21,31 @@ -2551,14 +2574,14 @@ Loop_xts_enc6x: .long 0x1210ED08 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F508 .long 0x118CF508 vand 11,11,10 .long 0x11ADF508 .long 0x11CEF508 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF508 .long 0x1210F508 vxor 5,22,31 @@ -2568,7 +2591,6 @@ Loop_xts_enc6x: .long 0x10E70509 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D09 .long 0x7C235699 .long 0x11AD1509 @@ -2581,7 +2603,10 @@ Loop_xts_enc6x: .long 0x11EF2509 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x11702D09 @@ -2614,6 +2639,8 @@ Loop_xts_enc6x: mtctr 9 beq Loop_xts_enc6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq Lxts_enc6x_zero cmpwi 5,0x20 @@ -2990,6 +3017,18 @@ _aesp8_xts_decrypt6x: li 31,0x70 or 0,0,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -3037,64 +3076,64 @@ Load_xts_dec_key: vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -3120,6 +3159,8 @@ Loop_xts_dec6x: lvx 25,3,7 bc 16,0,Loop_xts_dec6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C548 @@ -3129,7 +3170,6 @@ Loop_xts_dec6x: vaddubm 8,8,8 .long 0x11ADC548 .long 0x11CEC548 - vsldoi 11,11,11,15 .long 0x11EFC548 .long 0x1210C548 @@ -3137,7 +3177,8 @@ Loop_xts_dec6x: vand 11,11,10 .long 0x10E7CD48 .long 0x118CCD48 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD48 .long 0x11CECD48 vxor 1,18,31 @@ -3148,13 +3189,13 @@ Loop_xts_dec6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D548 .long 0x118CD548 vand 11,11,10 .long 0x11ADD548 .long 0x11CED548 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD548 .long 0x1210D548 @@ -3168,7 +3209,6 @@ Loop_xts_dec6x: vaddubm 8,8,8 .long 0x10E7DD48 .long 0x118CDD48 - vsldoi 11,11,11,15 .long 0x11ADDD48 .long 0x11CEDD48 vand 11,11,10 @@ -3176,7 +3216,8 @@ Loop_xts_dec6x: .long 0x1210DD48 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E548 .long 0x118CE548 vxor 3,20,31 @@ -3185,7 +3226,6 @@ Loop_xts_dec6x: .long 0x11ADE548 .long 0x11CEE548 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE548 .long 0x1210E548 lvx 24,0,7 @@ -3193,7 +3233,8 @@ Loop_xts_dec6x: .long 0x10E7ED48 .long 0x118CED48 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED48 .long 0x11CEED48 vxor 4,21,31 @@ -3203,14 +3244,14 @@ Loop_xts_dec6x: .long 0x1210ED48 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F548 .long 0x118CF548 vand 11,11,10 .long 0x11ADF548 .long 0x11CEF548 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF548 .long 0x1210F548 vxor 5,22,31 @@ -3220,7 +3261,6 @@ Loop_xts_dec6x: .long 0x10E70549 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D49 .long 0x7C235699 .long 0x11AD1549 @@ -3233,7 +3273,10 @@ Loop_xts_dec6x: .long 0x11EF2549 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x12102D49 .long 0x7CBD5699 @@ -3264,6 +3307,8 @@ Loop_xts_dec6x: mtctr 9 beq Loop_xts_dec6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq Lxts_dec6x_zero cmpwi 5,0x20 diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h index 7abc136642dd74..69dd90a6c66fe7 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Mon Aug 12 15:14:45 2024 UTC" +#define DATE "built on: Mon Sep 30 17:05:06 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm index 1b53e63191d23d..3012083af82f69 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/configdata.pm @@ -154,7 +154,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -205,7 +205,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "aix64-gcc-as", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar -X64", @@ -1245,6 +1245,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7681,6 +7684,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18696,6 +18703,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20258,6 +20269,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26518,6 +26530,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h index 9faae839382f3f..c1c41584528e9c 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: aix64-gcc-as" -#define DATE "built on: Mon Aug 12 15:14:57 2024 UTC" +#define DATE "built on: Mon Sep 30 17:05:19 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/aix64-gcc-as/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm index c2e265ef375b31..c48853b80e4e46 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin-i386-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7729,6 +7732,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18737,6 +18744,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20299,6 +20310,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26645,6 +26657,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h index 372b467b42a034..9e690dbea0a857 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Mon Aug 12 15:17:10 2024 UTC" +#define DATE "built on: Mon Sep 30 17:07:34 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm index e96aee4281d78f..0b7a603aa08014 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin-i386-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7729,6 +7732,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18737,6 +18744,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20299,6 +20310,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26645,6 +26657,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h index 36577b608bd2da..f0fc131a0ac265 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Mon Aug 12 15:17:23 2024 UTC" +#define DATE "built on: Mon Sep 30 17:07:47 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin-i386-cc/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm index 2e2cf808b7cb54..4eafb602153f5e 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/configdata.pm @@ -154,7 +154,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -205,7 +205,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin-i386-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1243,6 +1243,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7671,6 +7674,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18657,6 +18664,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20219,6 +20230,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26477,6 +26489,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h index 3c34241749d5ce..7c35bb03c23c0d 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin-i386-cc" -#define DATE "built on: Mon Aug 12 15:17:36 2024 UTC" +#define DATE "built on: Mon Sep 30 17:08:00 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin-i386-cc/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm index 75ca55d5b73709..877a6b8a253eed 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin64-arm64-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7702,6 +7705,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18771,6 +18778,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20333,6 +20344,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26683,6 +26695,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h index fc5ce9267f9551..53600343288552 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Mon Aug 12 15:17:47 2024 UTC" +#define DATE "built on: Mon Sep 30 17:08:11 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm index d8007796466fd1..3deb53b0966350 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin64-arm64-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7702,6 +7705,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18771,6 +18778,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20333,6 +20344,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26683,6 +26695,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h index d3bba847fb2312..74f8be4cef56d1 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Mon Aug 12 15:17:59 2024 UTC" +#define DATE "built on: Mon Sep 30 17:08:24 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm index d3a3e6a8036931..7698c6b4a8d09e 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/configdata.pm @@ -154,7 +154,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -205,7 +205,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin64-arm64-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1243,6 +1243,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7671,6 +7674,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18657,6 +18664,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20219,6 +20230,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26477,6 +26489,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h index 3cf90a4cdce3cc..16436bc0b1796c 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-arm64-cc" -#define DATE "built on: Mon Aug 12 15:18:11 2024 UTC" +#define DATE "built on: Mon Sep 30 17:08:36 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-arm64-cc/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm index 8c1a378d5ee43b..4d3767f42329f5 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin64-x86_64-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7734,6 +7737,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18778,6 +18785,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20340,6 +20351,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26790,6 +26802,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h index 6835e9f9d725b6..8c788f6d59a666 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Mon Aug 12 15:16:29 2024 UTC" +#define DATE "built on: Mon Sep 30 17:06:51 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm index 91d679086db68f..1f75fe7575c2cf 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin64-x86_64-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7734,6 +7737,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18778,6 +18785,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20340,6 +20351,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26790,6 +26802,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h index 57cd6484437255..7fc043860e91f6 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Mon Aug 12 15:16:44 2024 UTC" +#define DATE "built on: Mon Sep 30 17:07:07 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm index 723b385ffb1fb8..10e32f3d13be08 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/configdata.pm @@ -154,7 +154,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -205,7 +205,7 @@ our %config = ( ], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -258,11 +258,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "darwin64-x86_64-cc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1243,6 +1243,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7671,6 +7674,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18657,6 +18664,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20219,6 +20230,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26477,6 +26489,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h index a87d7d6f21043a..ecf1d141ca8f37 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: darwin64-x86_64-cc" -#define DATE "built on: Mon Aug 12 15:16:59 2024 UTC" +#define DATE "built on: Mon Sep 30 17:07:22 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/darwin64-x86_64-cc/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm index 54a9ae8bf3e5b2..b9637a41bbedcc 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/asm/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-aarch64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7717,6 +7720,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18815,6 +18822,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20377,6 +20388,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26729,6 +26741,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h index dd7b101e0ea8db..eba7c744efbda4 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Mon Aug 12 15:18:23 2024 UTC" +#define DATE "built on: Mon Sep 30 17:08:48 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-aarch64/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm index 444d3e94350915..988b82a67947ef 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-aarch64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7717,6 +7720,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18815,6 +18822,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20377,6 +20388,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26729,6 +26741,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h index e07d26a4335342..33cbe794886024 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Mon Aug 12 15:18:35 2024 UTC" +#define DATE "built on: Mon Sep 30 17:09:00 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-aarch64/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm index e3a9dae8c48198..9ff6e315a7f549 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-aarch64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1250,6 +1250,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7686,6 +7689,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18701,6 +18708,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20263,6 +20274,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26523,6 +26535,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h index 57cc40eaa4b00f..82407322b9655a 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-aarch64" -#define DATE "built on: Mon Aug 12 15:18:48 2024 UTC" +#define DATE "built on: Mon Sep 30 17:09:13 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-aarch64/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm index b0f54fbb35d7e8..4ac06388d755d8 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/asm/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-armv4", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7725,6 +7728,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18849,6 +18856,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20411,6 +20422,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26771,6 +26783,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h index 369dd4e4a4d148..c2f243c0696fb7 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Mon Aug 12 15:18:59 2024 UTC" +#define DATE "built on: Mon Sep 30 17:09:25 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-armv4/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm index b1a1c2776c0238..f5715110100590 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-armv4", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7725,6 +7728,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18849,6 +18856,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20411,6 +20422,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26771,6 +26783,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h index aac655f255a156..e5f76f6ad716ba 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Mon Aug 12 15:19:12 2024 UTC" +#define DATE "built on: Mon Sep 30 17:09:38 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-armv4/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm index d5332a434b6b87..2254a71143d8fd 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-armv4/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-armv4", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1250,6 +1250,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7686,6 +7689,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18701,6 +18708,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20263,6 +20274,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26523,6 +26535,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h index 80c694068890e7..9b3d97b629171d 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-armv4/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-armv4" -#define DATE "built on: Mon Aug 12 15:19:24 2024 UTC" +#define DATE "built on: Mon Sep 30 17:09:50 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-armv4/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-elf/asm/configdata.pm b/deps/openssl/config/archs/linux-elf/asm/configdata.pm index d93fd661f31835..f134e72ba600e3 100644 --- a/deps/openssl/config/archs/linux-elf/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/asm/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-elf", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1248,6 +1248,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7743,6 +7746,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18780,6 +18787,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20342,6 +20353,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26690,6 +26702,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h index dd81e6c6bf0b01..939d8f553cc2f0 100644 --- a/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Mon Aug 12 15:19:36 2024 UTC" +#define DATE "built on: Mon Sep 30 17:10:02 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-elf/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm index 442f234e5d1fbb..90aff138cbc5cd 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-elf", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1248,6 +1248,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7743,6 +7746,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18780,6 +18787,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20342,6 +20353,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26690,6 +26702,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h index 161f4740f404d2..3a655350497561 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Mon Aug 12 15:19:49 2024 UTC" +#define DATE "built on: Mon Sep 30 17:10:15 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-elf/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm index fbe13b8b0c9caa..479b266eb3e98d 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-elf/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-elf", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7685,6 +7688,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18700,6 +18707,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20262,6 +20273,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26522,6 +26534,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h index 6017e4a0c3dea6..cea8ea6ace931b 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-elf/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-elf" -#define DATE "built on: Mon Aug 12 15:20:01 2024 UTC" +#define DATE "built on: Mon Sep 30 17:10:28 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-elf/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm index d4b65aec3f053f..be8ddf1031a71c 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/asm/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-ppc64le", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7723,6 +7726,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18776,6 +18783,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20338,6 +20349,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26750,6 +26762,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/aes/aesp8-ppc.s b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/aes/aesp8-ppc.s index ae924ef9dab84b..2577338d55f518 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/aes/aesp8-ppc.s +++ b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/aes/aesp8-ppc.s @@ -9,11 +9,12 @@ rcon: .byte 0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b .byte 0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe .Lconsts: mflr 0 bcl 20,31,$+4 mflr 6 - addi 6,6,-0x48 + addi 6,6,-0x58 mtlr 0 blr .long 0 @@ -2363,6 +2364,18 @@ _aesp8_xts_encrypt6x: li 31,0x70 or 0,0,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl .Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -2405,69 +2418,77 @@ _aesp8_xts_encrypt6x: vperm 31,22,31,7 lvx 25,3,7 + + + + + + + + vperm 0,2,4,5 subi 10,10,31 vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 1,1,1,6 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 2,2,2,6 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 3,3,3,6 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 4,4,4,6 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 5,5,5,6 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -2493,6 +2514,8 @@ _aesp8_xts_encrypt6x: lvx 25,3,7 bdnz .Loop_xts_enc6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C508 @@ -2502,7 +2525,6 @@ _aesp8_xts_encrypt6x: vaddubm 8,8,8 .long 0x11ADC508 .long 0x11CEC508 - vsldoi 11,11,11,15 .long 0x11EFC508 .long 0x1210C508 @@ -2510,7 +2532,8 @@ _aesp8_xts_encrypt6x: vand 11,11,10 .long 0x10E7CD08 .long 0x118CCD08 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD08 .long 0x11CECD08 vxor 1,18,31 @@ -2521,13 +2544,13 @@ _aesp8_xts_encrypt6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D508 .long 0x118CD508 vand 11,11,10 .long 0x11ADD508 .long 0x11CED508 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD508 .long 0x1210D508 @@ -2541,7 +2564,6 @@ _aesp8_xts_encrypt6x: vaddubm 8,8,8 .long 0x10E7DD08 .long 0x118CDD08 - vsldoi 11,11,11,15 .long 0x11ADDD08 .long 0x11CEDD08 vand 11,11,10 @@ -2549,7 +2571,8 @@ _aesp8_xts_encrypt6x: .long 0x1210DD08 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E508 .long 0x118CE508 vxor 3,20,31 @@ -2558,7 +2581,6 @@ _aesp8_xts_encrypt6x: .long 0x11ADE508 .long 0x11CEE508 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE508 .long 0x1210E508 lvx 24,0,7 @@ -2566,7 +2588,8 @@ _aesp8_xts_encrypt6x: .long 0x10E7ED08 .long 0x118CED08 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED08 .long 0x11CEED08 vxor 4,21,31 @@ -2576,14 +2599,14 @@ _aesp8_xts_encrypt6x: .long 0x1210ED08 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F508 .long 0x118CF508 vand 11,11,10 .long 0x11ADF508 .long 0x11CEF508 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF508 .long 0x1210F508 vxor 5,22,31 @@ -2593,7 +2616,6 @@ _aesp8_xts_encrypt6x: .long 0x10E70509 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D09 .long 0x7C235699 .long 0x11AD1509 @@ -2606,7 +2628,10 @@ _aesp8_xts_encrypt6x: .long 0x11EF2509 vperm 2,2,2,6 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x11702D09 vperm 3,3,3,6 @@ -2639,6 +2664,8 @@ _aesp8_xts_encrypt6x: mtctr 9 beq .Loop_xts_enc6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq .Lxts_enc6x_zero cmpwi 5,0x20 @@ -3015,6 +3042,18 @@ _aesp8_xts_decrypt6x: li 31,0x70 or 0,0,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl .Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -3062,64 +3101,64 @@ _aesp8_xts_decrypt6x: vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 1,1,1,6 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 2,2,2,6 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 3,3,3,6 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 4,4,4,6 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 5,5,5,6 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -3145,6 +3184,8 @@ _aesp8_xts_decrypt6x: lvx 25,3,7 bdnz .Loop_xts_dec6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C548 @@ -3154,7 +3195,6 @@ _aesp8_xts_decrypt6x: vaddubm 8,8,8 .long 0x11ADC548 .long 0x11CEC548 - vsldoi 11,11,11,15 .long 0x11EFC548 .long 0x1210C548 @@ -3162,7 +3202,8 @@ _aesp8_xts_decrypt6x: vand 11,11,10 .long 0x10E7CD48 .long 0x118CCD48 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD48 .long 0x11CECD48 vxor 1,18,31 @@ -3173,13 +3214,13 @@ _aesp8_xts_decrypt6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D548 .long 0x118CD548 vand 11,11,10 .long 0x11ADD548 .long 0x11CED548 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD548 .long 0x1210D548 @@ -3193,7 +3234,6 @@ _aesp8_xts_decrypt6x: vaddubm 8,8,8 .long 0x10E7DD48 .long 0x118CDD48 - vsldoi 11,11,11,15 .long 0x11ADDD48 .long 0x11CEDD48 vand 11,11,10 @@ -3201,7 +3241,8 @@ _aesp8_xts_decrypt6x: .long 0x1210DD48 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E548 .long 0x118CE548 vxor 3,20,31 @@ -3210,7 +3251,6 @@ _aesp8_xts_decrypt6x: .long 0x11ADE548 .long 0x11CEE548 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE548 .long 0x1210E548 lvx 24,0,7 @@ -3218,7 +3258,8 @@ _aesp8_xts_decrypt6x: .long 0x10E7ED48 .long 0x118CED48 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED48 .long 0x11CEED48 vxor 4,21,31 @@ -3228,14 +3269,14 @@ _aesp8_xts_decrypt6x: .long 0x1210ED48 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F548 .long 0x118CF548 vand 11,11,10 .long 0x11ADF548 .long 0x11CEF548 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF548 .long 0x1210F548 vxor 5,22,31 @@ -3245,7 +3286,6 @@ _aesp8_xts_decrypt6x: .long 0x10E70549 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D49 .long 0x7C235699 .long 0x11AD1549 @@ -3258,7 +3298,10 @@ _aesp8_xts_decrypt6x: .long 0x11EF2549 vperm 2,2,2,6 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x12102D49 vperm 3,3,3,6 .long 0x7CBD5699 @@ -3289,6 +3332,8 @@ _aesp8_xts_decrypt6x: mtctr 9 beq .Loop_xts_dec6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq .Lxts_dec6x_zero cmpwi 5,0x20 diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h index e512adf58787f9..a1d53486daf67c 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Mon Aug 12 15:20:55 2024 UTC" +#define DATE "built on: Mon Sep 30 17:11:23 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm index cc6c2c779c60c1..4693b1e2ca61fc 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-ppc64le", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7723,6 +7726,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18776,6 +18783,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20338,6 +20349,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26750,6 +26762,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/aes/aesp8-ppc.s b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/aes/aesp8-ppc.s index ae924ef9dab84b..2577338d55f518 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/aes/aesp8-ppc.s +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/aes/aesp8-ppc.s @@ -9,11 +9,12 @@ rcon: .byte 0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b,0x00,0x00,0x00,0x1b .byte 0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d,0x0c,0x0f,0x0e,0x0d .byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 +.long 0x0f102132, 0x43546576, 0x8798a9ba, 0xcbdcedfe .Lconsts: mflr 0 bcl 20,31,$+4 mflr 6 - addi 6,6,-0x48 + addi 6,6,-0x58 mtlr 0 blr .long 0 @@ -2363,6 +2364,18 @@ _aesp8_xts_encrypt6x: li 31,0x70 or 0,0,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl .Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -2405,69 +2418,77 @@ _aesp8_xts_encrypt6x: vperm 31,22,31,7 lvx 25,3,7 + + + + + + + + vperm 0,2,4,5 subi 10,10,31 vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 1,1,1,6 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 2,2,2,6 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 3,3,3,6 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 4,4,4,6 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 5,5,5,6 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -2493,6 +2514,8 @@ _aesp8_xts_encrypt6x: lvx 25,3,7 bdnz .Loop_xts_enc6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C508 @@ -2502,7 +2525,6 @@ _aesp8_xts_encrypt6x: vaddubm 8,8,8 .long 0x11ADC508 .long 0x11CEC508 - vsldoi 11,11,11,15 .long 0x11EFC508 .long 0x1210C508 @@ -2510,7 +2532,8 @@ _aesp8_xts_encrypt6x: vand 11,11,10 .long 0x10E7CD08 .long 0x118CCD08 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD08 .long 0x11CECD08 vxor 1,18,31 @@ -2521,13 +2544,13 @@ _aesp8_xts_encrypt6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D508 .long 0x118CD508 vand 11,11,10 .long 0x11ADD508 .long 0x11CED508 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD508 .long 0x1210D508 @@ -2541,7 +2564,6 @@ _aesp8_xts_encrypt6x: vaddubm 8,8,8 .long 0x10E7DD08 .long 0x118CDD08 - vsldoi 11,11,11,15 .long 0x11ADDD08 .long 0x11CEDD08 vand 11,11,10 @@ -2549,7 +2571,8 @@ _aesp8_xts_encrypt6x: .long 0x1210DD08 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E508 .long 0x118CE508 vxor 3,20,31 @@ -2558,7 +2581,6 @@ _aesp8_xts_encrypt6x: .long 0x11ADE508 .long 0x11CEE508 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE508 .long 0x1210E508 lvx 24,0,7 @@ -2566,7 +2588,8 @@ _aesp8_xts_encrypt6x: .long 0x10E7ED08 .long 0x118CED08 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED08 .long 0x11CEED08 vxor 4,21,31 @@ -2576,14 +2599,14 @@ _aesp8_xts_encrypt6x: .long 0x1210ED08 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F508 .long 0x118CF508 vand 11,11,10 .long 0x11ADF508 .long 0x11CEF508 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF508 .long 0x1210F508 vxor 5,22,31 @@ -2593,7 +2616,6 @@ _aesp8_xts_encrypt6x: .long 0x10E70509 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D09 .long 0x7C235699 .long 0x11AD1509 @@ -2606,7 +2628,10 @@ _aesp8_xts_encrypt6x: .long 0x11EF2509 vperm 2,2,2,6 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x11702D09 vperm 3,3,3,6 @@ -2639,6 +2664,8 @@ _aesp8_xts_encrypt6x: mtctr 9 beq .Loop_xts_enc6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq .Lxts_enc6x_zero cmpwi 5,0x20 @@ -3015,6 +3042,18 @@ _aesp8_xts_decrypt6x: li 31,0x70 or 0,0,0 + + xxlor 2, 32+10, 32+10 + vsldoi 10,11,10,1 + xxlor 1, 32+10, 32+10 + + + mr 31, 6 + bl .Lconsts + lxvw4x 0, 28, 6 + mr 6, 31 + li 31,0x70 + subi 9,9,3 lvx 23,0,6 @@ -3062,64 +3101,64 @@ _aesp8_xts_decrypt6x: vxor 17,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vand 11,11,10 vxor 7,0,17 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x7C235699 vxor 18,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 1,1,1,6 vand 11,11,10 vxor 12,1,18 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x7C5A5699 andi. 31,5,15 vxor 19,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 2,2,2,6 vand 11,11,10 vxor 13,2,19 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x7C7B5699 sub 5,5,31 vxor 20,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 3,3,3,6 vand 11,11,10 vxor 14,3,20 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x7C9C5699 subi 5,5,0x60 vxor 21,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 4,4,4,6 vand 11,11,10 vxor 15,4,21 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x7CBD5699 addi 10,10,0x60 vxor 22,8,23 vsrab 11,8,9 vaddubm 8,8,8 - vsldoi 11,11,11,15 vperm 5,5,5,6 vand 11,11,10 vxor 16,5,22 - vxor 8,8,11 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 vxor 31,31,23 mtctr 9 @@ -3145,6 +3184,8 @@ _aesp8_xts_decrypt6x: lvx 25,3,7 bdnz .Loop_xts_dec6x + xxlor 32+10, 1, 1 + subic 5,5,96 vxor 0,17,31 .long 0x10E7C548 @@ -3154,7 +3195,6 @@ _aesp8_xts_decrypt6x: vaddubm 8,8,8 .long 0x11ADC548 .long 0x11CEC548 - vsldoi 11,11,11,15 .long 0x11EFC548 .long 0x1210C548 @@ -3162,7 +3202,8 @@ _aesp8_xts_decrypt6x: vand 11,11,10 .long 0x10E7CD48 .long 0x118CCD48 - vxor 8,8,11 + xxlor 32+1, 0, 0 + vpermxor 8, 8, 11, 1 .long 0x11ADCD48 .long 0x11CECD48 vxor 1,18,31 @@ -3173,13 +3214,13 @@ _aesp8_xts_decrypt6x: and 0,0,5 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7D548 .long 0x118CD548 vand 11,11,10 .long 0x11ADD548 .long 0x11CED548 - vxor 8,8,11 + xxlor 32+2, 0, 0 + vpermxor 8, 8, 11, 2 .long 0x11EFD548 .long 0x1210D548 @@ -3193,7 +3234,6 @@ _aesp8_xts_decrypt6x: vaddubm 8,8,8 .long 0x10E7DD48 .long 0x118CDD48 - vsldoi 11,11,11,15 .long 0x11ADDD48 .long 0x11CEDD48 vand 11,11,10 @@ -3201,7 +3241,8 @@ _aesp8_xts_decrypt6x: .long 0x1210DD48 addi 7,1,64+15 - vxor 8,8,11 + xxlor 32+3, 0, 0 + vpermxor 8, 8, 11, 3 .long 0x10E7E548 .long 0x118CE548 vxor 3,20,31 @@ -3210,7 +3251,6 @@ _aesp8_xts_decrypt6x: .long 0x11ADE548 .long 0x11CEE548 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x11EFE548 .long 0x1210E548 lvx 24,0,7 @@ -3218,7 +3258,8 @@ _aesp8_xts_decrypt6x: .long 0x10E7ED48 .long 0x118CED48 - vxor 8,8,11 + xxlor 32+4, 0, 0 + vpermxor 8, 8, 11, 4 .long 0x11ADED48 .long 0x11CEED48 vxor 4,21,31 @@ -3228,14 +3269,14 @@ _aesp8_xts_decrypt6x: .long 0x1210ED48 lvx 25,3,7 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x10E7F548 .long 0x118CF548 vand 11,11,10 .long 0x11ADF548 .long 0x11CEF548 - vxor 8,8,11 + xxlor 32+5, 0, 0 + vpermxor 8, 8, 11, 5 .long 0x11EFF548 .long 0x1210F548 vxor 5,22,31 @@ -3245,7 +3286,6 @@ _aesp8_xts_decrypt6x: .long 0x10E70549 .long 0x7C005699 vaddubm 8,8,8 - vsldoi 11,11,11,15 .long 0x118C0D49 .long 0x7C235699 .long 0x11AD1549 @@ -3258,7 +3298,10 @@ _aesp8_xts_decrypt6x: .long 0x11EF2549 vperm 2,2,2,6 .long 0x7C9C5699 - vxor 8,8,11 + xxlor 10, 32+0, 32+0 + xxlor 32+0, 0, 0 + vpermxor 8, 8, 11, 0 + xxlor 32+0, 10, 10 .long 0x12102D49 vperm 3,3,3,6 .long 0x7CBD5699 @@ -3289,6 +3332,8 @@ _aesp8_xts_decrypt6x: mtctr 9 beq .Loop_xts_dec6x + xxlor 32+10, 2, 2 + addic. 5,5,0x60 beq .Lxts_dec6x_zero cmpwi 5,0x20 diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h index 4f4dc6fa8b30d2..62ae301563cef0 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Mon Aug 12 15:21:08 2024 UTC" +#define DATE "built on: Mon Sep 30 17:11:36 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-ppc64le/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm index 79282d5c61cda2..4ea931962056d2 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-ppc64le", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1250,6 +1250,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7686,6 +7689,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18701,6 +18708,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20263,6 +20274,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26523,6 +26535,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h index 26fa10c9d19d67..813a758dbb8463 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-ppc64le" -#define DATE "built on: Mon Aug 12 15:21:20 2024 UTC" +#define DATE "built on: Mon Sep 30 17:11:49 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-ppc64le/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm index 09098da78633d9..0a7527c74f608d 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/asm/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-x86_64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1250,6 +1250,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7750,6 +7753,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18823,6 +18830,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20385,6 +20396,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26837,6 +26849,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h index 5ca7822b1b5002..56ff0a9f0ced76 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Mon Aug 12 15:20:13 2024 UTC" +#define DATE "built on: Mon Sep 30 17:10:40 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm index a8c50321ab4ba3..8de9a59e88a749 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-x86_64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1250,6 +1250,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7750,6 +7753,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18823,6 +18830,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20385,6 +20396,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26837,6 +26849,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h index 59fd96e5058423..75117a04bb1d92 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Mon Aug 12 15:20:29 2024 UTC" +#define DATE "built on: Mon Sep 30 17:10:56 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-x86_64/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm index af5f4059f6e3ba..d520c3b33b87ae 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux-x86_64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1251,6 +1251,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7687,6 +7690,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18702,6 +18709,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20264,6 +20275,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26524,6 +26536,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h index eda960565b337d..8062b751473863 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux-x86_64" -#define DATE "built on: Mon Aug 12 15:20:44 2024 UTC" +#define DATE "built on: Mon Sep 30 17:11:12 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux-x86_64/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm index 1d1c1d0e4b934c..25d7152a50338e 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/asm/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux32-s390x", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7732,6 +7735,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18817,6 +18824,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20379,6 +20390,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26703,6 +26715,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h index f5df25cb4cb1f3..a1815adcb47351 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Mon Aug 12 15:21:32 2024 UTC" +#define DATE "built on: Mon Sep 30 17:12:01 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux32-s390x/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm index 1826724ade9a2e..bfdea24dd5e5ae 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux32-s390x", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7732,6 +7735,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18817,6 +18824,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20379,6 +20390,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26703,6 +26715,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h index f57b956982be1f..e6b3e00f5c752f 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Mon Aug 12 15:21:45 2024 UTC" +#define DATE "built on: Mon Sep 30 17:12:14 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm index 95ad14db676a0b..36af8f54cc6c9f 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux32-s390x", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1250,6 +1250,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7686,6 +7689,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18701,6 +18708,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20263,6 +20274,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26523,6 +26535,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h index b75bbda1e72943..2e191c2e4841b1 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux32-s390x" -#define DATE "built on: Mon Aug 12 15:21:57 2024 UTC" +#define DATE "built on: Mon Sep 30 17:12:26 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux32-s390x/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm index 890978d550a77a..4ba193f4bf39c7 100644 --- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux64-loongarch64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7685,6 +7688,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18700,6 +18707,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20262,6 +20273,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26522,6 +26534,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h index fb9edda90a6762..8b0b4c9de878bc 100644 --- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-loongarch64" -#define DATE "built on: Mon Aug 12 15:26:24 2024 UTC" +#define DATE "built on: Mon Sep 30 17:16:54 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-loongarch64/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm index 926cdad81a2e67..751dc619e087fa 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/asm/configdata.pm @@ -162,7 +162,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -210,7 +210,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -262,11 +262,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux64-mips64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1253,6 +1253,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7711,6 +7714,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18774,6 +18781,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20336,6 +20347,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26632,6 +26644,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h index 61c17930b0a6fa..5bcb19f0038b15 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Mon Aug 12 15:22:47 2024 UTC" +#define DATE "built on: Mon Sep 30 17:13:16 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-mips64/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm index 1880aeaa378b87..c861a6aa75de33 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/configdata.pm @@ -162,7 +162,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -210,7 +210,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -262,11 +262,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux64-mips64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1253,6 +1253,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7711,6 +7714,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18774,6 +18781,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20336,6 +20347,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26632,6 +26644,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h index c2dd68bde5eabb..9969f7fbe4894a 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Mon Aug 12 15:22:59 2024 UTC" +#define DATE "built on: Mon Sep 30 17:13:28 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-mips64/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm index 4d6c45afe7aa43..0aa374d19d56cb 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux64-mips64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1251,6 +1251,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7687,6 +7690,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18702,6 +18709,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20264,6 +20275,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26524,6 +26536,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h index bd9acb72f86a32..135ced7215d174 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-mips64" -#define DATE "built on: Mon Aug 12 15:23:10 2024 UTC" +#define DATE "built on: Mon Sep 30 17:13:40 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-mips64/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm index 3ff8a0d5fa4107..ce13ea66723d9f 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux64-riscv64", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1249,6 +1249,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7685,6 +7688,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18700,6 +18707,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20262,6 +20273,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26522,6 +26534,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h index 81a0f72f206329..f5d77a05993d1a 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-riscv64" -#define DATE "built on: Mon Aug 12 15:26:12 2024 UTC" +#define DATE "built on: Mon Sep 30 17:16:42 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-riscv64/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm index 32dca4b0aa87dd..df0ce5c951f633 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/asm/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux64-s390x", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1250,6 +1250,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7733,6 +7736,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18828,6 +18835,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20390,6 +20401,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26714,6 +26726,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h index f93f817ef660f4..d7922fa6537630 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Mon Aug 12 15:22:09 2024 UTC" +#define DATE "built on: Mon Sep 30 17:12:38 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-s390x/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm index 2f375a7b86cfdb..b106196b63ae5c 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/configdata.pm @@ -159,7 +159,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -207,7 +207,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux64-s390x", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1250,6 +1250,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7733,6 +7736,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18828,6 +18835,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20390,6 +20401,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26714,6 +26726,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h index 52f2c1f27c72d6..2c9106ca3ca56c 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Mon Aug 12 15:22:22 2024 UTC" +#define DATE "built on: Mon Sep 30 17:12:51 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-s390x/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm index 2226b31924a3f9..1462cc41faebed 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/configdata.pm @@ -157,7 +157,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -206,7 +206,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -259,11 +259,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned char", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "linux64-s390x", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1251,6 +1251,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7687,6 +7690,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18702,6 +18709,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20264,6 +20275,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26524,6 +26536,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h index 7fa30369421928..65fd9d291b3df3 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: linux64-s390x" -#define DATE "built on: Mon Aug 12 15:22:35 2024 UTC" +#define DATE "built on: Mon Sep 30 17:13:04 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/linux64-s390x/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm index 775a1a3772b750..15732afc0605eb 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -204,7 +204,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -256,11 +256,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "solaris-x86-gcc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1241,6 +1241,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7736,6 +7739,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18773,6 +18780,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20335,6 +20346,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26683,6 +26695,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h index b79c0bf03b1c76..fcd321c88356d4 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Mon Aug 12 15:23:22 2024 UTC" +#define DATE "built on: Mon Sep 30 17:13:52 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm index 2098389be987be..67a1475d1ddbe5 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -204,7 +204,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -256,11 +256,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "solaris-x86-gcc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1241,6 +1241,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7736,6 +7739,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18773,6 +18780,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20335,6 +20346,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26683,6 +26695,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h index 752e367258d750..6e6e28436ecdbc 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Mon Aug 12 15:23:35 2024 UTC" +#define DATE "built on: Mon Sep 30 17:14:05 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm index db60b15c602bfb..6210b1d2a3a71f 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/configdata.pm @@ -154,7 +154,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -203,7 +203,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -256,11 +256,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "solaris-x86-gcc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7678,6 +7681,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18693,6 +18700,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20255,6 +20266,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26515,6 +26527,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h index 780ad5ecd48a23..4c9d7e40a9a713 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris-x86-gcc" -#define DATE "built on: Mon Aug 12 15:23:48 2024 UTC" +#define DATE "built on: Mon Sep 30 17:14:18 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris-x86-gcc/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm index b5a596430157f0..b0a159b0cc7022 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -204,7 +204,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -256,11 +256,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "solaris64-x86_64-gcc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7742,6 +7745,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18815,6 +18822,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20377,6 +20388,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26829,6 +26841,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h index 3c5ed027a46d71..d4ff152f987c38 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Mon Aug 12 15:24:00 2024 UTC" +#define DATE "built on: Mon Sep 30 17:14:30 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm index 655580f7b99e3e..fe2ce273e36091 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/configdata.pm @@ -156,7 +156,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -204,7 +204,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -256,11 +256,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "solaris64-x86_64-gcc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1242,6 +1242,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7742,6 +7745,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18815,6 +18822,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20377,6 +20388,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26829,6 +26841,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h index 038bca0f10e17c..8d026664c28a3b 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Mon Aug 12 15:24:16 2024 UTC" +#define DATE "built on: Mon Sep 30 17:14:46 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/asm_avx2/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm index e6b0d7a334d048..350e5fdcdfdef2 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/configdata.pm @@ -154,7 +154,7 @@ our %config = ( ], "dynamic_engines" => "0", "ex_libs" => [], - "full_version" => "3.0.14+quic", + "full_version" => "3.0.15+quic", "includes" => [], "lflags" => [], "lib_defines" => [ @@ -203,7 +203,7 @@ our %config = ( "openssl_sys_defines" => [], "openssldir" => "", "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", - "patch" => "14", + "patch" => "15", "perl_archname" => "x86_64-linux-gnu-thread-multi", "perl_cmd" => "/usr/bin/perl", "perl_version" => "5.34.0", @@ -256,11 +256,11 @@ our %config = ( "prerelease" => "", "processor" => "", "rc4_int" => "unsigned int", - "release_date" => "4 Jun 2024", + "release_date" => "3 Sep 2024", "shlib_version" => "81.3", "sourcedir" => ".", "target" => "solaris64-x86_64-gcc", - "version" => "3.0.14" + "version" => "3.0.15" ); our %target = ( "AR" => "ar", @@ -1243,6 +1243,9 @@ our %unified_info = ( "test/errtest" => { "noinst" => "1" }, + "test/evp_byname_test" => { + "noinst" => "1" + }, "test/evp_extra_test" => { "noinst" => "1" }, @@ -7679,6 +7682,10 @@ our %unified_info = ( "libcrypto", "test/libtestutil.a" ], + "test/evp_byname_test" => [ + "libcrypto", + "test/libtestutil.a" + ], "test/evp_extra_test" => [ "libcrypto.a", "providers/libcommon.a", @@ -18694,6 +18701,10 @@ our %unified_info = ( "include", "apps/include" ], + "test/evp_byname_test" => [ + "include", + "apps/include" + ], "test/evp_extra_test" => [ "include", "apps/include", @@ -20256,6 +20267,7 @@ our %unified_info = ( "test/endecoder_legacy_test", "test/enginetest", "test/errtest", + "test/evp_byname_test", "test/evp_extra_test", "test/evp_extra_test2", "test/evp_fetch_prov_test", @@ -26516,6 +26528,12 @@ our %unified_info = ( "test/errtest-bin-errtest.o" => [ "test/errtest.c" ], + "test/evp_byname_test" => [ + "test/evp_byname_test-bin-evp_byname_test.o" + ], + "test/evp_byname_test-bin-evp_byname_test.o" => [ + "test/evp_byname_test.c" + ], "test/evp_extra_test" => [ "providers/evp_extra_test-bin-legacyprov.o", "test/evp_extra_test-bin-evp_extra_test.o" diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h index a203f27710e539..f750c629cde372 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/crypto/buildinf.h @@ -11,7 +11,7 @@ */ #define PLATFORM "platform: solaris64-x86_64-gcc" -#define DATE "built on: Mon Aug 12 15:24:31 2024 UTC" +#define DATE "built on: Mon Sep 30 17:15:02 2024 UTC" /* * Generate compiler_flags as an array of individual characters. This is a diff --git a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h index 9c5f4b475a5eaa..819878c21bf304 100644 --- a/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h +++ b/deps/openssl/config/archs/solaris64-x86_64-gcc/no-asm/include/openssl/opensslv.h @@ -29,7 +29,7 @@ extern "C" { */ # define OPENSSL_VERSION_MAJOR 3 # define OPENSSL_VERSION_MINOR 0 -# define OPENSSL_VERSION_PATCH 14 +# define OPENSSL_VERSION_PATCH 15 /* * Additional version information @@ -74,21 +74,21 @@ extern "C" { * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and * OPENSSL_VERSION_BUILD_METADATA_STR appended. */ -# define OPENSSL_VERSION_STR "3.0.14" -# define OPENSSL_FULL_VERSION_STR "3.0.14+quic" +# define OPENSSL_VERSION_STR "3.0.15" +# define OPENSSL_FULL_VERSION_STR "3.0.15+quic" /* * SECTION 3: ADDITIONAL METADATA * * These strings are defined separately to allow them to be parsable. */ -# define OPENSSL_RELEASE_DATE "4 Jun 2024" +# define OPENSSL_RELEASE_DATE "3 Sep 2024" /* * SECTION 4: BACKWARD COMPATIBILITY */ -# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.14+quic 4 Jun 2024" +# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.15+quic 3 Sep 2024" /* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ # ifdef OPENSSL_VERSION_PRE_RELEASE diff --git a/deps/openssl/openssl/crypto/perlasm/x86asm.pl b/deps/openssl/openssl/crypto/perlasm/x86asm.pl index 8dcde9eacaa3d1..98a7159a5f131c 100644 --- a/deps/openssl/openssl/crypto/perlasm/x86asm.pl +++ b/deps/openssl/openssl/crypto/perlasm/x86asm.pl @@ -174,9 +174,9 @@ sub ::vprotd sub ::endbranch { - &::generic("#ifdef __CET__\n"); + &::generic("%ifdef __CET__\n"); &::data_byte(0xf3,0x0f,0x1e,0xfb); - &::generic("#endif\n"); + &::generic("%endif\n"); } # label management diff --git a/deps/openssl/openssl/include/crypto/bn_conf.h b/deps/openssl/openssl/include/crypto/bn_conf.h new file mode 100644 index 00000000000000..79400c6472a49c --- /dev/null +++ b/deps/openssl/openssl/include/crypto/bn_conf.h @@ -0,0 +1 @@ +#include "../../../config/bn_conf.h" diff --git a/deps/openssl/openssl/include/crypto/dso_conf.h b/deps/openssl/openssl/include/crypto/dso_conf.h new file mode 100644 index 00000000000000..e7f2afa9872320 --- /dev/null +++ b/deps/openssl/openssl/include/crypto/dso_conf.h @@ -0,0 +1 @@ +#include "../../../config/dso_conf.h" diff --git a/deps/openssl/openssl/include/openssl/asn1.h b/deps/openssl/openssl/include/openssl/asn1.h new file mode 100644 index 00000000000000..cd9fc7cc706c37 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/asn1.h @@ -0,0 +1 @@ +#include "../../../config/asn1.h" diff --git a/deps/openssl/openssl/include/openssl/asn1t.h b/deps/openssl/openssl/include/openssl/asn1t.h new file mode 100644 index 00000000000000..6ff4f574949bbd --- /dev/null +++ b/deps/openssl/openssl/include/openssl/asn1t.h @@ -0,0 +1 @@ +#include "../../../config/asn1t.h" diff --git a/deps/openssl/openssl/include/openssl/bio.h b/deps/openssl/openssl/include/openssl/bio.h new file mode 100644 index 00000000000000..dcece3cb4d6ebf --- /dev/null +++ b/deps/openssl/openssl/include/openssl/bio.h @@ -0,0 +1 @@ +#include "../../../config/bio.h" diff --git a/deps/openssl/openssl/include/openssl/cmp.h b/deps/openssl/openssl/include/openssl/cmp.h new file mode 100644 index 00000000000000..7c8a6dc96fc360 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/cmp.h @@ -0,0 +1 @@ +#include "../../../config/cmp.h" diff --git a/deps/openssl/openssl/include/openssl/cms.h b/deps/openssl/openssl/include/openssl/cms.h new file mode 100644 index 00000000000000..33a00775c9fa76 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/cms.h @@ -0,0 +1 @@ +#include "../../../config/cms.h" diff --git a/deps/openssl/openssl/include/openssl/conf.h b/deps/openssl/openssl/include/openssl/conf.h new file mode 100644 index 00000000000000..2712886cafcd78 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/conf.h @@ -0,0 +1 @@ +#include "../../../config/conf.h" diff --git a/deps/openssl/openssl/include/openssl/configuration.h b/deps/openssl/openssl/include/openssl/configuration.h new file mode 100644 index 00000000000000..8ffad996047c5e --- /dev/null +++ b/deps/openssl/openssl/include/openssl/configuration.h @@ -0,0 +1 @@ +#include "../../../config/configuration.h" diff --git a/deps/openssl/openssl/include/openssl/crmf.h b/deps/openssl/openssl/include/openssl/crmf.h new file mode 100644 index 00000000000000..4103852ecb21c2 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/crmf.h @@ -0,0 +1 @@ +#include "../../../config/crmf.h" diff --git a/deps/openssl/openssl/include/openssl/crypto.h b/deps/openssl/openssl/include/openssl/crypto.h new file mode 100644 index 00000000000000..6d0e701ebd3c19 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/crypto.h @@ -0,0 +1 @@ +#include "../../../config/crypto.h" diff --git a/deps/openssl/openssl/include/openssl/ct.h b/deps/openssl/openssl/include/openssl/ct.h new file mode 100644 index 00000000000000..7ebb84387135be --- /dev/null +++ b/deps/openssl/openssl/include/openssl/ct.h @@ -0,0 +1 @@ +#include "../../../config/ct.h" diff --git a/deps/openssl/openssl/include/openssl/err.h b/deps/openssl/openssl/include/openssl/err.h new file mode 100644 index 00000000000000..bf482070474781 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/err.h @@ -0,0 +1 @@ +#include "../../../config/err.h" diff --git a/deps/openssl/openssl/include/openssl/ess.h b/deps/openssl/openssl/include/openssl/ess.h new file mode 100644 index 00000000000000..64cc016225119f --- /dev/null +++ b/deps/openssl/openssl/include/openssl/ess.h @@ -0,0 +1 @@ +#include "../../../config/ess.h" diff --git a/deps/openssl/openssl/include/openssl/fipskey.h b/deps/openssl/openssl/include/openssl/fipskey.h new file mode 100644 index 00000000000000..c012013d98d4e8 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/fipskey.h @@ -0,0 +1 @@ +#include "../../../config/fipskey.h" diff --git a/deps/openssl/openssl/include/openssl/lhash.h b/deps/openssl/openssl/include/openssl/lhash.h new file mode 100644 index 00000000000000..8d824f5cfe6274 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/lhash.h @@ -0,0 +1 @@ +#include "../../../config/lhash.h" diff --git a/deps/openssl/openssl/include/openssl/ocsp.h b/deps/openssl/openssl/include/openssl/ocsp.h new file mode 100644 index 00000000000000..5b13afedf36bb6 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/ocsp.h @@ -0,0 +1 @@ +#include "../../../config/ocsp.h" diff --git a/deps/openssl/openssl/include/openssl/opensslv.h b/deps/openssl/openssl/include/openssl/opensslv.h new file mode 100644 index 00000000000000..078cfba40fbe73 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/opensslv.h @@ -0,0 +1 @@ +#include "../../../config/opensslv.h" diff --git a/deps/openssl/openssl/include/openssl/pkcs12.h b/deps/openssl/openssl/include/openssl/pkcs12.h new file mode 100644 index 00000000000000..2d7e2c08e99175 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/pkcs12.h @@ -0,0 +1 @@ +#include "../../../config/pkcs12.h" diff --git a/deps/openssl/openssl/include/openssl/pkcs7.h b/deps/openssl/openssl/include/openssl/pkcs7.h new file mode 100644 index 00000000000000..b553f9d0f053b0 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/pkcs7.h @@ -0,0 +1 @@ +#include "../../../config/pkcs7.h" diff --git a/deps/openssl/openssl/include/openssl/safestack.h b/deps/openssl/openssl/include/openssl/safestack.h new file mode 100644 index 00000000000000..989eafb33023b9 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/safestack.h @@ -0,0 +1 @@ +#include "../../../config/safestack.h" diff --git a/deps/openssl/openssl/include/openssl/srp.h b/deps/openssl/openssl/include/openssl/srp.h new file mode 100644 index 00000000000000..9df42dad4c3127 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/srp.h @@ -0,0 +1 @@ +#include "../../../config/srp.h" diff --git a/deps/openssl/openssl/include/openssl/ssl.h b/deps/openssl/openssl/include/openssl/ssl.h new file mode 100644 index 00000000000000..eb74ca98a9759a --- /dev/null +++ b/deps/openssl/openssl/include/openssl/ssl.h @@ -0,0 +1 @@ +#include "../../../config/ssl.h" diff --git a/deps/openssl/openssl/include/openssl/ui.h b/deps/openssl/openssl/include/openssl/ui.h new file mode 100644 index 00000000000000..f5edb766b4fc6c --- /dev/null +++ b/deps/openssl/openssl/include/openssl/ui.h @@ -0,0 +1 @@ +#include "../../../config/ui.h" diff --git a/deps/openssl/openssl/include/openssl/x509.h b/deps/openssl/openssl/include/openssl/x509.h new file mode 100644 index 00000000000000..ed28bd68cb2474 --- /dev/null +++ b/deps/openssl/openssl/include/openssl/x509.h @@ -0,0 +1 @@ +#include "../../../config/x509.h" diff --git a/deps/openssl/openssl/include/openssl/x509_vfy.h b/deps/openssl/openssl/include/openssl/x509_vfy.h new file mode 100644 index 00000000000000..9270a3ee09750a --- /dev/null +++ b/deps/openssl/openssl/include/openssl/x509_vfy.h @@ -0,0 +1 @@ +#include "../../../config/x509_vfy.h" diff --git a/deps/openssl/openssl/include/openssl/x509v3.h b/deps/openssl/openssl/include/openssl/x509v3.h new file mode 100644 index 00000000000000..5629ae9a3a90af --- /dev/null +++ b/deps/openssl/openssl/include/openssl/x509v3.h @@ -0,0 +1 @@ +#include "../../../config/x509v3.h" From ac37e554a5fa9e5844f2bc8db7eabee7a5d8b1ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Sat, 12 Oct 2024 13:21:09 +0200 Subject: [PATCH 48/76] esm: mark import attributes and JSON module as stable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two proposals reached stage 4 at the October 2024 meeting. PR-URL: https://github.com/nodejs/node/pull/55333 Reviewed-By: Yagiz Nizipli Reviewed-By: Antoine du Hamel Reviewed-By: Marco Ippolito Reviewed-By: Michaël Zasso Reviewed-By: Matteo Collina Reviewed-By: Luigi Pinca --- doc/api/esm.md | 20 +++++++++----------- lib/internal/modules/esm/translators.js | 3 +-- test/es-module/test-esm-json.mjs | 4 ++-- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/doc/api/esm.md b/doc/api/esm.md index 5e6b643036d6a5..582e5a4eea471b 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -251,14 +251,10 @@ changes: description: Switch from Import Assertions to Import Attributes. --> -> Stability: 1.1 - Active development - -> This feature was previously named "Import assertions", and using the `assert` -> keyword instead of `with`. Any uses in code of the prior `assert` keyword -> should be updated to use `with` instead. +> Stability: 2 - Stable -The [Import Attributes proposal][] adds an inline syntax for module import -statements to pass on more information alongside the module specifier. +[Import attributes][Import Attributes MDN] are an inline syntax for module +import statements to pass on more information alongside the module specifier. ```js import fooData from './foo.json' with { type: 'json' }; @@ -267,13 +263,15 @@ const { default: barData } = await import('./bar.json', { with: { type: 'json' } }); ``` -Node.js supports the following `type` values, for which the attribute is -mandatory: +Node.js only supports the `type` attribute, for which it supports the following +values: | Attribute `type` | Needed for | | ---------------- | ---------------- | | `'json'` | [JSON modules][] | +The `type: 'json'` attribute is mandatory when importing JSON modules. + ## Builtin modules [Core modules][] provide named exports of their public API. A @@ -552,7 +550,7 @@ separate cache. ## JSON modules -> Stability: 1 - Experimental +> Stability: 2 - Stable JSON files can be referenced by `import`: @@ -1090,7 +1088,7 @@ success! [Dynamic `import()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import [ES Module Integration Proposal for WebAssembly]: https://github.com/webassembly/esm-integration [Import Attributes]: #import-attributes -[Import Attributes proposal]: https://github.com/tc39/proposal-import-attributes +[Import Attributes MDN]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import/with [JSON modules]: #json-modules [Module customization hooks]: module.md#customization-hooks [Node.js Module Resolution And Loading Algorithm]: #resolution-algorithm-specification diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js index 2c5efa61a6936c..27e49a7ea1e503 100644 --- a/lib/internal/modules/esm/translators.js +++ b/lib/internal/modules/esm/translators.js @@ -304,8 +304,7 @@ translators.set('builtin', async function builtinStrategy(url) { }); // Strategy for loading a JSON file -translators.set('json', async function jsonStrategy(url, source) { - emitExperimentalWarning('Importing JSON modules'); +translators.set('json', function jsonStrategy(url, source) { assertBufferSource(source, true, 'load'); debug(`Loading JSONModule ${url}`); const pathname = StringPrototypeStartsWith(url, 'file:') ? diff --git a/test/es-module/test-esm-json.mjs b/test/es-module/test-esm-json.mjs index 422a8f717594ab..91018378872de7 100644 --- a/test/es-module/test-esm-json.mjs +++ b/test/es-module/test-esm-json.mjs @@ -14,12 +14,12 @@ describe('ESM: importing JSON', () => { assert.strictEqual(secret.ofLife, 42); }); - it('should print an experimental warning', async () => { + it('should not print an experimental warning', async () => { const { code, signal, stderr } = await spawnPromisified(execPath, [ fixtures.path('/es-modules/json-modules.mjs'), ]); - assert.match(stderr, /ExperimentalWarning: Importing JSON modules/); + assert.strictEqual(stderr, ''); assert.strictEqual(code, 0); assert.strictEqual(signal, null); }); From f56cfe776bcabd0fe34632f8c34896a36d1afeb8 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 16 Jun 2024 00:28:06 +0000 Subject: [PATCH 49/76] deps: update acorn to 8.12.1 PR-URL: https://github.com/nodejs/node/pull/53465 Reviewed-By: Marco Ippolito Reviewed-By: Chemi Atlow Reviewed-By: Rafael Gonzaga Reviewed-By: Luigi Pinca Reviewed-By: James M Snell Reviewed-By: Michael Dawson --- deps/acorn/acorn/CHANGELOG.md | 30 ++++++++ deps/acorn/acorn/README.md | 11 ++- deps/acorn/acorn/dist/acorn.d.mts | 17 ++--- deps/acorn/acorn/dist/acorn.d.ts | 17 ++--- deps/acorn/acorn/dist/acorn.js | 121 +++++++++++++++++++++++------- deps/acorn/acorn/dist/acorn.mjs | 121 +++++++++++++++++++++++------- deps/acorn/acorn/package.json | 6 +- src/acorn_version.h | 2 +- 8 files changed, 239 insertions(+), 86 deletions(-) diff --git a/deps/acorn/acorn/CHANGELOG.md b/deps/acorn/acorn/CHANGELOG.md index eb848a58b8a091..c404a235c5eef4 100644 --- a/deps/acorn/acorn/CHANGELOG.md +++ b/deps/acorn/acorn/CHANGELOG.md @@ -1,3 +1,33 @@ +## 8.12.1 (2024-07-03) + +### Bug fixes + +Fix a regression that caused Acorn to no longer run on Node versions <8.10. + +## 8.12.0 (2024-06-14) + +### New features + +Support ES2025 duplicate capture group names in regular expressions. + +### Bug fixes + +Include `VariableDeclarator` in the `AnyNode` type so that walker objects can refer to it without getting a type error. + +Properly raise a parse error for invalid `for`/`of` statements using `async` as binding name. + +Properly recognize \"use strict\" when preceded by a string with an escaped newline. + +Mark the `Parser` constructor as protected, not private, so plugins can extend it without type errors. + +Fix a bug where some invalid `delete` expressions were let through when the operand was parenthesized and `preserveParens` was enabled. + +Properly normalize line endings in raw strings of invalid template tokens. + +Properly track line numbers for escaped newlines in strings. + +Fix a bug that broke line number accounting after a template literal with invalid escape sequences. + ## 8.11.3 (2023-12-29) ### Bug fixes diff --git a/deps/acorn/acorn/README.md b/deps/acorn/acorn/README.md index cfc51b384a3e2b..f7ff9662419308 100644 --- a/deps/acorn/acorn/README.md +++ b/deps/acorn/acorn/README.md @@ -50,12 +50,11 @@ Options are provided by in a second argument, which should be an object containing any of these fields (only `ecmaVersion` is required): -- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be - either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 (2019), - 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"` (the - latest the library supports). This influences support for strict - mode, the set of reserved words, and support for new syntax - features. +- **ecmaVersion**: Indicates the ECMAScript version to parse. Can be a + number, either in year (`2022`) or plain version number (`6`) form, + or `"latest"` (the latest the library supports). This influences + support for strict mode, the set of reserved words, and support for + new syntax features. **NOTE**: Only 'stage 4' (finalized) ECMAScript features are being implemented by Acorn. Other proposed new features must be diff --git a/deps/acorn/acorn/dist/acorn.d.mts b/deps/acorn/acorn/dist/acorn.d.mts index 6ad58121195c96..cd204b1c50db94 100644 --- a/deps/acorn/acorn/dist/acorn.d.mts +++ b/deps/acorn/acorn/dist/acorn.d.mts @@ -562,7 +562,7 @@ export type ModuleDeclaration = | ExportDefaultDeclaration | ExportAllDeclaration -export type AnyNode = Statement | Expression | Declaration | ModuleDeclaration | Literal | Program | SwitchCase | CatchClause | Property | Super | SpreadElement | TemplateElement | AssignmentProperty | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | ClassBody | MethodDefinition | MetaProperty | ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier | AnonymousFunctionDeclaration | AnonymousClassDeclaration | PropertyDefinition | PrivateIdentifier | StaticBlock +export type AnyNode = Statement | Expression | Declaration | ModuleDeclaration | Literal | Program | SwitchCase | CatchClause | Property | Super | SpreadElement | TemplateElement | AssignmentProperty | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | ClassBody | MethodDefinition | MetaProperty | ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier | AnonymousFunctionDeclaration | AnonymousClassDeclaration | PropertyDefinition | PrivateIdentifier | StaticBlock | VariableDeclarator export function parse(input: string, options: Options): Program @@ -573,16 +573,15 @@ export function tokenizer(input: string, options: Options): { [Symbol.iterator](): Iterator } -export type ecmaVersion = 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | "latest" +export type ecmaVersion = 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | "latest" export interface Options { /** - * `ecmaVersion` indicates the ECMAScript version to parse. Must be - * either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 - * (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"` - * (the latest version the library supports). This influences - * support for strict mode, the set of reserved words, and support - * for new syntax features. + * `ecmaVersion` indicates the ECMAScript version to parse. Can be a + * number, either in year (`2022`) or plain version number (`6`) form, + * or `"latest"` (the latest the library supports). This influences + * support for strict mode, the set of reserved words, and support for + * new syntax features. */ ecmaVersion: ecmaVersion @@ -733,7 +732,7 @@ export class Parser { options: Options input: string - private constructor(options: Options, input: string, startPos?: number) + protected constructor(options: Options, input: string, startPos?: number) parse(): Program static parse(input: string, options: Options): Program diff --git a/deps/acorn/acorn/dist/acorn.d.ts b/deps/acorn/acorn/dist/acorn.d.ts index 6ad58121195c96..cd204b1c50db94 100644 --- a/deps/acorn/acorn/dist/acorn.d.ts +++ b/deps/acorn/acorn/dist/acorn.d.ts @@ -562,7 +562,7 @@ export type ModuleDeclaration = | ExportDefaultDeclaration | ExportAllDeclaration -export type AnyNode = Statement | Expression | Declaration | ModuleDeclaration | Literal | Program | SwitchCase | CatchClause | Property | Super | SpreadElement | TemplateElement | AssignmentProperty | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | ClassBody | MethodDefinition | MetaProperty | ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier | AnonymousFunctionDeclaration | AnonymousClassDeclaration | PropertyDefinition | PrivateIdentifier | StaticBlock +export type AnyNode = Statement | Expression | Declaration | ModuleDeclaration | Literal | Program | SwitchCase | CatchClause | Property | Super | SpreadElement | TemplateElement | AssignmentProperty | ObjectPattern | ArrayPattern | RestElement | AssignmentPattern | ClassBody | MethodDefinition | MetaProperty | ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier | ExportSpecifier | AnonymousFunctionDeclaration | AnonymousClassDeclaration | PropertyDefinition | PrivateIdentifier | StaticBlock | VariableDeclarator export function parse(input: string, options: Options): Program @@ -573,16 +573,15 @@ export function tokenizer(input: string, options: Options): { [Symbol.iterator](): Iterator } -export type ecmaVersion = 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | "latest" +export type ecmaVersion = 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | "latest" export interface Options { /** - * `ecmaVersion` indicates the ECMAScript version to parse. Must be - * either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 - * (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"` - * (the latest version the library supports). This influences - * support for strict mode, the set of reserved words, and support - * for new syntax features. + * `ecmaVersion` indicates the ECMAScript version to parse. Can be a + * number, either in year (`2022`) or plain version number (`6`) form, + * or `"latest"` (the latest the library supports). This influences + * support for strict mode, the set of reserved words, and support for + * new syntax features. */ ecmaVersion: ecmaVersion @@ -733,7 +732,7 @@ export class Parser { options: Options input: string - private constructor(options: Options, input: string, startPos?: number) + protected constructor(options: Options, input: string, startPos?: number) parse(): Program static parse(input: string, options: Options): Program diff --git a/deps/acorn/acorn/dist/acorn.js b/deps/acorn/acorn/dist/acorn.js index 3a6a3a2aeed54c..68bf2a714e294d 100644 --- a/deps/acorn/acorn/dist/acorn.js +++ b/deps/acorn/acorn/dist/acorn.js @@ -667,7 +667,7 @@ // ## Parser utilities - var literal = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/; + var literal = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/; pp$9.strictDirective = function(start) { if (this.options.ecmaVersion < 5) { return false } for (;;) { @@ -853,7 +853,7 @@ // Statement) is allowed here. If context is not empty then only a Statement // is allowed. However, `let [` is an explicit negative lookahead for // ExpressionStatement, so special-case it first. - if (nextCh === 91 || nextCh === 92) { return true } // '[', '/' + if (nextCh === 91 || nextCh === 92) { return true } // '[', '\' if (context) { return false } if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral @@ -1046,13 +1046,19 @@ return this.parseFor(node, init$1) } var startsWithLet = this.isContextual("let"), isForOf = false; + var containsEsc = this.containsEsc; var refDestructuringErrors = new DestructuringErrors; - var init = this.parseExpression(awaitAt > -1 ? "await" : true, refDestructuringErrors); + var initPos = this.start; + var init = awaitAt > -1 + ? this.parseExprSubscripts(refDestructuringErrors, "await") + : this.parseExpression(true, refDestructuringErrors); if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { - if (this.options.ecmaVersion >= 9) { - if (this.type === types$1._in) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - } else { node.await = awaitAt > -1; } + if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt) + if (this.type === types$1._in) { this.unexpected(awaitAt); } + node.await = true; + } else if (isForOf && this.options.ecmaVersion >= 8) { + if (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async") { this.unexpected(); } + else if (this.options.ecmaVersion >= 9) { node.await = false; } } if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } this.toAssignable(init, false, refDestructuringErrors); @@ -2665,8 +2671,7 @@ node.argument = this.parseMaybeUnary(null, true, update, forInit); this.checkExpressionErrors(refDestructuringErrors, true); if (update) { this.checkLValSimple(node.argument); } - else if (this.strict && node.operator === "delete" && - node.argument.type === "Identifier") + else if (this.strict && node.operator === "delete" && isLocalVariableAccess(node.argument)) { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } else if (node.operator === "delete" && isPrivateFieldAccess(node.argument)) { this.raiseRecoverable(node.start, "Private fields can not be deleted"); } @@ -2701,10 +2706,18 @@ } }; + function isLocalVariableAccess(node) { + return ( + node.type === "Identifier" || + node.type === "ParenthesizedExpression" && isLocalVariableAccess(node.expression) + ) + } + function isPrivateFieldAccess(node) { return ( node.type === "MemberExpression" && node.property.type === "PrivateIdentifier" || - node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) + node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) || + node.type === "ParenthesizedExpression" && isPrivateFieldAccess(node.expression) ) } @@ -3131,7 +3144,7 @@ this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); } elem.value = { - raw: this.value, + raw: this.value.replace(/\r\n?/g, "\n"), cooked: null }; } else { @@ -3806,6 +3819,30 @@ var pp$1 = Parser.prototype; + // Track disjunction structure to determine whether a duplicate + // capture group name is allowed because it is in a separate branch. + var BranchID = function BranchID(parent, base) { + // Parent disjunction branch + this.parent = parent; + // Identifies this set of sibling branches + this.base = base || this; + }; + + BranchID.prototype.separatedFrom = function separatedFrom (alt) { + // A branch is separate from another branch if they or any of + // their parents are siblings in a given disjunction + for (var self = this; self; self = self.parent) { + for (var other = alt; other; other = other.parent) { + if (self.base === other.base && self !== other) { return true } + } + } + return false + }; + + BranchID.prototype.sibling = function sibling () { + return new BranchID(this.parent, this.base) + }; + var RegExpValidationState = function RegExpValidationState(parser) { this.parser = parser; this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""); @@ -3822,8 +3859,9 @@ this.lastAssertionIsQuantifiable = false; this.numCapturingParens = 0; this.maxBackReference = 0; - this.groupNames = []; + this.groupNames = Object.create(null); this.backReferenceNames = []; + this.branchID = null; }; RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { @@ -3955,6 +3993,11 @@ } }; + function hasProp(obj) { + for (var _ in obj) { return true } + return false + } + /** * Validate the pattern part of a given RegExpLiteral. * @@ -3969,7 +4012,7 @@ // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* // exception if _P_ did not conform to the grammar, if any elements of _P_ // were not matched by the parse, or if any Early Error conditions exist. - if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) { + if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) { state.switchN = true; this.regexp_pattern(state); } @@ -3983,8 +4026,9 @@ state.lastAssertionIsQuantifiable = false; state.numCapturingParens = 0; state.maxBackReference = 0; - state.groupNames.length = 0; + state.groupNames = Object.create(null); state.backReferenceNames.length = 0; + state.branchID = null; this.regexp_disjunction(state); @@ -4003,7 +4047,7 @@ for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { var name = list[i]; - if (state.groupNames.indexOf(name) === -1) { + if (!state.groupNames[name]) { state.raise("Invalid named capture referenced"); } } @@ -4011,10 +4055,14 @@ // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction pp$1.regexp_disjunction = function(state) { + var trackDisjunction = this.options.ecmaVersion >= 16; + if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); } this.regexp_alternative(state); while (state.eat(0x7C /* | */)) { + if (trackDisjunction) { state.branchID = state.branchID.sibling(); } this.regexp_alternative(state); } + if (trackDisjunction) { state.branchID = state.branchID.parent; } // Make the same message as V8. if (this.regexp_eatQuantifier(state, true)) { @@ -4027,8 +4075,7 @@ // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative pp$1.regexp_alternative = function(state) { - while (state.pos < state.source.length && this.regexp_eatTerm(state)) - { } + while (state.pos < state.source.length && this.regexp_eatTerm(state)) {} }; // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term @@ -4266,14 +4313,26 @@ // `?` GroupName pp$1.regexp_groupSpecifier = function(state) { if (state.eat(0x3F /* ? */)) { - if (this.regexp_eatGroupName(state)) { - if (state.groupNames.indexOf(state.lastStringValue) !== -1) { + if (!this.regexp_eatGroupName(state)) { state.raise("Invalid group"); } + var trackDisjunction = this.options.ecmaVersion >= 16; + var known = state.groupNames[state.lastStringValue]; + if (known) { + if (trackDisjunction) { + for (var i = 0, list = known; i < list.length; i += 1) { + var altID = list[i]; + + if (!altID.separatedFrom(state.branchID)) + { state.raise("Duplicate capture group name"); } + } + } else { state.raise("Duplicate capture group name"); } - state.groupNames.push(state.lastStringValue); - return } - state.raise("Invalid group"); + if (trackDisjunction) { + (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID); + } else { + state.groupNames[state.lastStringValue] = true; + } } }; @@ -5778,15 +5837,18 @@ break case "$": - if (this.input[this.pos + 1] !== "{") { - break - } - - // falls through + if (this.input[this.pos + 1] !== "{") { break } + // fall through case "`": return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos)) - // no default + case "\r": + if (this.input[this.pos + 1] === "\n") { ++this.pos; } + // fall through + case "\n": case "\u2028": case "\u2029": + ++this.curLine; + this.lineStart = this.pos + 1; + break } } this.raise(this.start, "Unterminated template"); @@ -5849,6 +5911,7 @@ if (isNewLine(ch)) { // Unicode new line characters after \ get removed from output in both // template literals and strings + if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } return "" } return String.fromCharCode(ch) @@ -5927,7 +5990,7 @@ // [walk]: util/walk.js - var version = "8.11.3"; + var version = "8.12.1"; Parser.acorn = { Parser: Parser, diff --git a/deps/acorn/acorn/dist/acorn.mjs b/deps/acorn/acorn/dist/acorn.mjs index d1f81ef48511a4..3fd7cb30c67b0e 100644 --- a/deps/acorn/acorn/dist/acorn.mjs +++ b/deps/acorn/acorn/dist/acorn.mjs @@ -661,7 +661,7 @@ var pp$9 = Parser.prototype; // ## Parser utilities -var literal = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/; +var literal = /^(?:'((?:\\[^]|[^'\\])*?)'|"((?:\\[^]|[^"\\])*?)")/; pp$9.strictDirective = function(start) { if (this.options.ecmaVersion < 5) { return false } for (;;) { @@ -847,7 +847,7 @@ pp$8.isLet = function(context) { // Statement) is allowed here. If context is not empty then only a Statement // is allowed. However, `let [` is an explicit negative lookahead for // ExpressionStatement, so special-case it first. - if (nextCh === 91 || nextCh === 92) { return true } // '[', '/' + if (nextCh === 91 || nextCh === 92) { return true } // '[', '\' if (context) { return false } if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral @@ -1040,13 +1040,19 @@ pp$8.parseForStatement = function(node) { return this.parseFor(node, init$1) } var startsWithLet = this.isContextual("let"), isForOf = false; + var containsEsc = this.containsEsc; var refDestructuringErrors = new DestructuringErrors; - var init = this.parseExpression(awaitAt > -1 ? "await" : true, refDestructuringErrors); + var initPos = this.start; + var init = awaitAt > -1 + ? this.parseExprSubscripts(refDestructuringErrors, "await") + : this.parseExpression(true, refDestructuringErrors); if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { - if (this.options.ecmaVersion >= 9) { - if (this.type === types$1._in) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - } else { node.await = awaitAt > -1; } + if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt) + if (this.type === types$1._in) { this.unexpected(awaitAt); } + node.await = true; + } else if (isForOf && this.options.ecmaVersion >= 8) { + if (init.start === initPos && !containsEsc && init.type === "Identifier" && init.name === "async") { this.unexpected(); } + else if (this.options.ecmaVersion >= 9) { node.await = false; } } if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } this.toAssignable(init, false, refDestructuringErrors); @@ -2659,8 +2665,7 @@ pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forIni node.argument = this.parseMaybeUnary(null, true, update, forInit); this.checkExpressionErrors(refDestructuringErrors, true); if (update) { this.checkLValSimple(node.argument); } - else if (this.strict && node.operator === "delete" && - node.argument.type === "Identifier") + else if (this.strict && node.operator === "delete" && isLocalVariableAccess(node.argument)) { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } else if (node.operator === "delete" && isPrivateFieldAccess(node.argument)) { this.raiseRecoverable(node.start, "Private fields can not be deleted"); } @@ -2695,10 +2700,18 @@ pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forIni } }; +function isLocalVariableAccess(node) { + return ( + node.type === "Identifier" || + node.type === "ParenthesizedExpression" && isLocalVariableAccess(node.expression) + ) +} + function isPrivateFieldAccess(node) { return ( node.type === "MemberExpression" && node.property.type === "PrivateIdentifier" || - node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) + node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) || + node.type === "ParenthesizedExpression" && isPrivateFieldAccess(node.expression) ) } @@ -3125,7 +3138,7 @@ pp$5.parseTemplateElement = function(ref) { this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); } elem.value = { - raw: this.value, + raw: this.value.replace(/\r\n?/g, "\n"), cooked: null }; } else { @@ -3800,6 +3813,30 @@ for (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) { var pp$1 = Parser.prototype; +// Track disjunction structure to determine whether a duplicate +// capture group name is allowed because it is in a separate branch. +var BranchID = function BranchID(parent, base) { + // Parent disjunction branch + this.parent = parent; + // Identifies this set of sibling branches + this.base = base || this; +}; + +BranchID.prototype.separatedFrom = function separatedFrom (alt) { + // A branch is separate from another branch if they or any of + // their parents are siblings in a given disjunction + for (var self = this; self; self = self.parent) { + for (var other = alt; other; other = other.parent) { + if (self.base === other.base && self !== other) { return true } + } + } + return false +}; + +BranchID.prototype.sibling = function sibling () { + return new BranchID(this.parent, this.base) +}; + var RegExpValidationState = function RegExpValidationState(parser) { this.parser = parser; this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""); @@ -3816,8 +3853,9 @@ var RegExpValidationState = function RegExpValidationState(parser) { this.lastAssertionIsQuantifiable = false; this.numCapturingParens = 0; this.maxBackReference = 0; - this.groupNames = []; + this.groupNames = Object.create(null); this.backReferenceNames = []; + this.branchID = null; }; RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { @@ -3949,6 +3987,11 @@ pp$1.validateRegExpFlags = function(state) { } }; +function hasProp(obj) { + for (var _ in obj) { return true } + return false +} + /** * Validate the pattern part of a given RegExpLiteral. * @@ -3963,7 +4006,7 @@ pp$1.validateRegExpPattern = function(state) { // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* // exception if _P_ did not conform to the grammar, if any elements of _P_ // were not matched by the parse, or if any Early Error conditions exist. - if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) { + if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) { state.switchN = true; this.regexp_pattern(state); } @@ -3977,8 +4020,9 @@ pp$1.regexp_pattern = function(state) { state.lastAssertionIsQuantifiable = false; state.numCapturingParens = 0; state.maxBackReference = 0; - state.groupNames.length = 0; + state.groupNames = Object.create(null); state.backReferenceNames.length = 0; + state.branchID = null; this.regexp_disjunction(state); @@ -3997,7 +4041,7 @@ pp$1.regexp_pattern = function(state) { for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { var name = list[i]; - if (state.groupNames.indexOf(name) === -1) { + if (!state.groupNames[name]) { state.raise("Invalid named capture referenced"); } } @@ -4005,10 +4049,14 @@ pp$1.regexp_pattern = function(state) { // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction pp$1.regexp_disjunction = function(state) { + var trackDisjunction = this.options.ecmaVersion >= 16; + if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); } this.regexp_alternative(state); while (state.eat(0x7C /* | */)) { + if (trackDisjunction) { state.branchID = state.branchID.sibling(); } this.regexp_alternative(state); } + if (trackDisjunction) { state.branchID = state.branchID.parent; } // Make the same message as V8. if (this.regexp_eatQuantifier(state, true)) { @@ -4021,8 +4069,7 @@ pp$1.regexp_disjunction = function(state) { // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative pp$1.regexp_alternative = function(state) { - while (state.pos < state.source.length && this.regexp_eatTerm(state)) - { } + while (state.pos < state.source.length && this.regexp_eatTerm(state)) {} }; // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term @@ -4260,14 +4307,26 @@ pp$1.regexp_eatExtendedPatternCharacter = function(state) { // `?` GroupName pp$1.regexp_groupSpecifier = function(state) { if (state.eat(0x3F /* ? */)) { - if (this.regexp_eatGroupName(state)) { - if (state.groupNames.indexOf(state.lastStringValue) !== -1) { + if (!this.regexp_eatGroupName(state)) { state.raise("Invalid group"); } + var trackDisjunction = this.options.ecmaVersion >= 16; + var known = state.groupNames[state.lastStringValue]; + if (known) { + if (trackDisjunction) { + for (var i = 0, list = known; i < list.length; i += 1) { + var altID = list[i]; + + if (!altID.separatedFrom(state.branchID)) + { state.raise("Duplicate capture group name"); } + } + } else { state.raise("Duplicate capture group name"); } - state.groupNames.push(state.lastStringValue); - return } - state.raise("Invalid group"); + if (trackDisjunction) { + (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID); + } else { + state.groupNames[state.lastStringValue] = true; + } } }; @@ -5772,15 +5831,18 @@ pp.readInvalidTemplateToken = function() { break case "$": - if (this.input[this.pos + 1] !== "{") { - break - } - - // falls through + if (this.input[this.pos + 1] !== "{") { break } + // fall through case "`": return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos)) - // no default + case "\r": + if (this.input[this.pos + 1] === "\n") { ++this.pos; } + // fall through + case "\n": case "\u2028": case "\u2029": + ++this.curLine; + this.lineStart = this.pos + 1; + break } } this.raise(this.start, "Unterminated template"); @@ -5843,6 +5905,7 @@ pp.readEscapedChar = function(inTemplate) { if (isNewLine(ch)) { // Unicode new line characters after \ get removed from output in both // template literals and strings + if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; } return "" } return String.fromCharCode(ch) @@ -5921,7 +5984,7 @@ pp.readWord = function() { // [walk]: util/walk.js -var version = "8.11.3"; +var version = "8.12.1"; Parser.acorn = { Parser: Parser, diff --git a/deps/acorn/acorn/package.json b/deps/acorn/acorn/package.json index 1b8dc76afc3cf5..355692a301ea5d 100644 --- a/deps/acorn/acorn/package.json +++ b/deps/acorn/acorn/package.json @@ -16,7 +16,7 @@ ], "./package.json": "./package.json" }, - "version": "8.11.3", + "version": "8.12.1", "engines": { "node": ">=0.4.0" }, @@ -38,13 +38,13 @@ ], "repository": { "type": "git", - "url": "https://github.com/acornjs/acorn.git" + "url": "git+https://github.com/acornjs/acorn.git" }, "license": "MIT", "scripts": { "prepare": "cd ..; npm run build:main" }, "bin": { - "acorn": "./bin/acorn" + "acorn": "bin/acorn" } } diff --git a/src/acorn_version.h b/src/acorn_version.h index 1c7253be9312f3..09a2eab3ac8d30 100644 --- a/src/acorn_version.h +++ b/src/acorn_version.h @@ -2,5 +2,5 @@ // Refer to tools/update-acorn.sh #ifndef SRC_ACORN_VERSION_H_ #define SRC_ACORN_VERSION_H_ -#define ACORN_VERSION "8.11.3" +#define ACORN_VERSION "8.12.1" #endif // SRC_ACORN_VERSION_H_ From 50a9456f1e030808b275cdd7983095556825ee17 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Tue, 18 Jun 2024 03:51:27 +0300 Subject: [PATCH 50/76] deps: update acorn-walk to 8.3.3 PR-URL: https://github.com/nodejs/node/pull/53466 Reviewed-By: Moshe Atlow Reviewed-By: Chemi Atlow Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga Reviewed-By: Luigi Pinca --- deps/acorn/acorn-walk/CHANGELOG.md | 12 ++++++++++++ deps/acorn/acorn-walk/package.json | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/deps/acorn/acorn-walk/CHANGELOG.md b/deps/acorn/acorn-walk/CHANGELOG.md index 0b4eea8a95d3ed..909a546e0410ba 100644 --- a/deps/acorn/acorn-walk/CHANGELOG.md +++ b/deps/acorn/acorn-walk/CHANGELOG.md @@ -1,3 +1,15 @@ +## 8.3.3 (2024-01-11) + +### Bug fixes + +Make acorn a dependency because acorn-walk uses the types from that package. + +## 8.3.2 (2024-01-11) + +### Bug fixes + +Add missing type for `findNodeBefore`. + ## 8.3.1 (2023-12-06) ### Bug fixes diff --git a/deps/acorn/acorn-walk/package.json b/deps/acorn/acorn-walk/package.json index 9d3b7e5248fb83..9d96d36e06fc22 100644 --- a/deps/acorn/acorn-walk/package.json +++ b/deps/acorn/acorn-walk/package.json @@ -16,10 +16,13 @@ ], "./package.json": "./package.json" }, - "version": "8.3.2", + "version": "8.3.3", "engines": { "node": ">=0.4.0" }, + "dependencies": { + "acorn": "^8.11.0" + }, "maintainers": [ { "name": "Marijn Haverbeke", From 55b3c8a41f11796b5b60dc8290cee4dee859df90 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Tue, 24 Sep 2024 16:05:48 +0200 Subject: [PATCH 51/76] deps: update acorn-walk to 8.3.4 PR-URL: https://github.com/nodejs/node/pull/54950 Reviewed-By: Luigi Pinca Reviewed-By: Michael Dawson Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga --- deps/acorn/acorn-walk/CHANGELOG.md | 6 ++++++ deps/acorn/acorn-walk/dist/walk.js | 12 +++--------- deps/acorn/acorn-walk/dist/walk.mjs | 12 +++--------- deps/acorn/acorn-walk/package.json | 2 +- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/deps/acorn/acorn-walk/CHANGELOG.md b/deps/acorn/acorn-walk/CHANGELOG.md index 909a546e0410ba..7aeae8fd5c8622 100644 --- a/deps/acorn/acorn-walk/CHANGELOG.md +++ b/deps/acorn/acorn-walk/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.3.4 (2024-09-09) + +### Bug fixes + +Walk SwitchCase nodes as separate nodes. + ## 8.3.3 (2024-01-11) ### Bug fixes diff --git a/deps/acorn/acorn-walk/dist/walk.js b/deps/acorn/acorn-walk/dist/walk.js index 580df6413725f8..40b7aa1b078a18 100644 --- a/deps/acorn/acorn-walk/dist/walk.js +++ b/deps/acorn/acorn-walk/dist/walk.js @@ -215,16 +215,10 @@ }; base.SwitchStatement = function (node, st, c) { c(node.discriminant, st, "Expression"); - for (var i$1 = 0, list$1 = node.cases; i$1 < list$1.length; i$1 += 1) { - var cs = list$1[i$1]; + for (var i = 0, list = node.cases; i < list.length; i += 1) { + var cs = list[i]; - if (cs.test) { c(cs.test, st, "Expression"); } - for (var i = 0, list = cs.consequent; i < list.length; i += 1) - { - var cons = list[i]; - - c(cons, st, "Statement"); - } + c(cs, st); } }; base.SwitchCase = function (node, st, c) { diff --git a/deps/acorn/acorn-walk/dist/walk.mjs b/deps/acorn/acorn-walk/dist/walk.mjs index 19eebc0e70f598..c475ababc7ac30 100644 --- a/deps/acorn/acorn-walk/dist/walk.mjs +++ b/deps/acorn/acorn-walk/dist/walk.mjs @@ -209,16 +209,10 @@ base.WithStatement = function (node, st, c) { }; base.SwitchStatement = function (node, st, c) { c(node.discriminant, st, "Expression"); - for (var i$1 = 0, list$1 = node.cases; i$1 < list$1.length; i$1 += 1) { - var cs = list$1[i$1]; + for (var i = 0, list = node.cases; i < list.length; i += 1) { + var cs = list[i]; - if (cs.test) { c(cs.test, st, "Expression"); } - for (var i = 0, list = cs.consequent; i < list.length; i += 1) - { - var cons = list[i]; - - c(cons, st, "Statement"); - } + c(cs, st); } }; base.SwitchCase = function (node, st, c) { diff --git a/deps/acorn/acorn-walk/package.json b/deps/acorn/acorn-walk/package.json index 9d96d36e06fc22..133059576956d8 100644 --- a/deps/acorn/acorn-walk/package.json +++ b/deps/acorn/acorn-walk/package.json @@ -16,7 +16,7 @@ ], "./package.json": "./package.json" }, - "version": "8.3.3", + "version": "8.3.4", "engines": { "node": ">=0.4.0" }, From d577321877b2d2ccfed4b3f200306d0c11b1be38 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 28 Oct 2024 21:36:48 -0400 Subject: [PATCH 52/76] deps: update acorn to 8.13.0 PR-URL: https://github.com/nodejs/node/pull/55558 Reviewed-By: Luigi Pinca Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga --- deps/acorn/acorn/CHANGELOG.md | 6 ++++++ deps/acorn/acorn/dist/acorn.js | 10 +++++----- deps/acorn/acorn/dist/acorn.mjs | 10 +++++----- deps/acorn/acorn/package.json | 2 +- src/acorn_version.h | 2 +- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/deps/acorn/acorn/CHANGELOG.md b/deps/acorn/acorn/CHANGELOG.md index c404a235c5eef4..1e090161fffa80 100644 --- a/deps/acorn/acorn/CHANGELOG.md +++ b/deps/acorn/acorn/CHANGELOG.md @@ -1,3 +1,9 @@ +## 8.13.0 (2024-10-16) + +### New features + +Upgrade to Unicode 16.0. + ## 8.12.1 (2024-07-03) ### Bug fixes diff --git a/deps/acorn/acorn/dist/acorn.js b/deps/acorn/acorn/dist/acorn.js index 68bf2a714e294d..7cd26fa36b5caa 100644 --- a/deps/acorn/acorn/dist/acorn.js +++ b/deps/acorn/acorn/dist/acorn.js @@ -5,16 +5,16 @@ })(this, (function (exports) { 'use strict'; // This file was generated. Do not modify manually! - var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; + var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; // This file was generated. Do not modify manually! - var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; + var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; // This file was generated. Do not modify manually! - var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; + var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; // This file was generated. Do not modify manually! - var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; + var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; // These are a run-length and offset encoded representation of the // >0xffff code points that are a valid part of identifiers. The @@ -5990,7 +5990,7 @@ // [walk]: util/walk.js - var version = "8.12.1"; + var version = "8.13.0"; Parser.acorn = { Parser: Parser, diff --git a/deps/acorn/acorn/dist/acorn.mjs b/deps/acorn/acorn/dist/acorn.mjs index 3fd7cb30c67b0e..21b860f275a064 100644 --- a/deps/acorn/acorn/dist/acorn.mjs +++ b/deps/acorn/acorn/dist/acorn.mjs @@ -1,14 +1,14 @@ // This file was generated. Do not modify manually! -var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; // This file was generated. Do not modify manually! -var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; // This file was generated. Do not modify manually! -var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; // This file was generated. Do not modify manually! -var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; // These are a run-length and offset encoded representation of the // >0xffff code points that are a valid part of identifiers. The @@ -5984,7 +5984,7 @@ pp.readWord = function() { // [walk]: util/walk.js -var version = "8.12.1"; +var version = "8.13.0"; Parser.acorn = { Parser: Parser, diff --git a/deps/acorn/acorn/package.json b/deps/acorn/acorn/package.json index 355692a301ea5d..3396013bbbf060 100644 --- a/deps/acorn/acorn/package.json +++ b/deps/acorn/acorn/package.json @@ -16,7 +16,7 @@ ], "./package.json": "./package.json" }, - "version": "8.12.1", + "version": "8.13.0", "engines": { "node": ">=0.4.0" }, diff --git a/src/acorn_version.h b/src/acorn_version.h index 09a2eab3ac8d30..aa2ec02cb1c527 100644 --- a/src/acorn_version.h +++ b/src/acorn_version.h @@ -2,5 +2,5 @@ // Refer to tools/update-acorn.sh #ifndef SRC_ACORN_VERSION_H_ #define SRC_ACORN_VERSION_H_ -#define ACORN_VERSION "8.12.1" +#define ACORN_VERSION "8.13.0" #endif // SRC_ACORN_VERSION_H_ From aaa857fc01b568514ae651065726e935ba85d9de Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Tue, 4 Jun 2024 03:33:07 +0300 Subject: [PATCH 53/76] deps: update ada to 2.8.0 PR-URL: https://github.com/nodejs/node/pull/53254 Reviewed-By: Yagiz Nizipli Reviewed-By: Marco Ippolito Reviewed-By: James M Snell --- deps/ada/ada.cpp | 163 +++++++++++++++++++++-------------------------- deps/ada/ada.h | 154 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 193 insertions(+), 124 deletions(-) diff --git a/deps/ada/ada.cpp b/deps/ada/ada.cpp index bff36abb835760..28ca61f8b801ab 100644 --- a/deps/ada/ada.cpp +++ b/deps/ada/ada.cpp @@ -1,4 +1,4 @@ -/* auto-generated on 2024-04-11 16:39:11 -0400. Do not edit! */ +/* auto-generated on 2024-05-30 22:24:57 -0400. Do not edit! */ /* begin file src/ada.cpp */ #include "ada.h" /* begin file src/checkers.cpp */ @@ -65,8 +65,7 @@ static constexpr std::array path_signature_table = std::array result{}; for (size_t i = 0; i < 256; i++) { if (i <= 0x20 || i == 0x22 || i == 0x23 || i == 0x3c || i == 0x3e || - i == 0x3f || i == 0x60 || i == 0x7b || i == 0x7b || i == 0x7d || - i > 0x7e) { + i == 0x3f || i == 0x60 || i == 0x7b || i == 0x7d || i > 0x7e) { result[i] = 1; } else if (i == 0x25) { result[i] = 8; @@ -9839,24 +9838,34 @@ ada_really_inline bool has_tabs_or_newline( } // fast path for long strings (expected to be common) size_t i = 0; - const uint8x16_t mask1 = vmovq_n_u8('\r'); - const uint8x16_t mask2 = vmovq_n_u8('\n'); - const uint8x16_t mask3 = vmovq_n_u8('\t'); + /** + * The fastest way to check for `\t` (==9), '\n'(== 10) and `\r` (==13) relies + * on table lookup instruction. We notice that these are all unique numbers + * between 0..15. Let's prepare a special register, where we put '\t' in the + * 9th position, '\n' - 10th and '\r' - 13th. Then we shuffle this register by + * input register. If the input had `\t` in position X then this shuffled + * register will also have '\t' in that position. Comparing input with this + * shuffled register will mark us all interesting characters in the input. + * + * credit for algorithmic idea: @aqrit, credit for description: + * @DenisYaroshevskiy + */ + static uint8_t rnt_array[16] = {1, 0, 0, 0, 0, 0, 0, 0, + 0, 9, 10, 0, 0, 13, 0, 0}; + const uint8x16_t rnt = vld1q_u8(rnt_array); + // m['0xd', '0xa', '0x9'] uint8x16_t running{0}; for (; i + 15 < user_input.size(); i += 16) { uint8x16_t word = vld1q_u8((const uint8_t*)user_input.data() + i); - running = vorrq_u8(vorrq_u8(running, vorrq_u8(vceqq_u8(word, mask1), - vceqq_u8(word, mask2))), - vceqq_u8(word, mask3)); + + running = vorrq_u8(running, vceqq_u8(vqtbl1q_u8(rnt, word), word)); } if (i < user_input.size()) { uint8x16_t word = vld1q_u8((const uint8_t*)user_input.data() + user_input.length() - 16); - running = vorrq_u8(vorrq_u8(running, vorrq_u8(vceqq_u8(word, mask1), - vceqq_u8(word, mask2))), - vceqq_u8(word, mask3)); + running = vorrq_u8(running, vceqq_u8(vqtbl1q_u8(rnt, word), word)); } - return vmaxvq_u8(running) != 0; + return vmaxvq_u32(vreinterpretq_u32_u8(running)) != 0; } #elif ADA_SSE2 ada_really_inline bool has_tabs_or_newline( @@ -9876,6 +9885,7 @@ ada_really_inline bool has_tabs_or_newline( const __m128i mask1 = _mm_set1_epi8('\r'); const __m128i mask2 = _mm_set1_epi8('\n'); const __m128i mask3 = _mm_set1_epi8('\t'); + // If we supported SSSE3, we could use the algorithm that we use for NEON. __m128i running{0}; for (; i + 15 < user_input.size(); i += 16) { __m128i word = _mm_loadu_si128((const __m128i*)(user_input.data() + i)); @@ -9898,7 +9908,7 @@ ada_really_inline bool has_tabs_or_newline( ada_really_inline bool has_tabs_or_newline( std::string_view user_input) noexcept { auto has_zero_byte = [](uint64_t v) { - return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080); + return ((v - 0x0101010101010101) & ~(v) & 0x8080808080808080); }; size_t i = 0; uint64_t mask1 = broadcast('\r'); @@ -10028,15 +10038,8 @@ contains_forbidden_domain_code_point_or_upper(const char* input, constexpr static std::array is_alnum_plus_table = []() constexpr { std::array result{}; for (size_t c = 0; c < 256; c++) { - if (c >= '0' && c <= '9') { - result[c] = true; - } else if (c >= 'a' && c <= 'z') { - result[c] = true; - } else if (c >= 'A' && c <= 'Z') { - result[c] = true; - } else if (c == '+' || c == '-' || c == '.') { - result[c] = true; - } + result[c] = (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || c == '+' || c == '-' || c == '.'; } return result; }(); @@ -10659,7 +10662,7 @@ ada_really_inline size_t find_next_host_delimiter_special( uint8x16_t lowpart = vqtbl1q_u8(low_mask, vandq_u8(word, fmask)); uint8x16_t highpart = vqtbl1q_u8(high_mask, vshrq_n_u8(word, 4)); uint8x16_t classify = vandq_u8(lowpart, highpart); - if (vmaxvq_u8(classify) != 0) { + if (vmaxvq_u32(vreinterpretq_u32_u8(classify)) != 0) { uint8x16_t is_zero = vceqq_u8(classify, zero); uint16_t is_non_zero = ~to_bitmask(is_zero); return i + trailing_zeroes(is_non_zero); @@ -10672,7 +10675,7 @@ ada_really_inline size_t find_next_host_delimiter_special( uint8x16_t lowpart = vqtbl1q_u8(low_mask, vandq_u8(word, fmask)); uint8x16_t highpart = vqtbl1q_u8(high_mask, vshrq_n_u8(word, 4)); uint8x16_t classify = vandq_u8(lowpart, highpart); - if (vmaxvq_u8(classify) != 0) { + if (vmaxvq_u32(vreinterpretq_u32_u8(classify)) != 0) { uint8x16_t is_zero = vceqq_u8(classify, zero); uint16_t is_non_zero = ~to_bitmask(is_zero); return view.length() - 16 + trailing_zeroes(is_non_zero); @@ -10797,7 +10800,7 @@ ada_really_inline size_t find_next_host_delimiter(std::string_view view, uint8x16_t lowpart = vqtbl1q_u8(low_mask, vandq_u8(word, fmask)); uint8x16_t highpart = vqtbl1q_u8(high_mask, vshrq_n_u8(word, 4)); uint8x16_t classify = vandq_u8(lowpart, highpart); - if (vmaxvq_u8(classify) != 0) { + if (vmaxvq_u32(vreinterpretq_u32_u8(classify)) != 0) { uint8x16_t is_zero = vceqq_u8(classify, zero); uint16_t is_non_zero = ~to_bitmask(is_zero); return i + trailing_zeroes(is_non_zero); @@ -10810,7 +10813,7 @@ ada_really_inline size_t find_next_host_delimiter(std::string_view view, uint8x16_t lowpart = vqtbl1q_u8(low_mask, vandq_u8(word, fmask)); uint8x16_t highpart = vqtbl1q_u8(high_mask, vshrq_n_u8(word, 4)); uint8x16_t classify = vandq_u8(lowpart, highpart); - if (vmaxvq_u8(classify) != 0) { + if (vmaxvq_u32(vreinterpretq_u32_u8(classify)) != 0) { uint8x16_t is_zero = vceqq_u8(classify, zero); uint16_t is_non_zero = ~to_bitmask(is_zero); return view.length() - 16 + trailing_zeroes(is_non_zero); @@ -11164,7 +11167,7 @@ ada_really_inline void strip_trailing_spaces_from_opaque_path( static constexpr std::array authority_delimiter_special = []() constexpr { std::array result{}; - for (int i : {'@', '/', '\\', '?'}) { + for (uint8_t i : {'@', '/', '\\', '?'}) { result[i] = 1; } return result; @@ -11185,7 +11188,7 @@ find_authority_delimiter_special(std::string_view view) noexcept { // @ / ? static constexpr std::array authority_delimiter = []() constexpr { std::array result{}; - for (int i : {'@', '/', '?'}) { + for (uint8_t i : {'@', '/', '?'}) { result[i] = 1; } return result; @@ -11255,7 +11258,7 @@ bool url::parse_ipv4(std::string_view input) { segment_result = 0; input.remove_prefix(2); } else { - std::from_chars_result r; + std::from_chars_result r{}; if (is_hex) { r = std::from_chars(input.data() + 2, input.data() + input.size(), segment_result, 16); @@ -11809,7 +11812,6 @@ ada_really_inline void url::parse_path(std::string_view input) { * Includes all the getters of `ada::url` */ -#include #include namespace ada { @@ -12058,7 +12060,6 @@ void url::set_hash(const std::string_view input) { helpers::remove_ascii_tab_or_newline(new_value); hash = unicode::percent_encode(new_value, ada::character_sets::FRAGMENT_PERCENT_ENCODE); - return; } void url::set_search(const std::string_view input) { @@ -12136,7 +12137,6 @@ bool url::set_href(const std::string_view input) { /* end file src/url-setters.cpp */ /* begin file src/parser.cpp */ -#include #include namespace ada::parser { @@ -13121,7 +13121,6 @@ namespace ada { if (hash_start < index) { return false; } - index = hash_start; } return true; @@ -13479,7 +13478,7 @@ bool url_aggregator::set_pathname(const std::string_view input) { } clear_pathname(); parse_path(input); - if (checkers::begins_with(input, "//") && !has_authority() && + if (checkers::begins_with(get_pathname(), "//") && !has_authority() && !has_dash_dot()) { buffer.insert(components.pathname_start, "/."); components.pathname_start += 2; @@ -13863,7 +13862,7 @@ bool url_aggregator::set_hostname(const std::string_view input) { // if we have an empty host, then the space between components.host_end and // components.pathname_start may be occupied by /. if (start == components.host_end) { - return std::string_view(); + return {}; } return helpers::substring(buffer, start, components.pathname_start); } @@ -13887,7 +13886,7 @@ bool url_aggregator::set_hostname(const std::string_view input) { components.pathname_start, " buffer.size() = ", buffer.size(), " components.search_start = ", components.search_start, " components.hash_start = ", components.hash_start); - uint32_t ending_index = uint32_t(buffer.size()); + auto ending_index = uint32_t(buffer.size()); if (components.search_start != url_components::omitted) { ending_index = components.search_start; } else if (components.hash_start != url_components::omitted) { @@ -13903,7 +13902,7 @@ bool url_aggregator::set_hostname(const std::string_view input) { if (components.search_start == url_components::omitted) { return ""; } - uint32_t ending_index = uint32_t(buffer.size()); + auto ending_index = uint32_t(buffer.size()); if (components.hash_start != url_components::omitted) { ending_index = components.hash_start; } @@ -14041,7 +14040,7 @@ bool url_aggregator::parse_ipv4(std::string_view input, bool in_place) { segment_result = 0; input.remove_prefix(2); } else { - std::from_chars_result r; + std::from_chars_result r{}; if (is_hex) { ada_log("parse_ipv4 trying to parse hex number"); r = std::from_chars(input.data() + 2, input.data() + input.size(), @@ -14988,8 +14987,7 @@ bool ada_can_parse_with_base(const char* input, size_t input_length, } void ada_free(ada_url result) noexcept { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; delete r; } @@ -15006,7 +15004,7 @@ bool ada_is_valid(ada_url result) noexcept { // caller must free the result with ada_free_owned_string ada_owned_string ada_get_origin(ada_url result) noexcept { ada::result& r = get_instance(result); - ada_owned_string owned; + ada_owned_string owned{}; if (!r) { owned.data = nullptr; owned.length = 0; @@ -15021,14 +15019,12 @@ ada_owned_string ada_get_origin(ada_url result) noexcept { void ada_free_owned_string(ada_owned_string owned) noexcept { delete[] owned.data; - owned.data = nullptr; - owned.length = 0; } ada_string ada_get_href(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_href(); return ada_string_create(out.data(), out.length()); @@ -15037,7 +15033,7 @@ ada_string ada_get_href(ada_url result) noexcept { ada_string ada_get_username(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_username(); return ada_string_create(out.data(), out.length()); @@ -15046,7 +15042,7 @@ ada_string ada_get_username(ada_url result) noexcept { ada_string ada_get_password(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_password(); return ada_string_create(out.data(), out.length()); @@ -15055,7 +15051,7 @@ ada_string ada_get_password(ada_url result) noexcept { ada_string ada_get_port(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_port(); return ada_string_create(out.data(), out.length()); @@ -15064,7 +15060,7 @@ ada_string ada_get_port(ada_url result) noexcept { ada_string ada_get_hash(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_hash(); return ada_string_create(out.data(), out.length()); @@ -15073,7 +15069,7 @@ ada_string ada_get_hash(ada_url result) noexcept { ada_string ada_get_host(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_host(); return ada_string_create(out.data(), out.length()); @@ -15082,7 +15078,7 @@ ada_string ada_get_host(ada_url result) noexcept { ada_string ada_get_hostname(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_hostname(); return ada_string_create(out.data(), out.length()); @@ -15091,7 +15087,7 @@ ada_string ada_get_hostname(ada_url result) noexcept { ada_string ada_get_pathname(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_pathname(); return ada_string_create(out.data(), out.length()); @@ -15100,7 +15096,7 @@ ada_string ada_get_pathname(ada_url result) noexcept { ada_string ada_get_search(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_search(); return ada_string_create(out.data(), out.length()); @@ -15109,7 +15105,7 @@ ada_string ada_get_search(ada_url result) noexcept { ada_string ada_get_protocol(ada_url result) noexcept { ada::result& r = get_instance(result); if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view out = r->get_protocol(); return ada_string_create(out.data(), out.length()); @@ -15368,15 +15364,14 @@ ada_url_search_params ada_parse_search_params(const char* input, } void ada_free_search_params(ada_url_search_params result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; delete r; } ada_owned_string ada_search_params_to_string(ada_url_search_params result) { ada::result& r = *(ada::result*)result; - if (!r) return ada_owned_string{NULL, 0}; + if (!r) return ada_owned_string{nullptr, 0}; std::string out = r->to_string(); ada_owned_string owned{}; owned.length = out.size(); @@ -15471,11 +15466,11 @@ ada_string ada_search_params_get(ada_url_search_params result, const char* key, ada::result& r = *(ada::result*)result; if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } auto found = r->get(std::string_view(key, key_length)); if (!found.has_value()) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } return ada_string_create(found->data(), found->length()); } @@ -15526,14 +15521,12 @@ ada_url_search_params_entries_iter ada_search_params_get_entries( } void ada_free_strings(ada_strings result) { - ada::result>* r = - (ada::result>*)result; + auto* r = (ada::result>*)result; delete r; } size_t ada_strings_size(ada_strings result) { - ada::result>* r = - (ada::result>*)result; + auto* r = (ada::result>*)result; if (!r) { return 0; } @@ -15541,39 +15534,35 @@ size_t ada_strings_size(ada_strings result) { } ada_string ada_strings_get(ada_strings result, size_t index) { - ada::result>* r = - (ada::result>*)result; + auto* r = (ada::result>*)result; if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } std::string_view view = (*r)->at(index); return ada_string_create(view.data(), view.length()); } void ada_free_search_params_keys_iter(ada_url_search_params_keys_iter result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; delete r; } ada_string ada_search_params_keys_iter_next( ada_url_search_params_keys_iter result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } auto next = (*r)->next(); if (!next.has_value()) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } return ada_string_create(next->data(), next->length()); } bool ada_search_params_keys_iter_has_next( ada_url_search_params_keys_iter result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; if (!r) { return false; } @@ -15582,29 +15571,26 @@ bool ada_search_params_keys_iter_has_next( void ada_free_search_params_values_iter( ada_url_search_params_values_iter result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; delete r; } ada_string ada_search_params_values_iter_next( ada_url_search_params_values_iter result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; if (!r) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } auto next = (*r)->next(); if (!next.has_value()) { - return ada_string_create(NULL, 0); + return ada_string_create(nullptr, 0); } return ada_string_create(next->data(), next->length()); } bool ada_search_params_values_iter_has_next( ada_url_search_params_values_iter result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; if (!r) { return false; } @@ -15613,19 +15599,17 @@ bool ada_search_params_values_iter_has_next( void ada_free_search_params_entries_iter( ada_url_search_params_entries_iter result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; delete r; } ada_string_pair ada_search_params_entries_iter_next( ada_url_search_params_entries_iter result) { - ada::result* r = - (ada::result*)result; - if (!r) return {ada_string_create(NULL, 0), ada_string_create(NULL, 0)}; + auto* r = (ada::result*)result; + if (!r) return {ada_string_create(nullptr, 0), ada_string_create(nullptr, 0)}; auto next = (*r)->next(); if (!next.has_value()) { - return {ada_string_create(NULL, 0), ada_string_create(NULL, 0)}; + return {ada_string_create(nullptr, 0), ada_string_create(nullptr, 0)}; } return ada_string_pair{ ada_string_create(next->first.data(), next->first.length()), @@ -15634,8 +15618,7 @@ ada_string_pair ada_search_params_entries_iter_next( bool ada_search_params_entries_iter_has_next( ada_url_search_params_entries_iter result) { - ada::result* r = - (ada::result*)result; + auto* r = (ada::result*)result; if (!r) { return false; } diff --git a/deps/ada/ada.h b/deps/ada/ada.h index b9e000b841d1ed..9142fbf66c8488 100644 --- a/deps/ada/ada.h +++ b/deps/ada/ada.h @@ -1,4 +1,4 @@ -/* auto-generated on 2024-04-11 16:39:11 -0400. Do not edit! */ +/* auto-generated on 2024-05-30 22:24:57 -0400. Do not edit! */ /* begin file include/ada.h */ /** * @file ada.h @@ -1214,25 +1214,104 @@ namespace ada { * @see https://url.spec.whatwg.org/#url-parsing */ enum class state { + /** + * @see https://url.spec.whatwg.org/#authority-state + */ AUTHORITY, + + /** + * @see https://url.spec.whatwg.org/#scheme-start-state + */ SCHEME_START, + + /** + * @see https://url.spec.whatwg.org/#scheme-state + */ SCHEME, + + /** + * @see https://url.spec.whatwg.org/#host-state + */ HOST, + + /** + * @see https://url.spec.whatwg.org/#no-scheme-state + */ NO_SCHEME, + + /** + * @see https://url.spec.whatwg.org/#fragment-state + */ FRAGMENT, + + /** + * @see https://url.spec.whatwg.org/#relative-state + */ RELATIVE_SCHEME, + + /** + * @see https://url.spec.whatwg.org/#relative-slash-state + */ RELATIVE_SLASH, + + /** + * @see https://url.spec.whatwg.org/#file-state + */ FILE, + + /** + * @see https://url.spec.whatwg.org/#file-host-state + */ FILE_HOST, + + /** + * @see https://url.spec.whatwg.org/#file-slash-state + */ FILE_SLASH, + + /** + * @see https://url.spec.whatwg.org/#path-or-authority-state + */ PATH_OR_AUTHORITY, + + /** + * @see https://url.spec.whatwg.org/#special-authority-ignore-slashes-state + */ SPECIAL_AUTHORITY_IGNORE_SLASHES, + + /** + * @see https://url.spec.whatwg.org/#special-authority-slashes-state + */ SPECIAL_AUTHORITY_SLASHES, + + /** + * @see https://url.spec.whatwg.org/#special-relative-or-authority-state + */ SPECIAL_RELATIVE_OR_AUTHORITY, + + /** + * @see https://url.spec.whatwg.org/#query-state + */ QUERY, + + /** + * @see https://url.spec.whatwg.org/#path-state + */ PATH, + + /** + * @see https://url.spec.whatwg.org/#path-start-state + */ PATH_START, + + /** + * @see https://url.spec.whatwg.org/#cannot-be-a-base-url-path-state + */ OPAQUE_PATH, + + /** + * @see https://url.spec.whatwg.org/#port-state + */ PORT, }; @@ -2753,8 +2832,9 @@ struct expected_operations_base : expected_storage_base { // This class manages conditionally having a trivial copy constructor // This specialization is for when T and E are trivially copy constructible template :: - value &&TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(E)::value> + bool = is_void_or::value && + TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(E)::value> struct expected_copy_base : expected_operations_base { using expected_operations_base::expected_operations_base; }; @@ -2786,8 +2866,9 @@ struct expected_copy_base : expected_operations_base { // move constructible #ifndef TL_EXPECTED_GCC49 template >::value - &&std::is_trivially_move_constructible::value> + bool = + is_void_or>::value && + std::is_trivially_move_constructible::value> struct expected_move_base : expected_copy_base { using expected_copy_base::expected_copy_base; }; @@ -2816,14 +2897,16 @@ struct expected_move_base : expected_copy_base { }; // This class manages conditionally having a trivial copy assignment operator -template >::value - &&TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(E)::value - &&TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(E)::value - &&TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(E)::value> +template < + class T, class E, + bool = + is_void_or< + T, conjunction>::value && + TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(E)::value && + TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(E)::value && + TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(E)::value> struct expected_copy_assign_base : expected_move_base { using expected_move_base::expected_move_base; }; @@ -2850,14 +2933,15 @@ struct expected_copy_assign_base : expected_move_base { // to make do with a non-trivial move assignment operator even if T is trivially // move assignable #ifndef TL_EXPECTED_GCC49 -template , - std::is_trivially_move_constructible, - std::is_trivially_move_assignable>>:: - value &&std::is_trivially_destructible::value - &&std::is_trivially_move_constructible::value - &&std::is_trivially_move_assignable::value> +template < + class T, class E, + bool = is_void_or< + T, conjunction, + std::is_trivially_move_constructible, + std::is_trivially_move_assignable>>::value && + std::is_trivially_destructible::value && + std::is_trivially_move_constructible::value && + std::is_trivially_move_assignable::value> struct expected_move_assign_base : expected_copy_assign_base { using expected_copy_assign_base::expected_copy_assign_base; }; @@ -2879,10 +2963,10 @@ struct expected_move_assign_base expected_move_assign_base &operator=(const expected_move_assign_base &rhs) = default; - expected_move_assign_base & - operator=(expected_move_assign_base &&rhs) noexcept( - std::is_nothrow_move_constructible::value - &&std::is_nothrow_move_assignable::value) { + expected_move_assign_base &operator=( + expected_move_assign_base + &&rhs) noexcept(std::is_nothrow_move_constructible::value && + std::is_nothrow_move_assignable::value) { this->assign(std::move(rhs)); return *this; } @@ -3771,11 +3855,10 @@ class expected : private detail::expected_move_assign_base, detail::is_swappable::value && (std::is_nothrow_move_constructible::value || std::is_nothrow_move_constructible::value)> - swap(expected &rhs) noexcept( - std::is_nothrow_move_constructible::value - &&detail::is_nothrow_swappable::value - &&std::is_nothrow_move_constructible::value - &&detail::is_nothrow_swappable::value) { + swap(expected &rhs) noexcept(std::is_nothrow_move_constructible::value && + detail::is_nothrow_swappable::value && + std::is_nothrow_move_constructible::value && + detail::is_nothrow_swappable::value) { if (has_value() && rhs.has_value()) { swap_where_both_have_value(rhs, typename std::is_void::type{}); } else if (!has_value() && rhs.has_value()) { @@ -4312,7 +4395,10 @@ struct url; namespace ada::parser { /** - * Parses a url. + * Parses a url. The parameter user_input is the input to be parsed: + * it should be a valid UTF-8 string. The parameter base_url is an optional + * parameter that can be used to resolve relative URLs. If the base_url is + * provided, the user_input is resolved against the base_url. */ template result_type parse_url(std::string_view user_input, @@ -7169,14 +7255,14 @@ url_search_params_entries_iter::next() { #ifndef ADA_ADA_VERSION_H #define ADA_ADA_VERSION_H -#define ADA_VERSION "2.7.8" +#define ADA_VERSION "2.8.0" namespace ada { enum { ADA_VERSION_MAJOR = 2, - ADA_VERSION_MINOR = 7, - ADA_VERSION_REVISION = 8, + ADA_VERSION_MINOR = 8, + ADA_VERSION_REVISION = 0, }; } // namespace ada From 033f1e2ba519d1871a339673642185204a78d50a Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Tue, 21 May 2024 03:35:50 +0300 Subject: [PATCH 54/76] deps: update zlib to 1.3.0.1-motley-4f653ff PR-URL: https://github.com/nodejs/node/pull/53052 Reviewed-By: Luigi Pinca Reviewed-By: Mohammed Keyvanzadeh --- deps/zlib/google/zip_internal.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deps/zlib/google/zip_internal.cc b/deps/zlib/google/zip_internal.cc index 9b20b421e24765..d15c6cfe4f5de2 100644 --- a/deps/zlib/google/zip_internal.cc +++ b/deps/zlib/google/zip_internal.cc @@ -165,7 +165,7 @@ struct ZipBuffer { // writing compressed data and it returns NULL for this case.) void* OpenZipBuffer(void* opaque, const void* /*filename*/, int mode) { if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER) != ZLIB_FILEFUNC_MODE_READ) { - NOTREACHED(); + NOTREACHED_IN_MIGRATION(); return NULL; } ZipBuffer* buffer = static_cast(opaque); @@ -196,7 +196,7 @@ uLong WriteZipBuffer(void* /*opaque*/, void* /*stream*/, const void* /*buf*/, uLong /*size*/) { - NOTREACHED(); + NOTREACHED_IN_MIGRATION(); return 0; } @@ -228,7 +228,7 @@ long SeekZipBuffer(void* opaque, buffer->offset = std::min(buffer->length, offset); return 0; } - NOTREACHED(); + NOTREACHED_IN_MIGRATION(); return -1; } From 569a739569cbe12d46f3a94155b4b8e7a398cea3 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Fri, 14 Jun 2024 00:45:23 +0300 Subject: [PATCH 55/76] deps: update zlib to 1.3.0.1-motley-209717d MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/53156 Reviewed-By: Michaël Zasso Reviewed-By: Marco Ippolito Reviewed-By: Luigi Pinca Reviewed-By: Ulises Gascón Reviewed-By: Rafael Gonzaga Reviewed-By: Antoine du Hamel --- deps/zlib/BUILD.gn | 16 +++++++++------- deps/zlib/crc32.c | 29 ++++++++++++++++------------- deps/zlib/crc32_simd.c | 3 ++- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/deps/zlib/BUILD.gn b/deps/zlib/BUILD.gn index f97ab45de2741f..378bd0df75ca22 100644 --- a/deps/zlib/BUILD.gn +++ b/deps/zlib/BUILD.gn @@ -151,7 +151,13 @@ if (use_arm_neon_optimizations) { if (!is_win && !is_clang) { assert(!use_thin_lto, "ThinLTO fails mixing different module-level targets") - cflags_c = [ "-march=armv8-a+aes+crc" ] + if (current_cpu == "arm64") { + cflags_c = [ "-march=armv8-a+aes+crc" ] + } else if (current_cpu == "arm") { + cflags_c = [ "-march=armv8-a+crc" ] + } else { + assert(false, "Unexpected cpu: $current_cpu") + } } sources = [ @@ -478,9 +484,7 @@ if (!is_win || target_os != "winuwp") { sources = [ "contrib/minizip/minizip.c" ] if (is_clang) { - cflags = [ - "-Wno-incompatible-pointer-types-discards-qualifiers", - ] + cflags = [ "-Wno-incompatible-pointer-types-discards-qualifiers" ] } if (!is_debug) { @@ -500,9 +504,7 @@ if (!is_win || target_os != "winuwp") { sources = [ "contrib/minizip/miniunz.c" ] if (is_clang) { - cflags = [ - "-Wno-incompatible-pointer-types-discards-qualifiers", - ] + cflags = [ "-Wno-incompatible-pointer-types-discards-qualifiers" ] } if (!is_debug) { diff --git a/deps/zlib/crc32.c b/deps/zlib/crc32.c index 32686f92488c51..4177e920a479df 100644 --- a/deps/zlib/crc32.c +++ b/deps/zlib/crc32.c @@ -700,24 +700,29 @@ local z_word_t crc_word_big(z_word_t data) { /* ========================================================================= */ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, z_size_t len) { + + /* If no optimizations are enabled, do it as canonical zlib. */ +#if !defined(CRC32_SIMD_SSE42_PCLMUL) && !defined(CRC32_ARMV8_CRC32) && \ + !defined(RISCV_RVV) && !defined(CRC32_SIMD_AVX512_PCLMUL) + if (buf == Z_NULL) { + return 0UL; + } +#else /* * zlib convention is to call crc32(0, NULL, 0); before making * calls to crc32(). So this is a good, early (and infrequent) * place to cache CPU features if needed for those later, more * interesting crc32() calls. */ -#if defined(CRC32_SIMD_SSE42_PCLMUL) || defined(CRC32_ARMV8_CRC32) \ - || defined(RISCV_RVV) - /* - * Since this routine can be freely used, check CPU features here. - */ if (buf == Z_NULL) { - if (!len) /* Assume user is calling crc32(0, NULL, 0); */ + if (!len) cpu_check_features(); return 0UL; } - #endif + /* If AVX-512 is enabled, we will use it for longer inputs and fallback + * to SSE4.2 and eventually the portable implementation to handle the tail. + */ #if defined(CRC32_SIMD_AVX512_PCLMUL) if (x86_cpu_enable_avx512 && len >= Z_CRC32_AVX512_MINIMUM_LENGTH) { /* crc32 64-byte chunks */ @@ -730,7 +735,8 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, /* Fall into the default crc32 for the remaining data. */ buf += chunk_size; } -#elif defined(CRC32_SIMD_SSE42_PCLMUL) +#endif +#if defined(CRC32_SIMD_SSE42_PCLMUL) if (x86_cpu_enable_simd && len >= Z_CRC32_SSE42_MINIMUM_LENGTH) { /* crc32 16-byte chunks */ z_size_t chunk_size = len & ~Z_CRC32_SSE42_CHUNKSIZE_MASK; @@ -758,11 +764,8 @@ unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, buf += chunk_size; } #endif - return armv8_crc32_little(buf, len, crc); /* Armv8@32bit or tail. */ - } -#else - if (buf == Z_NULL) { - return 0UL; + /* This is scalar and self contained, used on Armv8@32bit or tail. */ + return armv8_crc32_little(buf, len, crc); } #endif /* CRC32_SIMD */ diff --git a/deps/zlib/crc32_simd.c b/deps/zlib/crc32_simd.c index 7428270920a03e..1ee7742015da60 100644 --- a/deps/zlib/crc32_simd.c +++ b/deps/zlib/crc32_simd.c @@ -200,7 +200,8 @@ uint32_t ZLIB_INTERNAL crc32_avx512_simd_( /* AVX512+PCLMUL */ return _mm_extract_epi32(a1, 1); } -#elif defined(CRC32_SIMD_SSE42_PCLMUL) +#endif +#if defined(CRC32_SIMD_SSE42_PCLMUL) /* * crc32_sse42_simd_(): compute the crc32 of the buffer, where the buffer From 637a306e02ee96a9e0f9e5e0402c1db7ded87a74 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 16 Jun 2024 00:28:04 +0000 Subject: [PATCH 56/76] deps: update zlib to 1.3.0.1-motley-887bb57 PR-URL: https://github.com/nodejs/node/pull/53464 Reviewed-By: Chemi Atlow Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga Reviewed-By: James M Snell --- deps/zlib/google/zip_internal.cc | 104 ++++++++++++------------ deps/zlib/google/zip_reader.cc | 11 +-- deps/zlib/google/zip_reader.h | 3 +- deps/zlib/google/zip_reader_unittest.cc | 12 +-- deps/zlib/google/zip_unittest.cc | 6 +- 5 files changed, 70 insertions(+), 66 deletions(-) diff --git a/deps/zlib/google/zip_internal.cc b/deps/zlib/google/zip_internal.cc index d15c6cfe4f5de2..aa49f4546caa0e 100644 --- a/deps/zlib/google/zip_internal.cc +++ b/deps/zlib/google/zip_internal.cc @@ -8,12 +8,12 @@ #include #include +#include #include "base/containers/fixed_flat_set.h" #include "base/files/file_path.h" #include "base/logging.h" #include "base/notreached.h" -#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" @@ -398,64 +398,64 @@ Compression GetCompressionMethod(const base::FilePath& path) { if (ext.empty()) return kDeflated; - using StringPiece = base::FilePath::StringPieceType; // Skip the leading dot. - StringPiece ext_without_dot = ext; + base::FilePath::StringPieceType ext_without_dot = ext; DCHECK_EQ(ext_without_dot.front(), FILE_PATH_LITERAL('.')); ext_without_dot.remove_prefix(1); // Well known filename extensions of files that a likely to be already // compressed. The extensions are in lower case without the leading dot. - static constexpr auto kExts = base::MakeFixedFlatSet({ - FILE_PATH_LITERAL("3g2"), // - FILE_PATH_LITERAL("3gp"), // - FILE_PATH_LITERAL("7z"), // - FILE_PATH_LITERAL("7zip"), // - FILE_PATH_LITERAL("aac"), // - FILE_PATH_LITERAL("avi"), // - FILE_PATH_LITERAL("bz"), // - FILE_PATH_LITERAL("bz2"), // - FILE_PATH_LITERAL("crx"), // - FILE_PATH_LITERAL("gif"), // - FILE_PATH_LITERAL("gz"), // - FILE_PATH_LITERAL("jar"), // - FILE_PATH_LITERAL("jpeg"), // - FILE_PATH_LITERAL("jpg"), // - FILE_PATH_LITERAL("lz"), // - FILE_PATH_LITERAL("m2v"), // - FILE_PATH_LITERAL("m4p"), // - FILE_PATH_LITERAL("m4v"), // - FILE_PATH_LITERAL("mng"), // - FILE_PATH_LITERAL("mov"), // - FILE_PATH_LITERAL("mp2"), // - FILE_PATH_LITERAL("mp3"), // - FILE_PATH_LITERAL("mp4"), // - FILE_PATH_LITERAL("mpe"), // - FILE_PATH_LITERAL("mpeg"), // - FILE_PATH_LITERAL("mpg"), // - FILE_PATH_LITERAL("mpv"), // - FILE_PATH_LITERAL("ogg"), // - FILE_PATH_LITERAL("ogv"), // - FILE_PATH_LITERAL("png"), // - FILE_PATH_LITERAL("qt"), // - FILE_PATH_LITERAL("rar"), // - FILE_PATH_LITERAL("taz"), // - FILE_PATH_LITERAL("tb2"), // - FILE_PATH_LITERAL("tbz"), // - FILE_PATH_LITERAL("tbz2"), // - FILE_PATH_LITERAL("tgz"), // - FILE_PATH_LITERAL("tlz"), // - FILE_PATH_LITERAL("tz"), // - FILE_PATH_LITERAL("tz2"), // - FILE_PATH_LITERAL("vob"), // - FILE_PATH_LITERAL("webm"), // - FILE_PATH_LITERAL("wma"), // - FILE_PATH_LITERAL("wmv"), // - FILE_PATH_LITERAL("xz"), // - FILE_PATH_LITERAL("z"), // - FILE_PATH_LITERAL("zip"), // - }); + static constexpr auto kExts = + base::MakeFixedFlatSet({ + FILE_PATH_LITERAL("3g2"), // + FILE_PATH_LITERAL("3gp"), // + FILE_PATH_LITERAL("7z"), // + FILE_PATH_LITERAL("7zip"), // + FILE_PATH_LITERAL("aac"), // + FILE_PATH_LITERAL("avi"), // + FILE_PATH_LITERAL("bz"), // + FILE_PATH_LITERAL("bz2"), // + FILE_PATH_LITERAL("crx"), // + FILE_PATH_LITERAL("gif"), // + FILE_PATH_LITERAL("gz"), // + FILE_PATH_LITERAL("jar"), // + FILE_PATH_LITERAL("jpeg"), // + FILE_PATH_LITERAL("jpg"), // + FILE_PATH_LITERAL("lz"), // + FILE_PATH_LITERAL("m2v"), // + FILE_PATH_LITERAL("m4p"), // + FILE_PATH_LITERAL("m4v"), // + FILE_PATH_LITERAL("mng"), // + FILE_PATH_LITERAL("mov"), // + FILE_PATH_LITERAL("mp2"), // + FILE_PATH_LITERAL("mp3"), // + FILE_PATH_LITERAL("mp4"), // + FILE_PATH_LITERAL("mpe"), // + FILE_PATH_LITERAL("mpeg"), // + FILE_PATH_LITERAL("mpg"), // + FILE_PATH_LITERAL("mpv"), // + FILE_PATH_LITERAL("ogg"), // + FILE_PATH_LITERAL("ogv"), // + FILE_PATH_LITERAL("png"), // + FILE_PATH_LITERAL("qt"), // + FILE_PATH_LITERAL("rar"), // + FILE_PATH_LITERAL("taz"), // + FILE_PATH_LITERAL("tb2"), // + FILE_PATH_LITERAL("tbz"), // + FILE_PATH_LITERAL("tbz2"), // + FILE_PATH_LITERAL("tgz"), // + FILE_PATH_LITERAL("tlz"), // + FILE_PATH_LITERAL("tz"), // + FILE_PATH_LITERAL("tz2"), // + FILE_PATH_LITERAL("vob"), // + FILE_PATH_LITERAL("webm"), // + FILE_PATH_LITERAL("wma"), // + FILE_PATH_LITERAL("wmv"), // + FILE_PATH_LITERAL("xz"), // + FILE_PATH_LITERAL("z"), // + FILE_PATH_LITERAL("zip"), // + }); if (kExts.count(ext_without_dot)) { return kStored; diff --git a/deps/zlib/google/zip_reader.cc b/deps/zlib/google/zip_reader.cc index 34a815e5f52e9f..182a802ad84000 100644 --- a/deps/zlib/google/zip_reader.cc +++ b/deps/zlib/google/zip_reader.cc @@ -5,6 +5,7 @@ #include "third_party/zlib/google/zip_reader.h" #include +#include #include #include "base/check.h" @@ -15,7 +16,6 @@ #include "base/logging.h" #include "base/numerics/safe_conversions.h" #include "base/strings/strcat.h" -#include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/task/sequenced_task_runner.h" @@ -267,7 +267,7 @@ bool ZipReader::OpenEntry() { return true; } -void ZipReader::Normalize(base::StringPiece16 in) { +void ZipReader::Normalize(std::u16string_view in) { entry_.is_unsafe = true; // Directory entries in ZIP have a path ending with "/". @@ -281,15 +281,16 @@ void ZipReader::Normalize(base::StringPiece16 in) { for (;;) { // Consume initial path separators. - const base::StringPiece16::size_type i = in.find_first_not_of(u'/'); - if (i == base::StringPiece16::npos) + const std::u16string_view::size_type i = in.find_first_not_of(u'/'); + if (i == std::u16string_view::npos) { break; + } in.remove_prefix(i); DCHECK(!in.empty()); // Isolate next path component. - const base::StringPiece16 part = in.substr(0, in.find_first_of(u'/')); + const std::u16string_view part = in.substr(0, in.find_first_of(u'/')); DCHECK(!part.empty()); in.remove_prefix(part.size()); diff --git a/deps/zlib/google/zip_reader.h b/deps/zlib/google/zip_reader.h index b7680cc839386a..0dbf50b87b6b91 100644 --- a/deps/zlib/google/zip_reader.h +++ b/deps/zlib/google/zip_reader.h @@ -10,6 +10,7 @@ #include #include #include +#include #include "base/files/file.h" #include "base/files/file_path.h" @@ -281,7 +282,7 @@ class ZipReader { // Normalizes the given path passed as UTF-16 string piece. Sets entry_.path, // entry_.is_directory and entry_.is_unsafe. - void Normalize(base::StringPiece16 in); + void Normalize(std::u16string_view in); // Runs the ListenerCallback at a throttled rate. void ReportProgress(ListenerCallback listener_callback, uint64_t bytes) const; diff --git a/deps/zlib/google/zip_reader_unittest.cc b/deps/zlib/google/zip_reader_unittest.cc index 9eb7d7d2b10e05..9d1406feff9887 100644 --- a/deps/zlib/google/zip_reader_unittest.cc +++ b/deps/zlib/google/zip_reader_unittest.cc @@ -10,6 +10,7 @@ #include #include +#include #include #include "base/check.h" @@ -22,7 +23,6 @@ #include "base/i18n/time_formatting.h" #include "base/path_service.h" #include "base/run_loop.h" -#include "base/strings/string_piece.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/test/bind.h" @@ -172,7 +172,7 @@ class ZipReaderTest : public PlatformTest { } static Paths GetPaths(const base::FilePath& zip_path, - base::StringPiece encoding = {}) { + std::string_view encoding = {}) { Paths paths; if (ZipReader reader; reader.Open(zip_path)) { @@ -422,7 +422,7 @@ TEST_F(ZipReaderTest, EncryptedFile_WrongPassword) { EXPECT_EQ("This is not encrypted.\n", contents); } - for (const base::StringPiece path : { + for (const std::string_view path : { "Encrypted AES-128.txt", "Encrypted AES-192.txt", "Encrypted AES-256.txt", @@ -458,7 +458,7 @@ TEST_F(ZipReaderTest, EncryptedFile_RightPassword) { } // TODO(crbug.com/1296838) Support AES encryption. - for (const base::StringPiece path : { + for (const std::string_view path : { "Encrypted AES-128.txt", "Encrypted AES-192.txt", "Encrypted AES-256.txt", @@ -713,12 +713,12 @@ TEST_F(ZipReaderTest, ExtractCurrentEntryToString) { if (i > 0) { // Exact byte read limit: must pass. EXPECT_TRUE(reader.ExtractCurrentEntryToString(i, &contents)); - EXPECT_EQ(std::string(base::StringPiece("0123456", i)), contents); + EXPECT_EQ(std::string(std::string_view("0123456", i)), contents); } // More than necessary byte read limit: must pass. EXPECT_TRUE(reader.ExtractCurrentEntryToString(&contents)); - EXPECT_EQ(std::string(base::StringPiece("0123456", i)), contents); + EXPECT_EQ(std::string(std::string_view("0123456", i)), contents); } reader.Close(); } diff --git a/deps/zlib/google/zip_unittest.cc b/deps/zlib/google/zip_unittest.cc index 922d38303ce845..58bafb809d6bf9 100644 --- a/deps/zlib/google/zip_unittest.cc +++ b/deps/zlib/google/zip_unittest.cc @@ -2,12 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "third_party/zlib/google/zip.h" + #include #include #include #include #include +#include #include #include #include @@ -29,7 +32,6 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" -#include "third_party/zlib/google/zip.h" #include "third_party/zlib/google/zip_internal.h" #include "third_party/zlib/google/zip_reader.h" @@ -1290,7 +1292,7 @@ TEST_F(ZipTest, Compressed) { EXPECT_TRUE(base::CreateDirectory(src_dir)); // Create some dummy source files. - for (const base::StringPiece s : {"foo", "bar.txt", ".hidden"}) { + for (const std::string_view s : {"foo", "bar.txt", ".hidden"}) { base::File f(src_dir.AppendASCII(s), base::File::FLAG_CREATE | base::File::FLAG_WRITE); ASSERT_TRUE(f.SetLength(5000)); From e151ebef865bdd7bf215e98a0a9cde4508815505 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 23 Jun 2024 00:27:53 +0000 Subject: [PATCH 57/76] deps: update zlib to 1.3.0.1-motley-e432200 PR-URL: https://github.com/nodejs/node/pull/53464 Reviewed-By: Chemi Atlow Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga Reviewed-By: James M Snell --- deps/zlib/contrib/minizip/README.chromium | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deps/zlib/contrib/minizip/README.chromium b/deps/zlib/contrib/minizip/README.chromium index b5895f2a5181b0..ceaff34f0f3fa6 100644 --- a/deps/zlib/contrib/minizip/README.chromium +++ b/deps/zlib/contrib/minizip/README.chromium @@ -2,10 +2,11 @@ Name: ZIP file API for reading file entries in a ZIP archive Short Name: minizip URL: https://github.com/madler/zlib/tree/master/contrib/minizip Version: 1.3.0.1 +Revision: 643e17b7498d12ab8d15565662880579692f769d License: Zlib License File: //third_party/zlib/LICENSE -Security Critical: yes Shipped: yes +Security Critical: yes CPEPrefix: cpe:/a:minizip_project:minizip Description: From f6b2f68ce7a3ce44b24b9bcf526b7cb3e63bee08 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 30 Jun 2024 00:28:35 +0000 Subject: [PATCH 58/76] deps: update zlib to 1.3.0.1-motley-8b7eff8 PR-URL: https://github.com/nodejs/node/pull/53464 Reviewed-By: Chemi Atlow Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga Reviewed-By: James M Snell --- deps/zlib/crc32_simd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deps/zlib/crc32_simd.c b/deps/zlib/crc32_simd.c index 1ee7742015da60..cbe9739578c943 100644 --- a/deps/zlib/crc32_simd.c +++ b/deps/zlib/crc32_simd.c @@ -387,9 +387,9 @@ uint32_t ZLIB_INTERNAL crc32_sse42_simd_( /* SSE4.2+PCLMUL */ #endif #if defined(__aarch64__) -#define TARGET_ARMV8_WITH_CRC __attribute__((target("aes,crc"))) +#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+aes+crc"))) #else // !defined(__aarch64__) -#define TARGET_ARMV8_WITH_CRC __attribute__((target("armv8-a,crc"))) +#define TARGET_ARMV8_WITH_CRC __attribute__((target("crc"))) #endif // defined(__aarch64__) #elif defined(__GNUC__) @@ -398,7 +398,7 @@ uint32_t ZLIB_INTERNAL crc32_sse42_simd_( /* SSE4.2+PCLMUL */ */ #include #include -#define TARGET_ARMV8_WITH_CRC +#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+crc"))) #else // !defined(__GNUC__) && !defined(_aarch64__) #error ARM CRC32 SIMD extensions only supported for Clang and GCC #endif From 4b815550e03fb69e9e3b7cf66831c224689d86a2 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 7 Jul 2024 00:28:55 +0000 Subject: [PATCH 59/76] deps: update zlib to 1.3.0.1-motley-68e57e6 PR-URL: https://github.com/nodejs/node/pull/53464 Reviewed-By: Chemi Atlow Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga Reviewed-By: James M Snell --- deps/zlib/contrib/bench/zlib_bench.cc | 20 +++----- deps/zlib/contrib/tests/fuzzers/BUILD.gn | 5 ++ .../contrib/tests/fuzzers/compress_fuzzer.cc | 46 +++++++++++++++++++ 3 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 deps/zlib/contrib/tests/fuzzers/compress_fuzzer.cc diff --git a/deps/zlib/contrib/bench/zlib_bench.cc b/deps/zlib/contrib/bench/zlib_bench.cc index b65f9291bff500..6df296c8721056 100644 --- a/deps/zlib/contrib/bench/zlib_bench.cc +++ b/deps/zlib/contrib/bench/zlib_bench.cc @@ -71,10 +71,6 @@ Data read_file_data_or_exit(const char* name) { return data; } -size_t zlib_estimate_compressed_size(size_t input_size) { - return compressBound(input_size); -} - enum zlib_wrapper { kWrapperNONE, kWrapperZLIB, @@ -128,10 +124,6 @@ void zlib_compress( std::string* output, bool resize_output = false) { - if (resize_output) - output->resize(zlib_estimate_compressed_size(input_size)); - size_t output_size = output->size(); - z_stream stream; memset(&stream, 0, sizeof(stream)); @@ -140,6 +132,11 @@ void zlib_compress( if (result != Z_OK) error_exit("deflateInit2 failed", result); + if (resize_output) { + output->resize(deflateBound(&stream, input_size)); + } + size_t output_size = output->size(); + stream.next_out = (Bytef*)string_data(output); stream.avail_out = (uInt)output_size; stream.next_in = (z_const Bytef*)input; @@ -299,7 +296,7 @@ void zlib_file(const char* name, // Pre-grow the output buffer so we don't measure string resize time. for (int b = 0; b < blocks; ++b) - compressed[b].resize(zlib_estimate_compressed_size(block_size)); + zlib_compress(type, input[b], input_length[b], &compressed[b], true); auto start = now(); for (int b = 0; b < blocks; ++b) @@ -307,11 +304,6 @@ void zlib_file(const char* name, zlib_compress(type, input[b], input_length[b], &compressed[b]); ctime[run] = std::chrono::duration(now() - start).count(); - // Compress again, resizing compressed, so we don't leave junk at the - // end of the compressed string that could confuse zlib_uncompress(). - for (int b = 0; b < blocks; ++b) - zlib_compress(type, input[b], input_length[b], &compressed[b], true); - for (int b = 0; b < blocks; ++b) output[b].resize(input_length[b]); diff --git a/deps/zlib/contrib/tests/fuzzers/BUILD.gn b/deps/zlib/contrib/tests/fuzzers/BUILD.gn index 16e918a720ece9..d7db4b3459bae2 100644 --- a/deps/zlib/contrib/tests/fuzzers/BUILD.gn +++ b/deps/zlib/contrib/tests/fuzzers/BUILD.gn @@ -34,6 +34,11 @@ fuzzer_test("zlib_deflate_set_dictionary_fuzzer") { deps = [ "../../../:zlib" ] } +fuzzer_test("zlib_compress_fuzzer") { + sources = [ "compress_fuzzer.cc" ] + deps = [ "../../../:zlib" ] +} + fuzzer_test("zlib_deflate_fuzzer") { sources = [ "deflate_fuzzer.cc" ] deps = [ "../../../:zlib" ] diff --git a/deps/zlib/contrib/tests/fuzzers/compress_fuzzer.cc b/deps/zlib/contrib/tests/fuzzers/compress_fuzzer.cc new file mode 100644 index 00000000000000..3afc78122be2ba --- /dev/null +++ b/deps/zlib/contrib/tests/fuzzers/compress_fuzzer.cc @@ -0,0 +1,46 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include + +#include + +#include "zlib.h" + +// Fuzzer builds often have NDEBUG set, so roll our own assert macro. +#define ASSERT(cond) \ + do { \ + if (!(cond)) { \ + fprintf(stderr, "%s:%d Assert failed: %s\n", __FILE__, __LINE__, #cond); \ + exit(1); \ + } \ + } while (0) + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + FuzzedDataProvider fdp(data, size); + const int level = fdp.PickValueInArray({-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}); + const std::vector src = fdp.ConsumeRemainingBytes(); + + const unsigned long compress_bound = compressBound(src.size()); + std::vector compressed; + compressed.resize(compress_bound); + + unsigned long compressed_size = compress_bound; + int ret = compress2(compressed.data(), &compressed_size, src.data(), + src.size(), level); + ASSERT(ret == Z_OK); + ASSERT(compressed_size <= compress_bound); + compressed.resize(compressed_size); + + std::vector uncompressed; + uncompressed.resize(src.size()); + unsigned long uncompressed_size = uncompressed.size(); + ret = uncompress(uncompressed.data(), &uncompressed_size, compressed.data(), + compressed.size()); + ASSERT(ret == Z_OK); + ASSERT(uncompressed_size == src.size()); + ASSERT(uncompressed == src); + + return 0; +} From 64f98a98690406899cdc96ed6ee9e8efa9f1a87f Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 14 Jul 2024 00:29:35 +0000 Subject: [PATCH 60/76] deps: update zlib to 1.3.0.1-motley-c2469fd PR-URL: https://github.com/nodejs/node/pull/53464 Reviewed-By: Chemi Atlow Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga Reviewed-By: James M Snell --- deps/zlib/CMakeLists.txt | 26 ++ deps/zlib/contrib/qat/deflate_qat.cpp | 312 ++++++++++++++++++ deps/zlib/contrib/qat/deflate_qat.h | 54 +++ deps/zlib/contrib/qat/qatzpp/io_buffers.cpp | 31 ++ deps/zlib/contrib/qat/qatzpp/io_buffers.h | 62 ++++ deps/zlib/contrib/qat/qatzpp/memory.cpp | 30 ++ deps/zlib/contrib/qat/qatzpp/memory.hpp | 40 +++ deps/zlib/contrib/qat/qatzpp/qat.cpp | 73 ++++ deps/zlib/contrib/qat/qatzpp/qat.hpp | 19 ++ .../contrib/qat/qatzpp/qat_buffer_list.cpp | 34 ++ .../contrib/qat/qatzpp/qat_buffer_list.hpp | 32 ++ deps/zlib/contrib/qat/qatzpp/qat_instance.cpp | 135 ++++++++ deps/zlib/contrib/qat/qatzpp/qat_instance.hpp | 45 +++ deps/zlib/contrib/qat/qatzpp/qat_task.cpp | 58 ++++ deps/zlib/contrib/qat/qatzpp/qat_task.hpp | 54 +++ deps/zlib/contrib/qat/qatzpp/session.cpp | 129 ++++++++ deps/zlib/contrib/qat/qatzpp/session.hpp | 45 +++ deps/zlib/crc32.c | 5 + deps/zlib/deflate.c | 67 ++++ deps/zlib/deflate.h | 7 + 20 files changed, 1258 insertions(+) create mode 100644 deps/zlib/contrib/qat/deflate_qat.cpp create mode 100644 deps/zlib/contrib/qat/deflate_qat.h create mode 100644 deps/zlib/contrib/qat/qatzpp/io_buffers.cpp create mode 100644 deps/zlib/contrib/qat/qatzpp/io_buffers.h create mode 100644 deps/zlib/contrib/qat/qatzpp/memory.cpp create mode 100644 deps/zlib/contrib/qat/qatzpp/memory.hpp create mode 100644 deps/zlib/contrib/qat/qatzpp/qat.cpp create mode 100644 deps/zlib/contrib/qat/qatzpp/qat.hpp create mode 100644 deps/zlib/contrib/qat/qatzpp/qat_buffer_list.cpp create mode 100644 deps/zlib/contrib/qat/qatzpp/qat_buffer_list.hpp create mode 100644 deps/zlib/contrib/qat/qatzpp/qat_instance.cpp create mode 100644 deps/zlib/contrib/qat/qatzpp/qat_instance.hpp create mode 100644 deps/zlib/contrib/qat/qatzpp/qat_task.cpp create mode 100644 deps/zlib/contrib/qat/qatzpp/qat_task.hpp create mode 100644 deps/zlib/contrib/qat/qatzpp/session.cpp create mode 100644 deps/zlib/contrib/qat/qatzpp/session.hpp diff --git a/deps/zlib/CMakeLists.txt b/deps/zlib/CMakeLists.txt index 66f7d04966afa5..59d77c3a413628 100644 --- a/deps/zlib/CMakeLists.txt +++ b/deps/zlib/CMakeLists.txt @@ -24,6 +24,7 @@ check_include_file(stddef.h HAVE_STDDEF_H) option(ENABLE_SIMD_OPTIMIZATIONS "Enable all SIMD optimizations" OFF) option(ENABLE_SIMD_AVX512 "Enable SIMD AXV512 optimizations" OFF) option(USE_ZLIB_RABIN_KARP_HASH "Enable bitstream compatibility with canonical zlib" OFF) +option(ENABLE_INTEL_QAT_COMPRESSION "Enable Intel Quick Assist Technology use for compression" OFF) option(BUILD_UNITTESTS "Enable standalone unit tests build" OFF) option(BUILD_MINIZIP_BIN "Enable building minzip_bin tool" OFF) option(BUILD_ZPIPE "Enable building zpipe tool" OFF) @@ -228,6 +229,22 @@ if (ENABLE_SIMD_OPTIMIZATIONS) endif() endif() +if (ENABLE_INTEL_QAT_COMPRESSION) + list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/deflate_qat.cpp) + list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/qatzpp/io_buffers.cpp) + list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/qatzpp/memory.cpp) + list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/qatzpp/qat_buffer_list.cpp) + list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/qatzpp/qat.cpp) + list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/qatzpp/qat_instance.cpp) + list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/qatzpp/session.cpp) + list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/qatzpp/qat_task.cpp) + + # TODO(gustavoa): Find a way to include the qatzpp headers without having the + # presubmit check throw errors. + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/contrib/qat/qatzpp) + add_compile_definitions(QAT_COMPRESSION_ENABLED) +endif() + # parse the full version number from zlib.h and include in ZLIB_FULL_VERSION file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents) string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*" @@ -254,6 +271,15 @@ add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HD set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL) set_target_properties(zlib PROPERTIES SOVERSION 1) +if (ENABLE_INTEL_QAT_COMPRESSION) + target_include_directories(zlib PUBLIC ${QATZPP_INCLUDE_DIRS}) + target_link_libraries(zlib ${QATZPP_LIBRARY}) + target_link_libraries(zlib qat) + target_include_directories(zlibstatic PUBLIC ${QATZPP_INCLUDE_DIRS}) + target_link_libraries(zlibstatic ${QATZPP_LIBRARY}) + target_link_libraries(zlibstatic qat) +endif() + if(NOT CYGWIN) # This property causes shared libraries on Linux to have the full version # encoded into their final filename. We disable this on Cygwin because diff --git a/deps/zlib/contrib/qat/deflate_qat.cpp b/deps/zlib/contrib/qat/deflate_qat.cpp new file mode 100644 index 00000000000000..bfe45472bb51b1 --- /dev/null +++ b/deps/zlib/contrib/qat/deflate_qat.cpp @@ -0,0 +1,312 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#include "deflate_qat.h" +#include "deflate.h" + +#include "session.hpp" +#include "qat_instance.hpp" +#include "qat_buffer_list.hpp" +#include "qat.hpp" + +#include + +/* +* TODO(gustavoa): Make the input size adjustable from the memlevel +* attribute on deflateInit. +*/ +static constexpr size_t kInputSize = 1024 * 1024; + +/* QAT Instances obtained available from the library. */ +static std::vector> qat_instances; + +/* +* TODO(gustavoa): Verify if the ordering of the struct fields won't create +* unnecessary holes in the structure that requires extraneous padding. +*/ +struct qat_deflate { + std::unique_ptr qat_session; + + /* QAT requires contiguous physical pages. Cannot be allocated using + * malloc/new. + */ + uint8_t *input_buffer; + uint8_t *output_buffer; + + /* Pointer to the next byte in the output buffer. */ + uint8_t *pending_out; + + unsigned input_buffer_size; + unsigned output_buffer_size; + + unsigned pending_in_count; + unsigned pending_out_count; +}; + +static std::unique_ptr qat_create_session(int level, int wrap) +{ + CpaDcChecksum checksum = CPA_DC_NONE; + + switch(wrap) { + case 1: + checksum = CPA_DC_ADLER32; + break; + case 2: + checksum = CPA_DC_CRC32; + break; + } + + return std::make_unique( + qat_instances[0], + (CpaDcCompLvl)level, + checksum, + 0 + ); +} + + +int qat_deflate_init() +{ + return (qat::Initialize()) ? Z_ERRNO : Z_OK; +} + +struct qat_deflate* qat_deflate_state_init(int level, int wrap) +{ + if (qat_instances.empty()) { + qat_instances = qat::Instance::Create(); + } + if (qat_instances.empty()) { + return nullptr; + } + + struct qat_deflate *qat_deflate = new struct qat_deflate; + if (!qat_deflate) { + return nullptr; + } + + /* TODO(gustavoa): Find a way to utilize all the available instances for the same + * process. + */ + qat_instances[0]->Start(); + + qat_deflate->qat_session = qat_create_session(level, wrap); + + qat_deflate->input_buffer_size = kInputSize; + qat_deflate->input_buffer = qat::AllocBlockArray(kInputSize, 0); + qat_deflate->output_buffer_size = + qat_deflate->qat_session->GetDeflateBound(qat_deflate->input_buffer_size); + qat_deflate->pending_out = qat_deflate->output_buffer = + qat::AllocBlockArray(qat_deflate->output_buffer_size, 0); + + qat_deflate->pending_in_count = qat_deflate->pending_out_count = 0; + + if (!qat_deflate->input_buffer || !qat_deflate->output_buffer) { + return nullptr; + } + + return qat_deflate; +} + +static unsigned qat_read_buf(z_streamp strm, struct qat_deflate* qat, unsigned size) +{ + unsigned len = strm->avail_in; + + if (len > size) { + len = size; + } + if (len == 0) return 0; + + strm->avail_in -= len; + strm->total_in += len; + + zmemcpy( + qat->input_buffer + qat->pending_in_count, + strm->next_in, + len + ); + + strm->next_in += len; + qat->pending_in_count += len; + + return len; +} + +void qat_flush_pending(deflate_state* s) +{ + unsigned len; + z_streamp strm = s->strm; + struct qat_deflate* qat = s->qat_s; + + len = qat->pending_out_count; + if (len > strm->avail_out) len = strm->avail_out; + if (len == 0) return; + + zmemcpy(strm->next_out, qat->pending_out, len); + + qat->pending_out += len; + qat->pending_out_count -= len; + strm->next_out += len; + strm->avail_out -= len; + strm->total_out += len; + if (qat->pending_out_count == 0) { + qat->pending_out = qat->output_buffer; + } +} + +static int qat_compress_pending(deflate_state*s, int flush) +{ + struct qat_deflate* qat = s->qat_s; + uint32_t metadata_size; + + /* TODO(gustavoa): find a way to make qatzpp setup this number internally. */ + cpaDcBufferListGetMetaSize(qat->qat_session->getInstance()->GetHandle(), 1, &metadata_size); + + auto job = qat->qat_session->Deflate( + std::make_unique( + std::make_unique( + qat->input_buffer, + qat->pending_in_count, + metadata_size + ), + std::make_unique( + qat->output_buffer, + qat->output_buffer_size, + metadata_size + ) + ), (flush == Z_FINISH && s->strm->avail_in == 0) + ); + + job->WaitCompletion(); + + /* + * TODO(gustavoa): make QAT perform the checksum combine. + */ + if (s->wrap == 2) { + s->strm->adler = crc32_combine( + s->strm->adler, + job->GetResults()->checksum, + job->GetResults()->consumed + ); + } else if (s->wrap == 1) { + s->strm->adler = adler32( + s->strm->adler, + qat->input_buffer, + job->GetResults()->consumed + ); + } + + qat->pending_out_count = job->GetResults()->produced; + qat->pending_in_count -= job->GetResults()->consumed; + + if(qat->pending_in_count != 0) { + /* Copy any remaining bytes to the beginning of the buffer. */ + zmemcpy( + qat->input_buffer, + qat->input_buffer + job->GetResults()->consumed, + qat->pending_in_count + ); + } + + return 0; +} + +qat_block_state qat_deflate_step(deflate_state* s, int flush) +{ + z_streamp strm = s->strm; + struct qat_deflate* qat_state = s->qat_s; + + for (;;) { + if (qat_state->pending_in_count < qat_state->input_buffer_size) { + qat_read_buf( + strm, + qat_state, + qat_state->input_buffer_size - qat_state->pending_in_count + ); + if (qat_state->pending_in_count < qat_state->input_buffer_size && flush == Z_NO_FLUSH) { + return qat_block_need_more; + } else { + qat_compress_pending(s, flush); + } + if (strm->avail_in == 0) { + break; + } + } else { + qat_compress_pending(s, flush); + } + + qat_flush_pending(s); + if (strm->avail_out == 0) { + return (flush == Z_FINISH) ? qat_block_finish_started : qat_block_need_more; + } + } + + if (flush == Z_FINISH) { + qat_flush_pending(s); + if (strm->avail_out == 0) { + return qat_block_finish_started; + } else { + return qat_block_finish_done; + } + } + + qat_flush_pending(s); + if (strm->avail_out == 0) { + return qat_block_done; + } + + return qat_block_need_more; +} + +int qat_deflate_state_free(deflate_state* s) +{ + struct qat_deflate* qat_state = s->qat_s; + if (qat_state->input_buffer) { + qat::Free(qat_state->input_buffer); + } + if (qat_state->output_buffer) { + qat::Free(qat_state->output_buffer); + } + + qat_state->qat_session.reset(); + delete qat_state; + s->qat_s = nullptr; + + return Z_OK; +} + +struct qat_deflate *qat_deflate_copy(deflate_state *ss) +{ + struct qat_deflate *sqat = ss->qat_s; + struct qat_deflate *dqat = nullptr; + + if (!sqat) { + return nullptr; + } + + dqat = new struct qat_deflate; + + dqat->qat_session = qat_create_session(ss->level, ss->wrap); + + dqat->input_buffer_size = sqat->input_buffer_size; + dqat->input_buffer = qat::AllocBlockArray(dqat->input_buffer_size, 0); + + dqat->output_buffer_size = sqat->output_buffer_size; + dqat->output_buffer = qat::AllocBlockArray(dqat->output_buffer_size, 0); + + dqat->pending_in_count = sqat->pending_in_count; + dqat->pending_out_count = sqat->pending_out_count; + + dqat->pending_out = + dqat->output_buffer + (sqat->pending_out - sqat->output_buffer); + + zmemcpy(dqat->input_buffer, sqat->input_buffer, dqat->input_buffer_size); + zmemcpy(dqat->output_buffer, sqat->output_buffer, dqat->output_buffer_size); + + return dqat; +} + diff --git a/deps/zlib/contrib/qat/deflate_qat.h b/deps/zlib/contrib/qat/deflate_qat.h new file mode 100644 index 00000000000000..3c7aa116b7dc70 --- /dev/null +++ b/deps/zlib/contrib/qat/deflate_qat.h @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#ifndef DEFLATE_QAT_H +#define DEFLATE_QAT_H + +#include "deflate.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a 1:1 mapping of the block states that deflate_fast, deflate_slow, + * deflate_rle, etc.. return. + * The added 'qat_failure' value is used for signaling the caller to revert + * back into software mode. + */ +typedef enum { + qat_block_need_more, + qat_block_done, + qat_block_finish_started, + qat_block_finish_done, + qat_failure +} qat_block_state; + +/* Initialize QAT for the calling process if it has not been yet initialized. */ +int qat_deflate_init(); + +/* Initialize a QAT stream state for a deflate_state object. */ +struct qat_deflate *qat_deflate_state_init(int level, int wra); + +/* Flush QAT output buffer into the zstream.next_out pointer. */ +void qat_flush_pending(deflate_state*); + +/* Compresses/copies/flushes any data in the internal QAT state + * input/output buffers. +*/ +qat_block_state qat_deflate_step(deflate_state*, int flush); + +/* Frees all the QAT-related buffers and objects for a given deflate_state. */ +int qat_deflate_state_free(deflate_state*); + +struct qat_deflate *qat_deflate_copy(deflate_state *ss); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/io_buffers.cpp b/deps/zlib/contrib/qat/qatzpp/io_buffers.cpp new file mode 100644 index 00000000000000..2870292be17251 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/io_buffers.cpp @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#include +#include + +#include "io_buffers.h" +#include "qat_instance.hpp" + +namespace qat +{ + +IOBuffers::IOBuffers() +{ +} + +IOBuffers::IOBuffers(std::unique_ptr&& src_list, std::unique_ptr&& dst_list): + src_buffer_list_(std::move(src_list)), dst_buffer_list_(std::move(dst_list)) +{ +} + +IOBuffers::~IOBuffers() +{ +} + +} diff --git a/deps/zlib/contrib/qat/qatzpp/io_buffers.h b/deps/zlib/contrib/qat/qatzpp/io_buffers.h new file mode 100644 index 00000000000000..9fe8bfdbc336c8 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/io_buffers.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#ifndef QATZPP_IO_BUFFERS_H +#define QATZPP_IO_BUFFERS_H + +#include + +#include +#include +#include +#include +#include + +#include "memory.hpp" +#include "qat_instance.hpp" + +namespace qat +{ + +struct BaseBufferList +{ + virtual ~BaseBufferList() {} + + CpaBufferList list; + std::vector flat_buffers; + +protected: + BaseBufferList() {} +}; + +class IOBuffers +{ +public: + IOBuffers( + std::unique_ptr &&src_list, + std::unique_ptr &&dst_list + ); + virtual ~IOBuffers(); + + BaseBufferList *GetSrc() const { + return src_buffer_list_.get(); + } + + BaseBufferList *GetDst() const { + return dst_buffer_list_.get(); + } +protected: + IOBuffers(); + + std::unique_ptr src_buffer_list_; + std::unique_ptr dst_buffer_list_; +}; + +} + +#endif \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/memory.cpp b/deps/zlib/contrib/qat/qatzpp/memory.cpp new file mode 100644 index 00000000000000..6a97ffe2fdfcdb --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/memory.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#include + +#include +#include + +#include "memory.hpp" +#include "qat.hpp" + +namespace qat +{ + +void *Alloc(size_t size_bytes, uint32_t numa_node) +{ + return qaeMemAllocNUMA(size_bytes, numa_node, 1); +} + +void Free(void *ptr) +{ + qaeMemFreeNUMA(&ptr); +} + +} \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/memory.hpp b/deps/zlib/contrib/qat/qatzpp/memory.hpp new file mode 100644 index 00000000000000..191516ca75dd20 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/memory.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#ifndef QATZPP_MEMORY_HPP +#define QATZPP_MEMORY_HPP + +#include +#include + +namespace qat +{ + +void *Alloc(size_t sizeBytes, uint32_t numa_node); + +template +T *AllocBlock(int32_t numa_node) +{ + return static_cast(Alloc(sizeof(T), numa_node)); +} + +template +T *AllocBlockArray(size_t count, int32_t numa_node) +{ + if (count <= 0) { + return nullptr; + } + + return static_cast(Alloc(sizeof(T) * count, numa_node)); +} + +void Free(void *ptr); + +} + +#endif \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/qat.cpp b/deps/zlib/contrib/qat/qatzpp/qat.cpp new file mode 100644 index 00000000000000..80468d395151f3 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/qat.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#include "qat.hpp" + +#include +#include +#include + +#include +#include +#include +#include + +namespace qat +{ + +static bool g_qat_not_available = false; +static bool g_qat_initialized = false; +static std::mutex g_qat_initialization_mutex; + +class QATContext +{ +public: + explicit QATContext() {} + + QATContext(const QATContext &) = delete; + QATContext &operator=(const QATContext &) = delete; + + QATContext(QATContext &&) = delete; + QATContext &operator=(QATContext &&) = delete; + + ~QATContext() + { + std::lock_guard lock(g_qat_initialization_mutex); + + if (g_qat_not_available) return; + + if (g_qat_initialized) { + icp_sal_userStop(); + g_qat_initialized = false; + } + } +}; + +static std::unique_ptr qat_context; + +int Initialize() +{ + std::lock_guard lock(g_qat_initialization_mutex); + uint32_t cpa_state; + if (g_qat_not_available) { + return CPA_STATUS_FAIL; + } + if (g_qat_initialized) { + return CPA_STATUS_SUCCESS; + } + + cpa_state = icp_sal_userStartMultiProcess("SSL", CPA_FALSE); + + g_qat_not_available = (cpa_state != CPA_STATUS_SUCCESS); + g_qat_initialized = (cpa_state == CPA_STATUS_SUCCESS); + + qat_context = std::make_unique(); + return cpa_state; +} + +} diff --git a/deps/zlib/contrib/qat/qatzpp/qat.hpp b/deps/zlib/contrib/qat/qatzpp/qat.hpp new file mode 100644 index 00000000000000..8ee7746b5efd04 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/qat.hpp @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#ifndef QATZPP_QAT_HPP +#define QATZPP_QAT_HPP + +namespace qat +{ + +int Initialize(); + +} + +#endif \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/qat_buffer_list.cpp b/deps/zlib/contrib/qat/qatzpp/qat_buffer_list.cpp new file mode 100644 index 00000000000000..f0eea4908a54ff --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/qat_buffer_list.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#include "qat_buffer_list.hpp" + +namespace qat +{ + +BufferListUser::BufferListUser( + uint8_t *data, + size_t size, + size_t metadata_size) +{ + flat_buffers = std::vector(1); + flat_buffers[0].pData = data; + flat_buffers[0].dataLenInBytes = size; + list.pPrivateMetaData = AllocBlockArray(metadata_size, 0); + list.numBuffers = 1; + list.pBuffers = flat_buffers.data(); +} + +BufferListUser::~BufferListUser() +{ + if (list.pPrivateMetaData) { + Free(list.pPrivateMetaData); + } +} + +} diff --git a/deps/zlib/contrib/qat/qatzpp/qat_buffer_list.hpp b/deps/zlib/contrib/qat/qatzpp/qat_buffer_list.hpp new file mode 100644 index 00000000000000..2a28175e18dc58 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/qat_buffer_list.hpp @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#ifndef QATZPP_QAT_BUFFER_LIST_HPP +#define QATZPP_QAT_BUFFER_LIST_HPP + +#include + +#include "io_buffers.h" + +namespace qat +{ + +struct BufferListUser final : public BaseBufferList +{ + BufferListUser( + uint8_t *data, + size_t size, + size_t metadata_size + ); + + ~BufferListUser() override; +}; + +} + +#endif \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/qat_instance.cpp b/deps/zlib/contrib/qat/qatzpp/qat_instance.cpp new file mode 100644 index 00000000000000..5b833c2ce7e2dd --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/qat_instance.cpp @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#include + +#include +#include + +#include "memory.hpp" +#include "qat_instance.hpp" +#include "session.hpp" + +#define MAX_SAMPLE_BUFFER_SIZE (4*1024*1024) + +namespace qat +{ + +static std::mutex g_instance_mutex; +static std::vector> instances; + +static CpaPhysicalAddr virt2Phys(void *virt_addr) +{ + return (CpaPhysicalAddr)qaeVirtToPhysNUMA(virt_addr); +} + +Instance::Instance(CpaInstanceHandle instance): + instance_(instance), + num_intermediate_buffer_lists_(0), + intermediate_buffer_array_(nullptr), + started_(false) +{ + CpaDcInstanceCapabilities caps{}; + cpaDcQueryCapabilities(instance_, &caps); + + if (!caps.statelessDeflateCompression || !caps.statelessDeflateDecompression || + !caps.checksumAdler32 || !caps.dynamicHuffman) + { + return; + } + + if (caps.dynamicHuffmanBufferReq) { + uint32_t buffer_metadata_size; + cpaDcBufferListGetMetaSize(instance_, 1, &buffer_metadata_size); + cpaDcGetNumIntermediateBuffers(instance_, &num_intermediate_buffer_lists_); + + if(num_intermediate_buffer_lists_) { + intermediate_buffer_array_ = AllocBlockArray(num_intermediate_buffer_lists_, 0); + } + for (int i = 0; i < num_intermediate_buffer_lists_; ++i) { + intermediate_buffer_array_[i] = AllocBlock(0); + intermediate_buffer_array_[i]->pPrivateMetaData = + AllocBlockArray(buffer_metadata_size, 0); + intermediate_buffer_array_[i]->pBuffers = AllocBlock(0); + intermediate_buffer_array_[i]->pBuffers->pData = + AllocBlockArray(MAX_SAMPLE_BUFFER_SIZE, 0); + intermediate_buffer_array_[i]->pBuffers->dataLenInBytes = MAX_SAMPLE_BUFFER_SIZE; + } + } + + cpaDcSetAddressTranslation(instance_, virt2Phys); +} + +Instance::~Instance() +{ +} + +CpaDcInstanceCapabilities Instance::GetCapabilities() +{ + CpaDcInstanceCapabilities caps{}; + cpaDcQueryCapabilities(instance_, &caps); + + return caps; +} + +CpaInstanceInfo2 Instance::GetInfo() +{ + CpaInstanceInfo2 info{}; + cpaDcInstanceGetInfo2(instance_, &info); + + return info; +} + +int Instance::Start() +{ + std::lock_guard lock(mutex_); + + if (started_) { + return 0; + } + + int ret = cpaDcStartInstance + ( + instance_, + num_intermediate_buffer_lists_, + intermediate_buffer_array_ + ); + if (ret) { + return -1; + } + started_ = true; + return 0; +} + +std::vector> Instance::Create() +{ + std::lock_guard lock(g_instance_mutex); + uint16_t num_instances = 0; + + if (!instances.empty()) { + return instances; + } + + cpaDcGetNumInstances(&num_instances); + + if (!num_instances) { + std::cerr << "No instances found\n"; + return {}; + } + + std::vector handles(num_instances); + cpaDcGetInstances(num_instances, handles.data()); + + for(auto& handle: handles) { + instances.emplace_back(std::make_shared(handle)); + } + + return instances; +} + +} diff --git a/deps/zlib/contrib/qat/qatzpp/qat_instance.hpp b/deps/zlib/contrib/qat/qatzpp/qat_instance.hpp new file mode 100644 index 00000000000000..1a2b4afcab10f1 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/qat_instance.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#ifndef QATZPP_QAT_INSTANCE_HPP +#define QATZPP_QAT_INSTANCE_HPP + +#include + +#include +#include +#include + +namespace qat +{ + +class Instance +{ +public: + Instance(CpaInstanceHandle); + ~Instance(); + + CpaInstanceHandle GetHandle() { return instance_; } + CpaDcInstanceCapabilities GetCapabilities(); + CpaInstanceInfo2 GetInfo(); + + int Start(void); + static std::vector> Create(); +private: + + CpaInstanceHandle instance_; + uint16_t num_intermediate_buffer_lists_; + CpaBufferList **intermediate_buffer_array_; + bool started_; + + std::mutex mutex_; +}; + +} + +#endif \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/qat_task.cpp b/deps/zlib/contrib/qat/qatzpp/qat_task.cpp new file mode 100644 index 00000000000000..a53ea94ac95a16 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/qat_task.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#include +#include + +#include "qat_task.hpp" + +namespace qat +{ + +QATTask::QATTask(std::shared_ptr &qat_instance, + std::unique_ptr &&buffers, + std::unique_ptr &&dc_results): + qat_instance_(qat_instance), + io_buffers_(std::move(buffers)), + dc_results_(std::move(dc_results)), + completed_(false) +{ +} + +void QATTask::WaitCompletion() +{ + if (completed_) { + return; + } + + while (!completed_) { + icp_sal_DcPollInstance(qat_instance_->GetHandle(), 0); + } +} + +IOBuffers *QATTask::GetBuffers() +{ + return io_buffers_.get(); +} + +CpaDcRqResults *QATTask::GetResults() +{ + return dc_results_.get(); +} + +void dc_callback(void *callback_tag, CpaStatus status) +{ + if (!callback_tag) { + return; + } + // Ugly and dangerous + QATTask* task = static_cast(callback_tag); + task->completed_ = true; +} + +} \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/qat_task.hpp b/deps/zlib/contrib/qat/qatzpp/qat_task.hpp new file mode 100644 index 00000000000000..3950502f50d7e7 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/qat_task.hpp @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#ifndef QATZPP_WORK_HPP +#define QATZPP_WORK_HPP + +#include + +#include + +#include "io_buffers.h" + +namespace qat +{ + +class QATTask +{ +public: + explicit QATTask(std::shared_ptr &qat_instance, + std::unique_ptr &&, + std::unique_ptr &&dc_results); + + QATTask(QATTask &&) = delete; + QATTask& operator=(QATTask &&) = delete; + + QATTask(const QATTask &) = delete; + QATTask &operator=(const QATTask &) = delete; + + void WaitCompletion(); + + IOBuffers *GetBuffers(); + CpaDcRqResults *GetResults(); + +private: + bool completed_; + + std::shared_ptr qat_instance_; + + std::unique_ptr dc_results_; + std::unique_ptr io_buffers_; + + friend void dc_callback(void *, CpaStatus); +}; + +void dc_callback(void*, CpaStatus); + +} + +#endif \ No newline at end of file diff --git a/deps/zlib/contrib/qat/qatzpp/session.cpp b/deps/zlib/contrib/qat/qatzpp/session.cpp new file mode 100644 index 00000000000000..b4cefb31e85008 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/session.cpp @@ -0,0 +1,129 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#include +#include + +#include "memory.hpp" +#include "session.hpp" + +namespace qat +{ + +constexpr CpaDcHuffType kHuffType = CPA_DC_HT_FULL_DYNAMIC; + +DeflateSession::DeflateSession( + std::shared_ptr &qat_instance, + CpaDcCompLvl comp_level, CpaDcChecksum checksum, + uint32_t numa_node): + qat_instance_(qat_instance) +{ + uint32_t session_size = 0; + uint32_t ctx_size = 0; + + CpaDcSessionSetupData sd{}; + sd.compLevel = comp_level; + sd.compType = CPA_DC_DEFLATE; + sd.huffType = kHuffType; + sd.autoSelectBestHuffmanTree = CPA_DC_ASB_UNCOMP_STATIC_DYNAMIC_WITH_STORED_HDRS; + sd.sessDirection = CPA_DC_DIR_COMBINED; + sd.sessState = CPA_DC_STATELESS; + sd.checksum = checksum; + + cpaDcGetSessionSize(qat_instance_->GetHandle(), &sd, &session_size, &ctx_size); + session_ = AllocBlockArray(session_size, numa_node); + + cpaDcInitSession( + qat_instance_->GetHandle(), + session_, + &sd, + nullptr, // No context for stateless operations + &dc_callback + ); + +} + +DeflateSession::~DeflateSession() +{ + if (session_) { + cpaDcRemoveSession(qat_instance_->GetHandle(), session_); + Free(session_); + } + + session_ = nullptr; +} + +std::unique_ptr DeflateSession::Deflate( + std::unique_ptr &&buffers, + bool flush_final) +{ + CpaDcOpData op_data{}; + op_data.flushFlag = (flush_final) ? + CPA_DC_FLUSH_FINAL : CPA_DC_FLUSH_FULL; + op_data.compressAndVerify = CPA_TRUE; + op_data.inputSkipData.skipMode = CPA_DC_SKIP_DISABLED; + op_data.outputSkipData.skipMode = CPA_DC_SKIP_DISABLED; + + auto task = std::make_unique( + qat_instance_, std::move(buffers), + std::make_unique() + ); + + cpaDcCompressData2( + qat_instance_->GetHandle(), + session_, + &task->GetBuffers()->GetSrc()->list, + &task->GetBuffers()->GetDst()->list, + &op_data, + task->GetResults(), + static_cast(task.get()) + ); + + return std::move(task); +} + +std::unique_ptr DeflateSession::Inflate(std::unique_ptr &&buffers) +{ + CpaDcOpData op_data = {}; + op_data.flushFlag = CPA_DC_FLUSH_FINAL; + op_data.compressAndVerify = CPA_TRUE; + op_data.inputSkipData.skipMode = CPA_DC_SKIP_DISABLED; + op_data.outputSkipData.skipMode = CPA_DC_SKIP_DISABLED; + + auto task = std::make_unique( + qat_instance_, std::move(buffers), + std::make_unique() + ); + + cpaDcDecompressData2( + qat_instance_->GetHandle(), + session_, + &task->GetBuffers()->GetSrc()->list, + &task->GetBuffers()->GetDst()->list, + &op_data, + task->GetResults(), + static_cast(task.get()) + ); + + return std::move(task); +} + +uint32_t DeflateSession::GetDeflateBound(uint32_t input_size) +{ + uint32_t output_size = 0; + + cpaDcDeflateCompressBound( + qat_instance_->GetHandle(), + kHuffType, + input_size, &output_size + ); + + return output_size; +} + +} diff --git a/deps/zlib/contrib/qat/qatzpp/session.hpp b/deps/zlib/contrib/qat/qatzpp/session.hpp new file mode 100644 index 00000000000000..c8af47c27c2231 --- /dev/null +++ b/deps/zlib/contrib/qat/qatzpp/session.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2024 Intel Corporation. All rights reserved. + * Authors: + * Gustavo A Espinoza + * + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ +#ifndef QATZPP_SESSION_HPP +#define QATZPP_SESSION_HPP + +#include +#include + +#include + +#include "io_buffers.h" +#include "qat_task.hpp" + +namespace qat +{ + +class DeflateSession +{ +public: + DeflateSession( + std::shared_ptr &, CpaDcCompLvl, + CpaDcChecksum, uint32_t numa_node); + ~DeflateSession(); + + std::unique_ptr Deflate(std::unique_ptr &&buffers, bool flush_final); + std::unique_ptr Inflate(std::unique_ptr &&buffers); + + uint32_t GetDeflateBound(uint32_t input_size); + + std::shared_ptr getInstance() { return qat_instance_; } + +private: + std::shared_ptr qat_instance_; + CpaDcSessionHandle session_; +}; + +} + +#endif \ No newline at end of file diff --git a/deps/zlib/crc32.c b/deps/zlib/crc32.c index 4177e920a479df..204aa1ad0c445a 100644 --- a/deps/zlib/crc32.c +++ b/deps/zlib/crc32.c @@ -1168,6 +1168,11 @@ ZLIB_INTERNAL void crc_reset(deflate_state *const s) ZLIB_INTERNAL void crc_finalize(deflate_state *const s) { +#ifdef QAT_COMPRESSION_ENABLED + if (s->qat_s) { + return; + } +#endif #ifdef CRC32_SIMD_SSE42_PCLMUL if (x86_cpu_enable_simd) s->strm->adler = crc_fold_512to32(s); diff --git a/deps/zlib/deflate.c b/deps/zlib/deflate.c index b9a312030464c7..8a5281c2b6cd8d 100644 --- a/deps/zlib/deflate.c +++ b/deps/zlib/deflate.c @@ -57,6 +57,10 @@ #include "slide_hash_simd.h" #endif +#if defined(QAT_COMPRESSION_ENABLED) +#include "contrib/qat/deflate_qat.h" +#endif + #include "contrib/optimizations/insert_string.h" #ifdef FASTEST @@ -564,6 +568,13 @@ int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, s->strategy = strategy; s->method = (Byte)method; +#if defined(QAT_COMPRESSION_ENABLED) + s->qat_s = NULL; + if (s->level && qat_deflate_init() == Z_OK) { + s->qat_s = qat_deflate_state_init(s->level, s->wrap); + } +#endif + return deflateReset(strm); } @@ -962,6 +973,12 @@ local void flush_pending(z_streamp strm) { unsigned len; deflate_state *s = strm->state; +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_flush_pending(s); + } +#endif + _tr_flush_bits(s); len = s->pending; if (len > strm->avail_out) len = strm->avail_out; @@ -1315,6 +1332,12 @@ int ZEXPORT deflateEnd(z_streamp strm) { TRY_FREE(strm, strm->state->prev); TRY_FREE(strm, strm->state->window); +#if defined(QAT_COMPRESSION_ENABLED) + if (strm->state->qat_s) { + qat_deflate_state_free(strm->state); + } +#endif + ZFREE(strm, strm->state); strm->state = Z_NULL; @@ -1389,6 +1412,14 @@ int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { ds->d_desc.dyn_tree = ds->dyn_dtree; ds->bl_desc.dyn_tree = ds->bl_tree; +#if defined(QAT_COMPRESSION_ENABLED) + if(ss->qat_s) { + ds->qat_s = qat_deflate_copy(ss); + if (!ds->qat_s) + return Z_MEM_ERROR; + } +#endif + return Z_OK; #endif /* MAXSEG_64K */ } @@ -1880,6 +1911,24 @@ local block_state deflate_fast(deflate_state *s, int flush) { IPos hash_head; /* head of the hash chain */ int bflush; /* set if current block must be flushed */ +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_block_state qat_block = qat_deflate_step(s, flush); + switch (qat_block) { + case qat_block_need_more: + return need_more; + case qat_block_done: + return block_done; + case qat_block_finish_started: + return finish_started; + case qat_block_finish_done: + return finish_done; + case qat_failure: + break; + } + } +#endif + for (;;) { /* Make sure that we always have enough lookahead, except * at the end of the input file. We need MAX_MATCH bytes @@ -1982,6 +2031,24 @@ local block_state deflate_slow(deflate_state *s, int flush) { IPos hash_head; /* head of hash chain */ int bflush; /* set if current block must be flushed */ +#if defined(QAT_COMPRESSION_ENABLED) + if (s->qat_s) { + qat_block_state qat_block = qat_deflate_step(s, flush); + switch (qat_block) { + case qat_block_need_more: + return need_more; + case qat_block_done: + return block_done; + case qat_block_finish_started: + return finish_started; + case qat_block_finish_done: + return finish_done; + case qat_failure: + break; + } + } +#endif + /* Process the input block. */ for (;;) { /* Make sure that we always have enough lookahead, except diff --git a/deps/zlib/deflate.h b/deps/zlib/deflate.h index eb7f0724015cc7..099d35943192bf 100644 --- a/deps/zlib/deflate.h +++ b/deps/zlib/deflate.h @@ -282,6 +282,13 @@ typedef struct internal_state { * hash is enabled. */ +#if defined(QAT_COMPRESSION_ENABLED) + /* Pointer to a struct that contains the current state of the QAT + * stream. + */ + struct qat_deflate *qat_s; +#endif + } FAR deflate_state; /* Output a byte on the stream. From 11242bcfb4f58929e2263e59c019b64fe3f63a4a Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 4 Aug 2024 00:29:29 +0000 Subject: [PATCH 61/76] deps: update zlib to 1.3.0.1-motley-71660e1 PR-URL: https://github.com/nodejs/node/pull/53464 Reviewed-By: Chemi Atlow Reviewed-By: Marco Ippolito Reviewed-By: Rafael Gonzaga Reviewed-By: James M Snell --- deps/zlib/crc32_simd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/zlib/crc32_simd.c b/deps/zlib/crc32_simd.c index cbe9739578c943..1c60ae9bd3c118 100644 --- a/deps/zlib/crc32_simd.c +++ b/deps/zlib/crc32_simd.c @@ -398,7 +398,7 @@ uint32_t ZLIB_INTERNAL crc32_sse42_simd_( /* SSE4.2+PCLMUL */ */ #include #include -#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+crc"))) +#define TARGET_ARMV8_WITH_CRC __attribute__((target("arch=armv8-a+crc+crypto"))) #else // !defined(__GNUC__) && !defined(_aarch64__) #error ARM CRC32 SIMD extensions only supported for Clang and GCC #endif From 96ec48da7f37774bdab1b3594bbf563346c04936 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Wed, 27 Dec 2023 08:29:54 +0200 Subject: [PATCH 62/76] deps: update brotli to 1.1.0 PR-URL: https://github.com/nodejs/node/pull/50804 Reviewed-By: Luigi Pinca --- deps/brotli/brotli.gyp | 2 + deps/brotli/c/common/constants.c | 2 +- deps/brotli/c/common/constants.h | 3 +- deps/brotli/c/common/context.c | 2 +- deps/brotli/c/common/dictionary.bin | 432 ------ deps/brotli/c/common/dictionary.bin.br | Bin 51687 -> 0 bytes deps/brotli/c/common/dictionary.c | 8 +- deps/brotli/c/common/platform.c | 3 +- deps/brotli/c/common/platform.h | 173 +-- deps/brotli/c/common/shared_dictionary.c | 521 +++++++ .../c/common/shared_dictionary_internal.h | 75 + deps/brotli/c/common/transform.c | 2 +- deps/brotli/c/common/version.h | 37 +- deps/brotli/c/dec/bit_reader.c | 18 +- deps/brotli/c/dec/bit_reader.h | 272 ++-- deps/brotli/c/dec/decode.c | 667 ++++++--- deps/brotli/c/dec/huffman.c | 11 +- deps/brotli/c/dec/huffman.h | 3 +- deps/brotli/c/dec/prefix.h | 3 +- deps/brotli/c/dec/state.c | 42 +- deps/brotli/c/dec/state.h | 105 +- deps/brotli/c/enc/backward_references.c | 100 +- deps/brotli/c/enc/backward_references.h | 9 +- deps/brotli/c/enc/backward_references_hq.c | 200 ++- deps/brotli/c/enc/backward_references_hq.h | 11 +- deps/brotli/c/enc/backward_references_inc.h | 36 +- deps/brotli/c/enc/bit_cost.c | 15 +- deps/brotli/c/enc/bit_cost.h | 9 +- deps/brotli/c/enc/block_splitter.c | 51 +- deps/brotli/c/enc/block_splitter.h | 9 +- deps/brotli/c/enc/block_splitter_inc.h | 131 +- deps/brotli/c/enc/brotli_bit_stream.c | 242 +-- deps/brotli/c/enc/brotli_bit_stream.h | 17 +- deps/brotli/c/enc/cluster.c | 19 +- deps/brotli/c/enc/cluster.h | 13 +- deps/brotli/c/enc/cluster_inc.h | 45 +- deps/brotli/c/enc/command.c | 2 +- deps/brotli/c/enc/command.h | 9 +- deps/brotli/c/enc/compound_dictionary.c | 207 +++ deps/brotli/c/enc/compound_dictionary.h | 74 + deps/brotli/c/enc/compress_fragment.c | 176 +-- deps/brotli/c/enc/compress_fragment.h | 39 +- .../brotli/c/enc/compress_fragment_two_pass.c | 186 +-- .../brotli/c/enc/compress_fragment_two_pass.h | 24 +- deps/brotli/c/enc/dictionary_hash.c | 4 +- deps/brotli/c/enc/encode.c | 877 ++++++----- deps/brotli/c/enc/encoder_dict.c | 615 +++++++- deps/brotli/c/enc/encoder_dict.h | 120 +- deps/brotli/c/enc/entropy_encode.c | 5 +- deps/brotli/c/enc/entropy_encode.h | 3 +- deps/brotli/c/enc/entropy_encode_static.h | 7 +- deps/brotli/c/enc/fast_log.c | 2 +- deps/brotli/c/enc/fast_log.h | 3 +- deps/brotli/c/enc/find_match_length.h | 37 +- deps/brotli/c/enc/hash.h | 330 ++++- deps/brotli/c/enc/hash_composite_inc.h | 37 +- deps/brotli/c/enc/hash_forgetful_chain_inc.h | 38 +- deps/brotli/c/enc/hash_longest_match64_inc.h | 73 +- deps/brotli/c/enc/hash_longest_match_inc.h | 16 +- .../c/enc/hash_longest_match_quickly_inc.h | 8 +- deps/brotli/c/enc/hash_rolling_inc.h | 8 +- deps/brotli/c/enc/hash_to_binary_tree_inc.h | 11 +- deps/brotli/c/enc/histogram.c | 8 +- deps/brotli/c/enc/histogram.h | 13 +- deps/brotli/c/enc/literal_cost.c | 35 +- deps/brotli/c/enc/literal_cost.h | 6 +- deps/brotli/c/enc/memory.c | 34 +- deps/brotli/c/enc/memory.h | 21 +- deps/brotli/c/enc/metablock.c | 130 +- deps/brotli/c/enc/metablock.h | 17 +- deps/brotli/c/enc/metablock_inc.h | 14 +- deps/brotli/c/enc/params.h | 7 +- deps/brotli/c/enc/prefix.h | 5 +- deps/brotli/c/enc/quality.h | 43 +- deps/brotli/c/enc/ringbuffer.h | 7 +- deps/brotli/c/enc/state.h | 104 ++ deps/brotli/c/enc/static_dict.c | 64 +- deps/brotli/c/enc/static_dict.h | 5 +- deps/brotli/c/enc/static_dict_lut.h | 2 + deps/brotli/c/enc/utf8_util.c | 2 +- deps/brotli/c/enc/utf8_util.h | 3 +- deps/brotli/c/enc/write_bits.h | 3 +- deps/brotli/c/include/brotli/decode.h | 69 +- deps/brotli/c/include/brotli/encode.h | 57 +- deps/brotli/c/include/brotli/port.h | 39 +- .../c/include/brotli/shared_dictionary.h | 100 ++ deps/brotli/c/tools/brotli.c | 1319 +++++++++++++++++ deps/brotli/c/tools/brotli.md | 108 ++ 88 files changed, 6284 insertions(+), 2130 deletions(-) delete mode 100644 deps/brotli/c/common/dictionary.bin delete mode 100644 deps/brotli/c/common/dictionary.bin.br create mode 100644 deps/brotli/c/common/shared_dictionary.c create mode 100644 deps/brotli/c/common/shared_dictionary_internal.h create mode 100644 deps/brotli/c/enc/compound_dictionary.c create mode 100644 deps/brotli/c/enc/compound_dictionary.h create mode 100644 deps/brotli/c/enc/state.h create mode 100644 deps/brotli/c/include/brotli/shared_dictionary.h create mode 100644 deps/brotli/c/tools/brotli.c create mode 100644 deps/brotli/c/tools/brotli.md diff --git a/deps/brotli/brotli.gyp b/deps/brotli/brotli.gyp index 2e6ab9bde3d1b7..a5bf01a0a53141 100644 --- a/deps/brotli/brotli.gyp +++ b/deps/brotli/brotli.gyp @@ -33,6 +33,7 @@ 'c/common/context.c', 'c/common/dictionary.c', 'c/common/platform.c', + 'c/common/shared_dictionary.c', 'c/common/transform.c', # Decoder @@ -49,6 +50,7 @@ 'c/enc/brotli_bit_stream.c', 'c/enc/cluster.c', 'c/enc/command.c', + 'c/enc/compound_dictionary.c', 'c/enc/compress_fragment.c', 'c/enc/compress_fragment_two_pass.c', 'c/enc/dictionary_hash.c', diff --git a/deps/brotli/c/common/constants.c b/deps/brotli/c/common/constants.c index 6bad9f613ca5d4..89866b150503c6 100644 --- a/deps/brotli/c/common/constants.c +++ b/deps/brotli/c/common/constants.c @@ -4,7 +4,7 @@ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT */ -#include "./constants.h" +#include "constants.h" const BrotliPrefixCodeRange _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS] = { diff --git a/deps/brotli/c/common/constants.h b/deps/brotli/c/common/constants.h index e848195a0dc20f..31e5bd376e90fc 100644 --- a/deps/brotli/c/common/constants.h +++ b/deps/brotli/c/common/constants.h @@ -12,10 +12,11 @@ #ifndef BROTLI_COMMON_CONSTANTS_H_ #define BROTLI_COMMON_CONSTANTS_H_ -#include "./platform.h" #include #include +#include "platform.h" + /* Specification: 7.3. Encoding of the context map */ #define BROTLI_CONTEXT_MAP_MAX_RLE 16 diff --git a/deps/brotli/c/common/context.c b/deps/brotli/c/common/context.c index 2c2dceba9b6229..7f9c95869917b3 100644 --- a/deps/brotli/c/common/context.c +++ b/deps/brotli/c/common/context.c @@ -1,4 +1,4 @@ -#include "./context.h" +#include "context.h" #include diff --git a/deps/brotli/c/common/dictionary.bin b/deps/brotli/c/common/dictionary.bin deleted file mode 100644 index a585c0e292eba1..00000000000000 --- a/deps/brotli/c/common/dictionary.bin +++ /dev/null @@ -1,432 +0,0 @@ -timedownlifeleftbackcodedatashowonlysitecityopenjustlikefreeworktextyearoverbodyloveformbookplaylivelinehelphomesidemorewordlongthemviewfindpagedaysfullheadtermeachareafromtruemarkableuponhighdatelandnewsevennextcasebothpostusedmadehandherewhatnameLinkblogsizebaseheldmakemainuser') +holdendswithNewsreadweresigntakehavegameseencallpathwellplusmenufilmpartjointhislistgoodneedwayswestjobsmindalsologorichuseslastteamarmyfoodkingwilleastwardbestfirePageknowaway.pngmovethanloadgiveselfnotemuchfeedmanyrockicononcelookhidediedHomerulehostajaxinfoclublawslesshalfsomesuchzone100%onescareTimeracebluefourweekfacehopegavehardlostwhenparkkeptpassshiproomHTMLplanTypedonesavekeepflaglinksoldfivetookratetownjumpthusdarkcardfilefearstaykillthatfallautoever.comtalkshopvotedeepmoderestturnbornbandfellroseurl(skinrolecomeactsagesmeetgold.jpgitemvaryfeltthensenddropViewcopy1.0"stopelseliestourpack.gifpastcss?graymean>rideshotlatesaidroadvar feeljohnrickportfast'UA-deadpoorbilltypeU.S.woodmust2px;Inforankwidewantwalllead[0];paulwavesure$('#waitmassarmsgoesgainlangpaid!-- lockunitrootwalkfirmwifexml"songtest20pxkindrowstoolfontmailsafestarmapscorerainflowbabyspansays4px;6px;artsfootrealwikiheatsteptriporg/lakeweaktoldFormcastfansbankveryrunsjulytask1px;goalgrewslowedgeid="sets5px;.js?40pxif (soonseatnonetubezerosentreedfactintogiftharm18pxcamehillboldzoomvoideasyringfillpeakinitcost3px;jacktagsbitsrolleditknewnearironfreddiskwentsoilputs/js/holyT22:ISBNT20:adamsees

json', 'contT21: RSSloopasiamoon

soulLINEfortcartT14:

80px!--<9px;T04:mike:46ZniceinchYorkricezh:'));puremageparatonebond:37Z_of_']);000,zh:tankyardbowlbush:56ZJava30px -|} -%C3%:34ZjeffEXPIcashvisagolfsnowzh:quer.csssickmeatmin.binddellhirepicsrent:36ZHTTP-201fotowolfEND xbox:54ZBODYdick; -} -exit:35Zvarsbeat'});diet999;anne}}sonyguysfuckpipe|- -!002)ndow[1];[]; -Log salt - bangtrimbath){ -00px -});ko:feesad> s:// [];tollplug(){ -{ - .js'200pdualboat.JPG); -}quot); - -'); - -} 201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037201320122011201020092008200720062005200420032002200120001999199819971996199519941993199219911990198919881987198619851984198319821981198019791978197719761975197419731972197119701969196819671966196519641963196219611960195919581957195619551954195319521951195010001024139400009999comomásesteestaperotodohacecadaañobiendíaasívidacasootroforosolootracualdijosidograntipotemadebealgoquéestonadatrespococasabajotodasinoaguapuesunosantediceluisellamayozonaamorpisoobraclicellodioshoracasiзанаомрарутанепоотизнодотожеонихНаеебымыВысовывоНообПолиниРФНеМытыОнимдаЗаДаНуОбтеИзейнуммТыужفيأنمامعكلأورديافىهولملكاولهبسالإنهيأيقدهلثمبهلوليبلايبكشيامأمنتبيلنحبهممشوشfirstvideolightworldmediawhitecloseblackrightsmallbooksplacemusicfieldorderpointvalueleveltableboardhousegroupworksyearsstatetodaywaterstartstyledeathpowerphonenighterrorinputabouttermstitletoolseventlocaltimeslargewordsgamesshortspacefocusclearmodelblockguideradiosharewomenagainmoneyimagenamesyounglineslatercolorgreenfront&watchforcepricerulesbeginaftervisitissueareasbelowindextotalhourslabelprintpressbuiltlinksspeedstudytradefoundsenseundershownformsrangeaddedstillmovedtakenaboveflashfixedoftenotherviewschecklegalriveritemsquickshapehumanexistgoingmoviethirdbasicpeacestagewidthloginideaswrotepagesusersdrivestorebreaksouthvoicesitesmonthwherebuildwhichearthforumthreesportpartyClicklowerlivesclasslayerentrystoryusagesoundcourtyour birthpopuptypesapplyImagebeinguppernoteseveryshowsmeansextramatchtrackknownearlybegansuperpapernorthlearngivennamedendedTermspartsGroupbrandusingwomanfalsereadyaudiotakeswhile.com/livedcasesdailychildgreatjudgethoseunitsneverbroadcoastcoverapplefilescyclesceneplansclickwritequeenpieceemailframeolderphotolimitcachecivilscaleenterthemetheretouchboundroyalaskedwholesincestock namefaithheartemptyofferscopeownedmightalbumthinkbloodarraymajortrustcanonunioncountvalidstoneStyleLoginhappyoccurleft:freshquitefilmsgradeneedsurbanfightbasishoverauto;route.htmlmixedfinalYour slidetopicbrownalonedrawnsplitreachRightdatesmarchquotegoodsLinksdoubtasyncthumballowchiefyouthnovel10px;serveuntilhandsCheckSpacequeryjamesequaltwice0,000Startpanelsongsroundeightshiftworthpostsleadsweeksavoidthesemilesplanesmartalphaplantmarksratesplaysclaimsalestextsstarswrong

thing.org/multiheardPowerstandtokensolid(thisbringshipsstafftriedcallsfullyfactsagentThis //-->adminegyptEvent15px;Emailtrue"crossspentblogsbox">notedleavechinasizesguestrobotheavytrue,sevengrandcrimesignsawaredancephase> - - -name=diegopage swiss--> - -#fff;">Log.com"treatsheet) && 14px;sleepntentfiledja:id="cName"worseshots-box-delta -<bears:48Z spendbakershops= "";php">ction13px;brianhellosize=o=%2F joinmaybe, fjsimg" ")[0]MTopBType"newlyDanskczechtrailknowsfaq">zh-cn10); --1");type=bluestrulydavis.js';> - -form jesus100% menu. - -walesrisksumentddingb-likteachgif" vegasdanskeestishqipsuomisobredesdeentretodospuedeañosestátienehastaotrospartedondenuevohacerformamismomejormundoaquídíassóloayudafechatodastantomenosdatosotrassitiomuchoahoralugarmayorestoshorastenerantesfotosestaspaísnuevasaludforosmedioquienmesespoderchileserávecesdecirjoséestarventagrupohechoellostengoamigocosasnivelgentemismaairesjuliotemashaciafavorjuniolibrepuntobuenoautorabrilbuenatextomarzosaberlistaluegocómoenerojuegoperúhaberestoynuncamujervalorfueralibrogustaigualvotoscasosguíapuedosomosavisousteddebennochebuscafaltaeurosseriedichocursoclavecasasleónplazolargoobrasvistaapoyojuntotratavistocrearcampohemoscincocargopisosordenhacenáreadiscopedrocercapuedapapelmenorútilclarojorgecalleponertardenadiemarcasigueellassiglocochemotosmadreclaserestoniñoquedapasarbancohijosviajepabloéstevienereinodejarfondocanalnorteletracausatomarmanoslunesautosvillavendopesartipostengamarcollevapadreunidovamoszonasambosbandamariaabusomuchasubirriojavivirgradochicaallíjovendichaestantalessalirsuelopesosfinesllamabuscoéstalleganegroplazahumorpagarjuntadobleislasbolsabañohablaluchaÁreadicenjugarnotasvalleallácargadolorabajoestégustomentemariofirmacostofichaplatahogarartesleyesaquelmuseobasespocosmitadcielochicomiedoganarsantoetapadebesplayaredessietecortecoreadudasdeseoviejodeseaaguas"domaincommonstatuseventsmastersystemactionbannerremovescrollupdateglobalmediumfilternumberchangeresultpublicscreenchoosenormaltravelissuessourcetargetspringmodulemobileswitchphotosborderregionitselfsocialactivecolumnrecordfollowtitle>eitherlengthfamilyfriendlayoutauthorcreatereviewsummerserverplayedplayerexpandpolicyformatdoublepointsseriespersonlivingdesignmonthsforcesuniqueweightpeopleenergynaturesearchfigurehavingcustomoffsetletterwindowsubmitrendergroupsuploadhealthmethodvideosschoolfutureshadowdebatevaluesObjectothersrightsleaguechromesimplenoticesharedendingseasonreportonlinesquarebuttonimagesenablemovinglatestwinterFranceperiodstrongrepeatLondondetailformeddemandsecurepassedtoggleplacesdevicestaticcitiesstreamyellowattackstreetflighthiddeninfo">openedusefulvalleycausesleadersecretseconddamagesportsexceptratingsignedthingseffectfieldsstatesofficevisualeditorvolumeReportmuseummoviesparentaccessmostlymother" id="marketgroundchancesurveybeforesymbolmomentspeechmotioninsidematterCenterobjectexistsmiddleEuropegrowthlegacymannerenoughcareeransweroriginportalclientselectrandomclosedtopicscomingfatheroptionsimplyraisedescapechosenchurchdefinereasoncorneroutputmemoryiframepolicemodelsNumberduringoffersstyleskilledlistedcalledsilvermargindeletebetterbrowselimitsGlobalsinglewidgetcenterbudgetnowrapcreditclaimsenginesafetychoicespirit-stylespreadmakingneededrussiapleaseextentScriptbrokenallowschargedividefactormember-basedtheoryconfigaroundworkedhelpedChurchimpactshouldalwayslogo" bottomlist">){var prefixorangeHeader.push(couplegardenbridgelaunchReviewtakingvisionlittledatingButtonbeautythemesforgotSearchanchoralmostloadedChangereturnstringreloadMobileincomesupplySourceordersviewed courseAbout islandPhilipawardshandleimportOfficeregardskillsnationSportsdegreeweekly (e.g.behinddoctorloggedunitedbeyond-scaleacceptservedmarineFootercamera -_form"leavesstress" /> -.gif" onloadloaderOxfordsistersurvivlistenfemaleDesignsize="appealtext">levelsthankshigherforcedanimalanyoneAfricaagreedrecentPeople
wonderpricesturned|| {};main">inlinesundaywrap">failedcensusminutebeaconquotes150px|estateremoteemail"linkedright;signalformal1.htmlsignupprincefloat:.png" forum.AccesspaperssoundsextendHeightsliderUTF-8"& Before. WithstudioownersmanageprofitjQueryannualparamsboughtfamousgooglelongeri++) {israelsayingdecidehome">headerensurebranchpiecesblock;statedtop">boston.test(avatartested_countforumsschemaindex,filledsharesreaderalert(appearSubmitline">body"> -* TheThoughseeingjerseyNews -System DavidcancertablesprovedApril reallydriveritem">more">boardscolorscampusfirst || [];media.guitarfinishwidth:showedOther .php" assumelayerswilsonstoresreliefswedenCustomeasily your String - -Whiltaylorclear:resortfrenchthough") + "buyingbrandsMembername">oppingsector5px;">vspacepostermajor coffeemartinmaturehappenkansaslink">Images=falsewhile hspace0& - -In powerPolski-colorjordanBottomStart -count2.htmlnews">01.jpgOnline-rightmillerseniorISBN 00,000 guidesvalue)ectionrepair.xml" rights.html-blockregExp:hoverwithinvirginphones using - var >'); - - -bahasabrasilgalegomagyarpolskisrpskiردو中文简体繁體信息中国我们一个公司管理论坛可以服务时间个人产品自己企业查看工作联系没有网站所有评论中心文章用户首页作者技术问题相关下载搜索使用软件在线主题资料视频回复注册网络收藏内容推荐市场消息空间发布什么好友生活图片发展如果手机新闻最新方式北京提供关于更多这个系统知道游戏广告其他发表安全第一会员进行点击版权电子世界设计免费教育加入活动他们商品博客现在上海如何已经留言详细社区登录本站需要价格支持国际链接国家建设朋友阅读法律位置经济选择这样当前分类排行因为交易最后音乐不能通过行业科技可能设备合作大家社会研究专业全部项目这里还是开始情况电脑文件品牌帮助文化资源大学学习地址浏览投资工程要求怎么时候功能主要目前资讯城市方法电影招聘声明任何健康数据美国汽车介绍但是交流生产所以电话显示一些单位人员分析地图旅游工具学生系列网友帖子密码频道控制地区基本全国网上重要第二喜欢进入友情这些考试发现培训以上政府成为环境香港同时娱乐发送一定开发作品标准欢迎解决地方一下以及责任或者客户代表积分女人数码销售出现离线应用列表不同编辑统计查询不要有关机构很多播放组织政策直接能力来源時間看到热门关键专区非常英语百度希望美女比较知识规定建议部门意见精彩日本提高发言方面基金处理权限影片银行还有分享物品经营添加专家这种话题起来业务公告记录简介质量男人影响引用报告部分快速咨询时尚注意申请学校应该历史只是返回购买名称为了成功说明供应孩子专题程序一般會員只有其它保护而且今天窗口动态状态特别认为必须更新小说我們作为媒体包括那么一样国内是否根据电视学院具有过程由于人才出来不过正在明星故事关系标题商务输入一直基础教学了解建筑结果全球通知计划对于艺术相册发生真的建立等级类型经验实现制作来自标签以下原创无法其中個人一切指南关闭集团第三关注因此照片深圳商业广州日期高级最近综合表示专辑行为交通评价觉得精华家庭完成感觉安装得到邮件制度食品虽然转载报价记者方案行政人民用品东西提出酒店然后付款热点以前完全发帖设置领导工业医院看看经典原因平台各种增加材料新增之后职业效果今年论文我国告诉版主修改参与打印快乐机械观点存在精神获得利用继续你们这么模式语言能够雅虎操作风格一起科学体育短信条件治疗运动产业会议导航先生联盟可是問題结构作用调查資料自动负责农业访问实施接受讨论那个反馈加强女性范围服務休闲今日客服觀看参加的话一点保证图书有效测试移动才能决定股票不断需求不得办法之间采用营销投诉目标爱情摄影有些複製文学机会数字装修购物农村全面精品其实事情水平提示上市谢谢普通教师上传类别歌曲拥有创新配件只要时代資訊达到人生订阅老师展示心理贴子網站主題自然级别简单改革那些来说打开代码删除证券节目重点次數多少规划资金找到以后大全主页最佳回答天下保障现代检查投票小时沒有正常甚至代理目录公开复制金融幸福版本形成准备行情回到思想怎样协议认证最好产生按照服装广东动漫采购新手组图面板参考政治容易天地努力人们升级速度人物调整流行造成文字韩国贸易开展相關表现影视如此美容大小报道条款心情许多法规家居书店连接立即举报技巧奥运登入以来理论事件自由中华办公妈妈真正不错全文合同价值别人监督具体世纪团队创业承担增长有人保持商家维修台湾左右股份答案实际电信经理生命宣传任务正式特色下来协会只能当然重新內容指导运行日志賣家超过土地浙江支付推出站长杭州执行制造之一推广现场描述变化传统歌手保险课程医疗经过过去之前收入年度杂志美丽最高登陆未来加工免责教程版块身体重庆出售成本形式土豆出價东方邮箱南京求职取得职位相信页面分钟网页确定图例网址积极错误目的宝贝机关风险授权病毒宠物除了評論疾病及时求购站点儿童每天中央认识每个天津字体台灣维护本页个性官方常见相机战略应当律师方便校园股市房屋栏目员工导致突然道具本网结合档案劳动另外美元引起改变第四会计說明隐私宝宝规范消费共同忘记体系带来名字發表开放加盟受到二手大量成人数量共享区域女孩原则所在结束通信超级配置当时优秀性感房产遊戲出口提交就业保健程度参数事业整个山东情感特殊分類搜尋属于门户财务声音及其财经坚持干部成立利益考虑成都包装用戶比赛文明招商完整真是眼睛伙伴威望领域卫生优惠論壇公共良好充分符合附件特点不可英文资产根本明显密碼公众民族更加享受同学启动适合原来问答本文美食绿色稳定终于生物供求搜狐力量严重永远写真有限竞争对象费用不好绝对十分促进点评影音优势不少欣赏并且有点方向全新信用设施形象资格突破随着重大于是毕业智能化工完美商城统一出版打造產品概况用于保留因素中國存储贴图最愛长期口价理财基地安排武汉里面创建天空首先完善驱动下面不再诚信意义阳光英国漂亮军事玩家群众农民即可名稱家具动画想到注明小学性能考研硬件观看清楚搞笑首頁黄金适用江苏真实主管阶段註冊翻译权利做好似乎通讯施工狀態也许环保培养概念大型机票理解匿名cuandoenviarmadridbuscariniciotiempoporquecuentaestadopuedenjuegoscontraestánnombretienenperfilmaneraamigosciudadcentroaunquepuedesdentroprimerpreciosegúnbuenosvolverpuntossemanahabíaagostonuevosunidoscarlosequiponiñosmuchosalgunacorreoimagenpartirarribamaríahombreempleoverdadcambiomuchasfueronpasadolíneaparecenuevascursosestabaquierolibroscuantoaccesomiguelvarioscuatrotienesgruposseráneuropamediosfrenteacercademásofertacochesmodeloitalialetrasalgúncompracualesexistecuerposiendoprensallegarviajesdineromurciapodrápuestodiariopuebloquieremanuelpropiocrisisciertoseguromuertefuentecerrargrandeefectopartesmedidapropiaofrecetierrae-mailvariasformasfuturoobjetoseguirriesgonormasmismosúnicocaminositiosrazóndebidopruebatoledoteníajesúsesperococinaorigentiendacientocádizhablarseríalatinafuerzaestiloguerraentraréxitolópezagendavídeoevitarpaginametrosjavierpadresfácilcabezaáreassalidaenvíojapónabusosbienestextosllevarpuedanfuertecomúnclaseshumanotenidobilbaounidadestáseditarcreadoдлячтокакилиэтовсеегопритакещеужеКакбезбылониВсеподЭтотомчемнетлетразонагдемнеДляПринаснихтемктогодвоттамСШАмаяЧтовасвамемуТакдванамэтиэтуВамтехпротутнаддняВоттринейВаснимсамтотрубОнимирнееОООлицэтаОнанемдоммойдвеоносудकेहैकीसेकाकोऔरपरनेएककिभीइसकरतोहोआपहीयहयातकथाjagranआजजोअबदोगईजागएहमइनवहयेथेथीघरजबदीकईजीवेनईनएहरउसमेकमवोलेसबमईदेओरआमबसभरबनचलमनआगसीलीعلىإلىهذاآخرعددالىهذهصورغيركانولابينعرضذلكهنايومقالعليانالكنحتىقبلوحةاخرفقطعبدركنإذاكمااحدإلافيهبعضكيفبحثومنوهوأناجدالهاسلمعندليسعبرصلىمنذبهاأنهمثلكنتالاحيثمصرشرححولوفياذالكلمرةانتالفأبوخاصأنتانهاليعضووقدابنخيربنتلكمشاءوهيابوقصصومارقمأحدنحنعدمرأياحةكتبدونيجبمنهتحتجهةسنةيتمكرةغزةنفسبيتللهلناتلكقلبلماعنهأولشيءنورأمافيكبكلذاترتببأنهمسانكبيعفقدحسنلهمشعرأهلشهرقطرطلبprofileservicedefaulthimselfdetailscontentsupportstartedmessagesuccessfashioncountryaccountcreatedstoriesresultsrunningprocesswritingobjectsvisiblewelcomearticleunknownnetworkcompanydynamicbrowserprivacyproblemServicerespectdisplayrequestreservewebsitehistoryfriendsoptionsworkingversionmillionchannelwindow.addressvisitedweathercorrectproductedirectforwardyou canremovedsubjectcontrolarchivecurrentreadinglibrarylimitedmanagerfurthersummarymachineminutesprivatecontextprogramsocietynumberswrittenenabledtriggersourcesloadingelementpartnerfinallyperfectmeaningsystemskeepingculture",journalprojectsurfaces"expiresreviewsbalanceEnglishContentthroughPlease opinioncontactaverageprimaryvillageSpanishgallerydeclinemeetingmissionpopularqualitymeasuregeneralspeciessessionsectionwriterscounterinitialreportsfiguresmembersholdingdisputeearlierexpressdigitalpictureAnothermarriedtrafficleadingchangedcentralvictoryimages/reasonsstudiesfeaturelistingmust beschoolsVersionusuallyepisodeplayinggrowingobviousoverlaypresentactions</ul> -wrapperalreadycertainrealitystorageanotherdesktopofferedpatternunusualDigitalcapitalWebsitefailureconnectreducedAndroiddecadesregular & animalsreleaseAutomatgettingmethodsnothingPopularcaptionletterscapturesciencelicensechangesEngland=1&History = new CentralupdatedSpecialNetworkrequirecommentwarningCollegetoolbarremainsbecauseelectedDeutschfinanceworkersquicklybetweenexactlysettingdiseaseSocietyweaponsexhibit<!--Controlclassescoveredoutlineattacksdevices(windowpurposetitle="Mobile killingshowingItaliandroppedheavilyeffects-1']); -confirmCurrentadvancesharingopeningdrawingbillionorderedGermanyrelated</form>includewhetherdefinedSciencecatalogArticlebuttonslargestuniformjourneysidebarChicagoholidayGeneralpassage,"animatefeelingarrivedpassingnaturalroughly. - -The but notdensityBritainChineselack oftributeIreland" data-factorsreceivethat isLibraryhusbandin factaffairsCharlesradicalbroughtfindinglanding:lang="return leadersplannedpremiumpackageAmericaEdition]"Messageneed tovalue="complexlookingstationbelievesmaller-mobilerecordswant tokind ofFirefoxyou aresimilarstudiedmaximumheadingrapidlyclimatekingdomemergedamountsfoundedpioneerformuladynastyhow to SupportrevenueeconomyResultsbrothersoldierlargelycalling."AccountEdward segmentRobert effortsPacificlearnedup withheight:we haveAngelesnations_searchappliedacquiremassivegranted: falsetreatedbiggestbenefitdrivingStudiesminimumperhapsmorningsellingis usedreversevariant role="missingachievepromotestudentsomeoneextremerestorebottom:evolvedall thesitemapenglishway to AugustsymbolsCompanymattersmusicalagainstserving})(); -paymenttroubleconceptcompareparentsplayersregionsmonitor ''The winningexploreadaptedGalleryproduceabilityenhancecareers). The collectSearch ancientexistedfooter handlerprintedconsoleEasternexportswindowsChannelillegalneutralsuggest_headersigning.html">settledwesterncausing-webkitclaimedJusticechaptervictimsThomas mozillapromisepartieseditionoutside:false,hundredOlympic_buttonauthorsreachedchronicdemandssecondsprotectadoptedprepareneithergreatlygreateroverallimprovecommandspecialsearch.worshipfundingthoughthighestinsteadutilityquarterCulturetestingclearlyexposedBrowserliberal} catchProjectexamplehide();FloridaanswersallowedEmperordefenseseriousfreedomSeveral-buttonFurtherout of != nulltrainedDenmarkvoid(0)/all.jspreventRequestStephen - -When observe</h2> -Modern provide" alt="borders. - -For - -Many artistspoweredperformfictiontype ofmedicalticketsopposedCouncilwitnessjusticeGeorge Belgium...</a>twitternotablywaitingwarfare Other rankingphrasesmentionsurvivescholar</p> - Countryignoredloss ofjust asGeorgiastrange<head><stopped1']); -islandsnotableborder:list ofcarried100,000</h3> - severalbecomesselect wedding00.htmlmonarchoff theteacherhighly biologylife ofor evenrise of»plusonehunting(thoughDouglasjoiningcirclesFor theAncientVietnamvehiclesuch ascrystalvalue =Windowsenjoyeda smallassumed<a id="foreign All rihow theDisplayretiredhoweverhidden;battlesseekingcabinetwas notlook atconductget theJanuaryhappensturninga:hoverOnline French lackingtypicalextractenemieseven ifgeneratdecidedare not/searchbeliefs-image:locatedstatic.login">convertviolententeredfirst">circuitFinlandchemistshe was10px;">as suchdivided</span>will beline ofa greatmystery/index.fallingdue to railwaycollegemonsterdescentit withnuclearJewish protestBritishflowerspredictreformsbutton who waslectureinstantsuicidegenericperiodsmarketsSocial fishingcombinegraphicwinners<br /><by the NaturalPrivacycookiesoutcomeresolveSwedishbrieflyPersianso muchCenturydepictscolumnshousingscriptsnext tobearingmappingrevisedjQuery(-width:title">tooltipSectiondesignsTurkishyounger.match(})(); - -burningoperatedegreessource=Richardcloselyplasticentries</tr> -color:#ul id="possessrollingphysicsfailingexecutecontestlink toDefault<br /> -: true,chartertourismclassicproceedexplain</h1> -online.?xml vehelpingdiamonduse theairlineend -->).attr(readershosting#ffffffrealizeVincentsignals src="/ProductdespitediversetellingPublic held inJoseph theatreaffects<style>a largedoesn'tlater, ElementfaviconcreatorHungaryAirportsee theso thatMichaelSystemsPrograms, and width=e"tradingleft"> -personsGolden Affairsgrammarformingdestroyidea ofcase ofoldest this is.src = cartoonregistrCommonsMuslimsWhat isin manymarkingrevealsIndeed,equally/show_aoutdoorescape(Austriageneticsystem,In the sittingHe alsoIslandsAcademy - <!--Daniel bindingblock">imposedutilizeAbraham(except{width:putting).html(|| []; -DATA[ *kitchenmountedactual dialectmainly _blank'installexpertsif(typeIt also© ">Termsborn inOptionseasterntalkingconcerngained ongoingjustifycriticsfactoryits ownassaultinvitedlastinghis ownhref="/" rel="developconcertdiagramdollarsclusterphp?id=alcohol);})();using a><span>vesselsrevivalAddressamateurandroidallegedillnesswalkingcentersqualifymatchesunifiedextinctDefensedied in - <!-- customslinkingLittle Book ofeveningmin.js?are thekontakttoday's.html" target=wearingAll Rig; -})();raising Also, crucialabout">declare--> -<scfirefoxas muchappliesindex, s, but type = - -<!--towardsRecordsPrivateForeignPremierchoicesVirtualreturnsCommentPoweredinline;povertychamberLiving volumesAnthonylogin" RelatedEconomyreachescuttinggravitylife inChapter-shadowNotable</td> - returnstadiumwidgetsvaryingtravelsheld bywho arework infacultyangularwho hadairporttown of - -Some 'click'chargeskeywordit willcity of(this);Andrew unique checkedor more300px; return;rsion="pluginswithin herselfStationFederalventurepublishsent totensionactresscome tofingersDuke ofpeople,exploitwhat isharmonya major":"httpin his menu"> -monthlyofficercouncilgainingeven inSummarydate ofloyaltyfitnessand wasemperorsupremeSecond hearingRussianlongestAlbertalateralset of small">.appenddo withfederalbank ofbeneathDespiteCapitalgrounds), and percentit fromclosingcontainInsteadfifteenas well.yahoo.respondfighterobscurereflectorganic= Math.editingonline paddinga wholeonerroryear ofend of barrierwhen itheader home ofresumedrenamedstrong>heatingretainscloudfrway of March 1knowingin partBetweenlessonsclosestvirtuallinks">crossedEND -->famous awardedLicenseHealth fairly wealthyminimalAfricancompetelabel">singingfarmersBrasil)discussreplaceGregoryfont copursuedappearsmake uproundedboth ofblockedsaw theofficescoloursif(docuwhen heenforcepush(fuAugust UTF-8">Fantasyin mostinjuredUsuallyfarmingclosureobject defenceuse of Medical<body> -evidentbe usedkeyCodesixteenIslamic#000000entire widely active (typeofone cancolor =speakerextendsPhysicsterrain<tbody>funeralviewingmiddle cricketprophetshifteddoctorsRussell targetcompactalgebrasocial-bulk ofman and</td> - he left).val()false);logicalbankinghome tonaming Arizonacredits); -}); -founderin turnCollinsbefore But thechargedTitle">CaptainspelledgoddessTag -->Adding:but wasRecent patientback in=false&Lincolnwe knowCounterJudaismscript altered']); - has theunclearEvent',both innot all - -<!-- placinghard to centersort ofclientsstreetsBernardassertstend tofantasydown inharbourFreedomjewelry/about..searchlegendsis mademodern only ononly toimage" linear painterand notrarely acronymdelivershorter00&as manywidth="/* <![Ctitle =of the lowest picked escapeduses ofpeoples PublicMatthewtacticsdamagedway forlaws ofeasy to windowstrong simple}catch(seventhinfoboxwent topaintedcitizenI don'tretreat. Some ww."); -bombingmailto:made in. Many carries||{};wiwork ofsynonymdefeatsfavoredopticalpageTraunless sendingleft"><comScorAll thejQuery.touristClassicfalse" Wilhelmsuburbsgenuinebishops.split(global followsbody ofnominalContactsecularleft tochiefly-hidden-banner</li> - -. When in bothdismissExplorealways via thespañolwelfareruling arrangecaptainhis sonrule ofhe tookitself,=0&(calledsamplesto makecom/pagMartin Kennedyacceptsfull ofhandledBesides//--></able totargetsessencehim to its by common.mineralto takeways tos.org/ladvisedpenaltysimple:if theyLettersa shortHerbertstrikes groups.lengthflightsoverlapslowly lesser social </p> - it intoranked rate oful> - attemptpair ofmake itKontaktAntoniohaving ratings activestreamstrapped").css(hostilelead tolittle groups,Picture--> - - rows=" objectinverse<footerCustomV><\/scrsolvingChamberslaverywoundedwhereas!= 'undfor allpartly -right:Arabianbacked centuryunit ofmobile-Europe,is homerisk ofdesiredClintoncost ofage of become none ofp"Middle ead')[0Criticsstudios>©group">assemblmaking pressedwidget.ps:" ? rebuiltby someFormer editorsdelayedCanonichad thepushingclass="but arepartialBabylonbottom carrierCommandits useAs withcoursesa thirddenotesalso inHouston20px;">accuseddouble goal ofFamous ).bind(priests Onlinein Julyst + "gconsultdecimalhelpfulrevivedis veryr'+'iptlosing femalesis alsostringsdays ofarrivalfuture <objectforcingString(" /> - here isencoded. The balloondone by/commonbgcolorlaw of Indianaavoidedbut the2px 3pxjquery.after apolicy.men andfooter-= true;for usescreen.Indian image =family,http://  driverseternalsame asnoticedviewers})(); - is moreseasonsformer the newis justconsent Searchwas thewhy theshippedbr><br>width: height=made ofcuisineis thata very Admiral fixed;normal MissionPress, ontariocharsettry to invaded="true"spacingis mosta more totallyfall of}); - immensetime inset outsatisfyto finddown tolot of Playersin Junequantumnot thetime todistantFinnishsrc = (single help ofGerman law andlabeledforestscookingspace">header-well asStanleybridges/globalCroatia About [0]; - it, andgroupedbeing a){throwhe madelighterethicalFFFFFF"bottom"like a employslive inas seenprintermost ofub-linkrejectsand useimage">succeedfeedingNuclearinformato helpWomen'sNeitherMexicanprotein<table by manyhealthylawsuitdevised.push({sellerssimply Through.cookie Image(older">us.js"> Since universlarger open to!-- endlies in']); - marketwho is ("DOMComanagedone fortypeof Kingdomprofitsproposeto showcenter;made itdressedwere inmixtureprecisearisingsrc = 'make a securedBaptistvoting - var March 2grew upClimate.removeskilledway the</head>face ofacting right">to workreduceshas haderectedshow();action=book ofan area== "htt<header -<html>conformfacing cookie.rely onhosted .customhe wentbut forspread Family a meansout theforums.footage">MobilClements" id="as highintense--><!--female is seenimpliedset thea stateand hisfastestbesidesbutton_bounded"><img Infoboxevents,a youngand areNative cheaperTimeoutand hasengineswon the(mostlyright: find a -bottomPrince area ofmore ofsearch_nature,legallyperiod,land ofor withinducedprovingmissilelocallyAgainstthe wayk"px;"> -pushed abandonnumeralCertainIn thismore inor somename isand, incrownedISBN 0-createsOctobermay notcenter late inDefenceenactedwish tobroadlycoolingonload=it. TherecoverMembersheight assumes<html> -people.in one =windowfooter_a good reklamaothers,to this_cookiepanel">London,definescrushedbaptismcoastalstatus title" move tolost inbetter impliesrivalryservers SystemPerhapses and contendflowinglasted rise inGenesisview ofrising seem tobut in backinghe willgiven agiving cities.flow of Later all butHighwayonly bysign ofhe doesdiffersbattery&lasinglesthreatsintegertake onrefusedcalled =US&See thenativesby thissystem.head of:hover,lesbiansurnameand allcommon/header__paramsHarvard/pixel.removalso longrole ofjointlyskyscraUnicodebr /> -AtlantanucleusCounty,purely count">easily build aonclicka givenpointerh"events else { -ditionsnow the, with man whoorg/Webone andcavalryHe diedseattle00,000 {windowhave toif(windand itssolely m"renewedDetroitamongsteither them inSenatorUs</a><King ofFrancis-produche usedart andhim andused byscoringat hometo haverelatesibilityfactionBuffalolink"><what hefree toCity ofcome insectorscountedone daynervoussquare };if(goin whatimg" alis onlysearch/tuesdaylooselySolomonsexual - <a hrmedium"DO NOT France,with a war andsecond take a > - - -market.highwaydone inctivity"last">obligedrise to"undefimade to Early praisedin its for hisathleteJupiterYahoo! termed so manyreally s. The a woman?value=direct right" bicycleacing="day andstatingRather,higher Office are nowtimes, when a pay foron this-link">;borderaround annual the Newput the.com" takin toa brief(in thegroups.; widthenzymessimple in late{returntherapya pointbanninginks"> -();" rea place\u003Caabout atr> - ccount gives a<SCRIPTRailwaythemes/toolboxById("xhumans,watchesin some if (wicoming formats Under but hashanded made bythan infear ofdenoted/iframeleft involtagein eacha"base ofIn manyundergoregimesaction </p> -<ustomVa;></importsor thatmostly &re size="</a></ha classpassiveHost = WhetherfertileVarious=[];(fucameras/></td>acts asIn some> - -<!organis <br />Beijingcatalàdeutscheuropeueuskaragaeilgesvenskaespañamensajeusuariotrabajoméxicopáginasiempresistemaoctubreduranteañadirempresamomentonuestroprimeratravésgraciasnuestraprocesoestadoscalidadpersonanúmeroacuerdomúsicamiembroofertasalgunospaísesejemploderechoademásprivadoagregarenlacesposiblehotelessevillaprimeroúltimoeventosarchivoculturamujeresentradaanuncioembargomercadograndesestudiomejoresfebrerodiseñoturismocódigoportadaespaciofamiliaantoniopermiteguardaralgunaspreciosalguiensentidovisitastítuloconocersegundoconsejofranciaminutossegundatenemosefectosmálagasesiónrevistagranadacompraringresogarcíaacciónecuadorquienesinclusodeberámateriahombresmuestrapodríamañanaúltimaestamosoficialtambienningúnsaludospodemosmejorarpositionbusinesshomepagesecuritylanguagestandardcampaignfeaturescategoryexternalchildrenreservedresearchexchangefavoritetemplatemilitaryindustryservicesmaterialproductsz-index:commentssoftwarecompletecalendarplatformarticlesrequiredmovementquestionbuildingpoliticspossiblereligionphysicalfeedbackregisterpicturesdisabledprotocolaudiencesettingsactivityelementslearninganythingabstractprogressoverviewmagazineeconomictrainingpressurevarious <strong>propertyshoppingtogetheradvancedbehaviordownloadfeaturedfootballselectedLanguagedistanceremembertrackingpasswordmodifiedstudentsdirectlyfightingnortherndatabasefestivalbreakinglocationinternetdropdownpracticeevidencefunctionmarriageresponseproblemsnegativeprogramsanalysisreleasedbanner">purchasepoliciesregionalcreativeargumentbookmarkreferrerchemicaldivisioncallbackseparateprojectsconflicthardwareinterestdeliverymountainobtained= false;for(var acceptedcapacitycomputeridentityaircraftemployedproposeddomesticincludesprovidedhospitalverticalcollapseapproachpartnerslogo"><adaughterauthor" culturalfamilies/images/assemblypowerfulteachingfinisheddistrictcriticalcgi-bin/purposesrequireselectionbecomingprovidesacademicexerciseactuallymedicineconstantaccidentMagazinedocumentstartingbottom">observed: "extendedpreviousSoftwarecustomerdecisionstrengthdetailedslightlyplanningtextareacurrencyeveryonestraighttransferpositiveproducedheritageshippingabsolutereceivedrelevantbutton" violenceanywherebenefitslaunchedrecentlyalliancefollowedmultiplebulletinincludedoccurredinternal$(this).republic><tr><tdcongressrecordedultimatesolution<ul id="discoverHome</a>websitesnetworksalthoughentirelymemorialmessagescontinueactive">somewhatvictoriaWestern title="LocationcontractvisitorsDownloadwithout right"> -measureswidth = variableinvolvedvirginianormallyhappenedaccountsstandingnationalRegisterpreparedcontrolsaccuratebirthdaystrategyofficialgraphicscriminalpossiblyconsumerPersonalspeakingvalidateachieved.jpg" />machines</h2> - keywordsfriendlybrotherscombinedoriginalcomposedexpectedadequatepakistanfollow" valuable</label>relativebringingincreasegovernorplugins/List of Header">" name=" ("graduate</head> -commercemalaysiadirectormaintain;height:schedulechangingback to catholicpatternscolor: #greatestsuppliesreliable</ul> - <select citizensclothingwatching<li id="specificcarryingsentence<center>contrastthinkingcatch(e)southernMichael merchantcarouselpadding:interior.split("lizationOctober ){returnimproved--> - -coveragechairman.png" />subjectsRichard whateverprobablyrecoverybaseballjudgmentconnect..css" /> websitereporteddefault"/></a> -electricscotlandcreationquantity. ISBN 0did not instance-search-" lang="speakersComputercontainsarchivesministerreactiondiscountItalianocriteriastrongly: 'http:'script'coveringofferingappearedBritish identifyFacebooknumerousvehiclesconcernsAmericanhandlingdiv id="William provider_contentaccuracysection andersonflexibleCategorylawrence<script>layout="approved maximumheader"></table>Serviceshamiltoncurrent canadianchannels/themes//articleoptionalportugalvalue=""intervalwirelessentitledagenciesSearch" measuredthousandspending…new Date" size="pageNamemiddle" " /></a>hidden">sequencepersonaloverflowopinionsillinoislinks"> - <title>versionssaturdayterminalitempropengineersectionsdesignerproposal="false"Españolreleasessubmit" er"additionsymptomsorientedresourceright"><pleasurestationshistory.leaving border=contentscenter">. - -Some directedsuitablebulgaria.show();designedGeneral conceptsExampleswilliamsOriginal"><span>search">operatorrequestsa "allowingDocumentrevision. - -The yourselfContact michiganEnglish columbiapriorityprintingdrinkingfacilityreturnedContent officersRussian generate-8859-1"indicatefamiliar qualitymargin:0 contentviewportcontacts-title">portable.length eligibleinvolvesatlanticonload="default.suppliedpaymentsglossary - -After guidance</td><tdencodingmiddle">came to displaysscottishjonathanmajoritywidgets.clinicalthailandteachers<head> - affectedsupportspointer;toString</small>oklahomawill be investor0" alt="holidaysResourcelicensed (which . After considervisitingexplorerprimary search" android"quickly meetingsestimate;return ;color:# height=approval, " checked.min.js"magnetic></a></hforecast. While thursdaydvertiseéhasClassevaluateorderingexistingpatients Online coloradoOptions"campbell<!-- end</span><<br /> -_popups|sciences," quality Windows assignedheight: <b classle" value=" Companyexamples<iframe believespresentsmarshallpart of properly). - -The taxonomymuch of </span> -" data-srtuguêsscrollTo project<head> -attorneyemphasissponsorsfancyboxworld's wildlifechecked=sessionsprogrammpx;font- Projectjournalsbelievedvacationthompsonlightingand the special border=0checking</tbody><button Completeclearfix -<head> -article <sectionfindingsrole in popular Octoberwebsite exposureused to changesoperatedclickingenteringcommandsinformed numbers </div>creatingonSubmitmarylandcollegesanalyticlistingscontact.loggedInadvisorysiblingscontent"s")s. This packagescheckboxsuggestspregnanttomorrowspacing=icon.pngjapanesecodebasebutton">gamblingsuch as , while </span> missourisportingtop:1px .</span>tensionswidth="2lazyloadnovemberused in height="cript"> - </<tr><td height:2/productcountry include footer" <!-- title"></jquery.</form> -(简体)(繁體)hrvatskiitalianoromânătürkçeاردوtambiénnoticiasmensajespersonasderechosnacionalserviciocontactousuariosprogramagobiernoempresasanunciosvalenciacolombiadespuésdeportesproyectoproductopúbliconosotroshistoriapresentemillonesmediantepreguntaanteriorrecursosproblemasantiagonuestrosopiniónimprimirmientrasaméricavendedorsociedadrespectorealizarregistropalabrasinterésentoncesespecialmiembrosrealidadcórdobazaragozapáginassocialesbloqueargestiónalquilersistemascienciascompletoversióncompletaestudiospúblicaobjetivoalicantebuscadorcantidadentradasaccionesarchivossuperiormayoríaalemaniafunciónúltimoshaciendoaquellosediciónfernandoambientefacebooknuestrasclientesprocesosbastantepresentareportarcongresopublicarcomerciocontratojóvenesdistritotécnicaconjuntoenergíatrabajarasturiasrecienteutilizarboletínsalvadorcorrectatrabajosprimerosnegocioslibertaddetallespantallapróximoalmeríaanimalesquiénescorazónsecciónbuscandoopcionesexteriorconceptotodavíagaleríaescribirmedicinalicenciaconsultaaspectoscríticadólaresjusticiadeberánperíodonecesitamantenerpequeñorecibidatribunaltenerifecancióncanariasdescargadiversosmallorcarequieretécnicodeberíaviviendafinanzasadelantefuncionaconsejosdifícilciudadesantiguasavanzadatérminounidadessánchezcampañasoftonicrevistascontienesectoresmomentosfacultadcréditodiversassupuestofactoressegundospequeñaгодаеслиестьбылобытьэтомЕслитогоменявсехэтойдажебылигодуденьэтотбыласебяодинсебенадосайтфотонегосвоисвойигрытожевсемсвоюлишьэтихпокаднейдомамиралиботемухотядвухсетилюдиделомиретебясвоевидечегоэтимсчеттемыценысталведьтемеводытебевышенамитипатомуправлицаоднагодызнаюмогудругвсейидеткиноодноделаделесрокиюнявесьЕстьразанашиاللهالتيجميعخاصةالذيعليهجديدالآنالردتحكمصفحةكانتاللييكونشبكةفيهابناتحواءأكثرخلالالحبدليلدروساضغطتكونهناكساحةناديالطبعليكشكرايمكنمنهاشركةرئيسنشيطماذاالفنشبابتعبررحمةكافةيقولمركزكلمةأحمدقلبييعنيصورةطريقشاركجوالأخرىمعناابحثعروضبشكلمسجلبنانخالدكتابكليةبدونأيضايوجدفريقكتبتأفضلمطبخاكثرباركافضلاحلىنفسهأيامردودأنهاديناالانمعرضتعلمداخلممكن���������������������� -  - ������������������������������������������������resourcescountriesquestionsequipmentcommunityavailablehighlightDTD/xhtmlmarketingknowledgesomethingcontainerdirectionsubscribeadvertisecharacter" value="</select>Australia" class="situationauthorityfollowingprimarilyoperationchallengedevelopedanonymousfunction functionscompaniesstructureagreement" title="potentialeducationargumentssecondarycopyrightlanguagesexclusivecondition</form> -statementattentionBiography} else { -solutionswhen the Analyticstemplatesdangeroussatellitedocumentspublisherimportantprototypeinfluence»</effectivegenerallytransformbeautifultransportorganizedpublishedprominentuntil thethumbnailNational .focus();over the migrationannouncedfooter"> -exceptionless thanexpensiveformationframeworkterritoryndicationcurrentlyclassNamecriticismtraditionelsewhereAlexanderappointedmaterialsbroadcastmentionedaffiliate</option>treatmentdifferent/default.Presidentonclick="biographyotherwisepermanentFrançaisHollywoodexpansionstandards</style> -reductionDecember preferredCambridgeopponentsBusiness confusion> -<title>presentedexplaineddoes not worldwideinterfacepositionsnewspaper</table> -mountainslike the essentialfinancialselectionaction="/abandonedEducationparseInt(stabilityunable to -relationsNote thatefficientperformedtwo yearsSince thethereforewrapper">alternateincreasedBattle ofperceivedtrying tonecessaryportrayedelectionsElizabethdiscoveryinsurances.length;legendaryGeographycandidatecorporatesometimesservices.inheritedCommunityreligiouslocationsCommitteebuildingsthe worldno longerbeginningreferencecannot befrequencytypicallyinto the relative;recordingpresidentinitiallytechniquethe otherit can beexistenceunderlinethis timetelephoneitemscopepracticesadvantage);return For otherprovidingdemocracyboth the extensivesufferingsupportedcomputers functionpracticalsaid thatit may beEnglish -suspectedmargin: 0spiritual - -microsoftgraduallydiscussedhe becameexecutivejquery.jshouseholdconfirmedpurchasedliterallydestroyedup to thevariationremainingit is notcenturiesJapanese among thecompletedalgorithminterestsrebellionundefinedencourageresizableinvolvingsensitiveuniversalprovision(althoughfeaturingconducted), which continued-header">February numerous overflow:componentfragmentsexcellentcolspan="technicalnear the Advanced source ofexpressedHong Kong Facebookmultiple mechanismelevationoffensive - sponsoreddocument.or "there arethose whomovementsprocessesdifficultsubmittedrecommendconvincedpromoting" width=".replace(classicalcoalitionhis firstdecisionsassistantindicatedevolution-wrapper"enough toalong thedelivered--> - - -
Archbishop class="nobeing usedapproachesprivilegesnoscript> -results inmay be theEaster eggmechanismsreasonablePopulationCollectionselected">noscript> /index.phparrival of-jssdk'));managed toincompletecasualtiescompletionChristiansSeptember arithmeticproceduresmight haveProductionit appearsPhilosophyfriendshipleading togiving thetoward theguaranteeddocumentedcolor:#000video gamecommissionreflectingchange theassociatedsans-serifonkeypress; padding:He was theunderlyingtypically , and the srcElementsuccessivesince the should be networkingaccountinguse of thelower thanshows that - complaintscontinuousquantitiesastronomerhe did notdue to itsapplied toan averageefforts tothe futureattempt toTherefore,capabilityRepublicanwas formedElectronickilometerschallengespublishingthe formerindigenousdirectionssubsidiaryconspiracydetails ofand in theaffordablesubstancesreason forconventionitemtype="absolutelysupposedlyremained aattractivetravellingseparatelyfocuses onelementaryapplicablefound thatstylesheetmanuscriptstands for no-repeat(sometimesCommercialin Americaundertakenquarter ofan examplepersonallyindex.php? -percentagebest-knowncreating a" dir="ltrLieutenant -
is said tostructuralreferendummost oftena separate-> -
implementedcan be seenthere was ademonstratecontainer">connectionsthe Britishwas written!important;px; margin-followed byability to complicatedduring the immigrationalso called

as follows:merged withthrough thecommercial pointed outopportunityview of therequirementdivision ofprogramminghe receivedsetInterval">maintainingChristopherMuch of thewritings of" height="2size of theversion of mixture of between theExamples ofeducationalcompetitive onsubmit="director ofdistinctive/DTD XHTML relating totendency toprovince ofwhich woulddespite thescientific legislature.innerHTML allegationsAgriculturewas used inapproach tointelligentyears later,sans-serifdeterminingPerformanceappearances, which is foundationsabbreviatedhigher thans from the individual composed ofsupposed toclaims thatattributionfont-size:1elements ofHistorical his brotherat the timeanniversarygoverned byrelated to ultimately innovationsit is stillcan only bedefinitionstoGMTStringA number ofimg class="Eventually,was changedoccurred inneighboringdistinguishwhen he wasintroducingterrestrialMany of theargues thatan Americanconquest ofwidespread were killedscreen and In order toexpected todescendantsare locatedlegislativegenerations backgroundmost peopleyears afterthere is nothe highestfrequently they do notargued thatshowed thatpredominanttheologicalby the timeconsideringshort-livedcan be usedvery littleone of the had alreadyinterpretedcommunicatefeatures ofgovernment,entered the" height="3Independentpopulationslarge-scale. Although used in thedestructionpossibilitystarting intwo or moreexpressionssubordinatelarger thanhistory and -Continentaleliminatingwill not bepractice ofin front ofsite of theensure thatto create amississippipotentiallyoutstandingbetter thanwhat is nowsituated inmeta name="TraditionalsuggestionsTranslationthe form ofatmosphericideologicalenterprisescalculatingeast of theremnants ofpluginspage/index.php?remained intransformedHe was alsowas alreadystatisticalin favor ofMinistry ofmovement offormulationis required -question ofwas electedto become abecause of some peopleinspired bysuccessful a time whenmore commonamongst thean officialwidth:100%;technology,was adoptedto keep thesettlementslive birthsindex.html"Connecticutassigned to&times;account foralign=rightthe companyalways beenreturned toinvolvementBecause thethis period" name="q" confined toa result ofvalue="" />is actuallyEnvironment - -Conversely,> -
this is notthe presentif they areand finallya matter of -
- -faster thanmajority ofafter whichcomparativeto maintainimprove theawarded theer" class="frameborderrestorationin the sameanalysis oftheir firstDuring the continentalsequence offunction(){font-size: work on the -adopted theproperty ofdirected byeffectivelywas broughtchildren ofProgramminglonger thanmanuscriptswar againstby means ofand most ofsimilar to proprietaryoriginatingprestigiousgrammaticalexperience.to make theIt was alsois found incompetitorsin the U.S.replace thebrought thecalculationfall of thethe generalpracticallyin honor ofreleased inresidentialand some ofking of thereaction to1st Earl ofculture andprincipally - they can beback to thesome of hisexposure toare similarform of theaddFavoritecitizenshippart in thepeople within practiceto continue&minus;approved by the first allowed theand for thefunctioningplaying thesolution toheight="0" in his bookmore than afollows thecreated thepresence in nationalistthe idea ofa characterwere forced class="btndays of thefeatured inshowing theinterest inin place ofturn of thethe head ofLord of thepoliticallyhas its ownEducationalapproval ofsome of theeach other,behavior ofand becauseand anotherappeared onrecorded inblack"may includethe world'scan lead torefers to aborder="0" government winning theresulted in while the Washington,the subjectcity in the>

- reflect theto completebecame moreradioactiverejected bywithout anyhis father,which couldcopy of theto indicatea politicalaccounts ofconstitutesworked witherof his lifeaccompaniedclientWidthprevent theLegislativedifferentlytogether inhas severalfor anothertext of thefounded thee with the is used forchanged theusually theplace wherewhereas the> The currentthe site ofsubstantialexperience,in the Westthey shouldslovenčinacomentariosuniversidadcondicionesactividadesexperienciatecnologíaproducciónpuntuaciónaplicacióncontraseñacategoríasregistrarseprofesionaltratamientoregístratesecretaríaprincipalesprotecciónimportantesimportanciaposibilidadinteresantecrecimientonecesidadessuscribirseasociacióndisponiblesevaluaciónestudiantesresponsableresoluciónguadalajararegistradosoportunidadcomercialesfotografíaautoridadesingenieríatelevisióncompetenciaoperacionesestablecidosimplementeactualmentenavegaciónconformidadline-height:font-family:" : "http://applicationslink" href="specifically// -/index.html"window.open( !important;application/independence//www.googleorganizationautocompleterequirementsconservative
most notably/>
notification'undefined')Furthermore,believe thatinnerHTML = prior to thedramaticallyreferring tonegotiationsheadquartersSouth AfricaunsuccessfulPennsylvaniaAs a result, -
English (US)appendChild(transmissions. However, intelligence" tabindex="float:right;Commonwealthranging fromin which theat least onereproductionencyclopedia;font-size:1jurisdictionat that time">compensationchampionshipmedia="all" violation ofreference toreturn true;Strict//EN" transactionsinterventionverificationInformation difficultiesChampionshipcapabilities} - -Christianityfor example,Professionalrestrictionssuggest thatwas released(such as theremoveClass(unemploymentthe Americanstructure of/index.html published inspan class=""> - -f (document.border: 1px {font-size:1treatment of0" height="1modificationIndependencedivided intogreater thanachievementsestablishingJavaScript" neverthelesssignificanceBroadcasting> container"> -such as the influence ofa particularsrc='http://navigation" half of the substantial  advantage ofdiscovery offundamental metropolitanthe opposite" xml:lang="deliberatelyalign=centerevolution ofpreservationimprovementsbeginning inJesus ChristPublicationsdisagreementtext-align:r, function()similaritiesbody>is currentlyalphabeticalis sometimestype="image/many of the flow:hidden;available indescribe theexistence ofall over thethe Internet
    - -an effort toincrease theto the southspacing="0">sufficientlythe Europeanconverted toclearTimeoutdid not haveconsequentlyfor the nextextension ofeconomic andalthough theare producedand with theinsufficientgiven by thestating thatexpenditures -thought thaton the basiscellpadding=image of thereturning toinformation,separated byassassinateds" content="authority ofnorthwestern -
    - consultationcommunity ofthe nationalit should beparticipants align="leftthe greatestselection ofsupernaturaldependent onis mentionedallowing thewas inventedaccompanyinghis personalavailable atstudy of theon the otherexecution ofHuman Rightsterms of theassociationsresearch andsucceeded bydefeated theand from thebut they arecommander ofstate of theyears of agethe study of
      Roman Empireequal to theIn contrast,however, andis typicallyand his wife(also called> - -philosophicallocation.hrefwas publishedSan Francisco(function(){ -
      has been usedreturn to thealthough thischange in theseveral otherbut there areunprecedentedis similar toespecially inweight: bold;is called thecomputationalindicate thatrestricted to
      -
      large part ofInstitute forthe so-called against the In this case,was appointedclaimed to beHowever, thisDepartment ofthe remainingeffect on theparticularly deal with the -
      the structure />
      Many of thesecaused by theof the Unitedspan class="mcan be tracedis related tobecame one ofis frequentlyliving in thetheoreticallyFollowing theRevolutionarygovernment inis determinedthe politicalintroduced insufficient todescription">short storiesseparation ofas to whetherknown for itswas initiallydisplay:blockis an examplethe principalconsists of arecognized as/body>a substantialreconstructedhead of stateresistance toundergraduateThere are twogravitationalare describedintentionallyserved as theclass="headeropposition tofundamentallydominated theand the otheralliance withwas forced torespectively,and politicalin support ofpeople in the20th century.and publishedloadChartbeatto understandmember statesenvironmentalfirst half ofcountries andarchitecturalbe consideredcharacterizedclearIntervalauthoritativeFederation ofwas succeededand there area consequencethe Presidentalso includedfree softwaresuccession ofdeveloped thewas destroyedaway from the; - -
      -=http%3A%2F%2F -.setAttribute(Administration= new Array(); -display:block;Unfortunately,"> 
      /favicon.ico">='stylesheet' identification, for example,
    • -type="submit" -(function() {recommendationform action="/transformationreconstruction.style.display According to hidden" name="along with thedocument.body.approximately Communicationspost" action="meaning "--Prime Ministercharacteristic - -depends on theUniversity of in contrast to placeholder="in the case ofinternational constitutionalstyle="border-: function() {Because of the-strict.dtd"> -
combination of marginwidth="createElement(w.attachEvent(src="https://aIn particular, align="left" Czech RepublicUnited Kingdomcorrespondenceconcluded that.html" title="(function () {comes from theapplication offounder of theattempting to carbon dioxide - -
-opportunity tocommunications -
- -Department of ecclesiasticalthere has beenresulting fromhas never beenthe first timein response toautomatically - -
collection of descended fromsection of theaccept-charsetto be confusedmember of the padding-right:translation ofinterpretation href='http://whether or notThere are alsothere are manya small numberother parts ofimpossible to class="buttonlocated in the. However, theand eventuallyAt the end of because of itsrepresents themany countriesfor many yearsearliest knownbecause it waspt"> valign="top" inhabitants offollowing year -
- - -style="margin-instead of theintroduced thethe process ofincreasing thedifferences inestimated thatespecially the/div>
class="footerand especiallytype="button" which included> -media="screen"
/page> - -
the United States - - - " action="http:// -
- -beginning of the revealed that thetelevision series" rel="nofollow"> target="_blank">claiming that thehttp%3A%2F%2Fwww.manifestations ofPrime Minister ofinfluenced by theclass="clearfix">/div> - - -three-dimensionalChurch of Englandof North Carolinasquare kilometres.addEventListenerdistinct from thecommonly known asPhonetic Alphabetdeclared that thecontrolled by theBenjamin Franklinrole-playing gamethe University ofin Western Europepersonal computerProject Gutenbergregardless of thehas been proposedtogether with the>
  • of the populationofficial language -the InternationalAccording to the pe="text/css" /> -coincide with thetwo-thirds of theDuring this time,during the periodannounced that hethe internationaland more recentlybelieved that theconsciousness andformerly known assurrounded by thefirst appeared inoccasionally usedposition:absolute;" target="_blank" position:relative;text-align:center;jax/libs/jquery/1.background-color:#type="application/anguage" content=" - -
    -distinction between/" target="_blank"> -w.addEventListener?action="http://www.icon" href="http:// style="background:type="text/css" /> -meta property="og:t - - - - - -
    -
    type="text/css" /> -interchangeably withmore closely relatedsocial and politicalthat would otherwiseperpendicular to thestyle type="text/csstype="submit" name="families residing indeveloping countriescomputer programmingeconomic developmentdetermination of thefor more informationon several occasionsportuguês (Europeu)УкраїнськаукраїнськаРоссийскойматериаловинформацииуправлениянеобходимоинформацияИнформацияРеспубликиколичествоинформациютерриториидостаточноالمتواجدونالاشتراكاتالاقتراحاتhtml; charset=UTF-8" setTimeout(function()display:inline-block;
    -

    +

    npm-access - @10.8.0 + @10.8.1

    Set access level on published packages
    diff --git a/deps/npm/docs/output/commands/npm-adduser.html b/deps/npm/docs/output/commands/npm-adduser.html index 0a338175ead62d..9543d85ad76089 100644 --- a/deps/npm/docs/output/commands/npm-adduser.html +++ b/deps/npm/docs/output/commands/npm-adduser.html @@ -141,9 +141,9 @@
    -

    +

    npm-adduser - @10.8.0 + @10.8.1

    Add a registry user account
    diff --git a/deps/npm/docs/output/commands/npm-audit.html b/deps/npm/docs/output/commands/npm-audit.html index 1e556d50a03f9b..358a1f07ec803c 100644 --- a/deps/npm/docs/output/commands/npm-audit.html +++ b/deps/npm/docs/output/commands/npm-audit.html @@ -141,9 +141,9 @@
    -

    +

    npm-audit - @10.8.0 + @10.8.1

    Run a security audit
    diff --git a/deps/npm/docs/output/commands/npm-bugs.html b/deps/npm/docs/output/commands/npm-bugs.html index ac46a5e8de225c..3fb83b80a2250b 100644 --- a/deps/npm/docs/output/commands/npm-bugs.html +++ b/deps/npm/docs/output/commands/npm-bugs.html @@ -141,9 +141,9 @@
    -

    +

    npm-bugs - @10.8.0 + @10.8.1

    Report bugs for a package in a web browser
    diff --git a/deps/npm/docs/output/commands/npm-cache.html b/deps/npm/docs/output/commands/npm-cache.html index 45c980155e7b14..354d40937b8f06 100644 --- a/deps/npm/docs/output/commands/npm-cache.html +++ b/deps/npm/docs/output/commands/npm-cache.html @@ -141,9 +141,9 @@
    -

    +

    npm-cache - @10.8.0 + @10.8.1

    Manipulates packages cache
    diff --git a/deps/npm/docs/output/commands/npm-ci.html b/deps/npm/docs/output/commands/npm-ci.html index 961718439b4a47..ee45b84236f061 100644 --- a/deps/npm/docs/output/commands/npm-ci.html +++ b/deps/npm/docs/output/commands/npm-ci.html @@ -141,9 +141,9 @@
    -

    +

    npm-ci - @10.8.0 + @10.8.1

    Clean install a project
    diff --git a/deps/npm/docs/output/commands/npm-completion.html b/deps/npm/docs/output/commands/npm-completion.html index b1896ad10f4e20..1f0c580725e5fc 100644 --- a/deps/npm/docs/output/commands/npm-completion.html +++ b/deps/npm/docs/output/commands/npm-completion.html @@ -141,9 +141,9 @@
    -

    +

    npm-completion - @10.8.0 + @10.8.1

    Tab Completion for npm
    diff --git a/deps/npm/docs/output/commands/npm-config.html b/deps/npm/docs/output/commands/npm-config.html index c399d3142eb004..72d1ca5deb4525 100644 --- a/deps/npm/docs/output/commands/npm-config.html +++ b/deps/npm/docs/output/commands/npm-config.html @@ -141,9 +141,9 @@
    -

    +

    npm-config - @10.8.0 + @10.8.1

    Manage the npm configuration files
    diff --git a/deps/npm/docs/output/commands/npm-dedupe.html b/deps/npm/docs/output/commands/npm-dedupe.html index 9864ec2ecc5cb0..8cf60ac2d0d94a 100644 --- a/deps/npm/docs/output/commands/npm-dedupe.html +++ b/deps/npm/docs/output/commands/npm-dedupe.html @@ -141,9 +141,9 @@
    -

    +

    npm-dedupe - @10.8.0 + @10.8.1

    Reduce duplication in the package tree
    diff --git a/deps/npm/docs/output/commands/npm-deprecate.html b/deps/npm/docs/output/commands/npm-deprecate.html index 9dedd3be56f2ad..4088528e81ab3f 100644 --- a/deps/npm/docs/output/commands/npm-deprecate.html +++ b/deps/npm/docs/output/commands/npm-deprecate.html @@ -141,9 +141,9 @@
    -

    +

    npm-deprecate - @10.8.0 + @10.8.1

    Deprecate a version of a package
    diff --git a/deps/npm/docs/output/commands/npm-diff.html b/deps/npm/docs/output/commands/npm-diff.html index 5d3f5ef0f089b6..0b39ea05f1d4ec 100644 --- a/deps/npm/docs/output/commands/npm-diff.html +++ b/deps/npm/docs/output/commands/npm-diff.html @@ -141,9 +141,9 @@
    -

    +

    npm-diff - @10.8.0 + @10.8.1

    The registry diff command
    @@ -334,10 +334,11 @@

    tag

    If you ask npm to install a package and don't tell it a specific version, then it will install the specified tag.

    -

    Also the tag that is added to the package@version specified by the npm tag -command, if no explicit tag is given.

    +

    It is the tag added to the package@version specified in the npm dist-tag add command, if no explicit tag is given.

    When used by the npm diff command, this is the tag used to fetch the tarball that will be compared with the local files by default.

    +

    If used in the npm publish command, this is the tag that will be added to +the package submitted to the registry.

    workspace

    • Default:
    • diff --git a/deps/npm/docs/output/commands/npm-dist-tag.html b/deps/npm/docs/output/commands/npm-dist-tag.html index ba748cd0b16ec6..ccaa92003210aa 100644 --- a/deps/npm/docs/output/commands/npm-dist-tag.html +++ b/deps/npm/docs/output/commands/npm-dist-tag.html @@ -141,9 +141,9 @@
      -

      +

      npm-dist-tag - @10.8.0 + @10.8.1

      Modify package distribution tags
      diff --git a/deps/npm/docs/output/commands/npm-docs.html b/deps/npm/docs/output/commands/npm-docs.html index 9624310743ed1d..206df2950ea64c 100644 --- a/deps/npm/docs/output/commands/npm-docs.html +++ b/deps/npm/docs/output/commands/npm-docs.html @@ -141,9 +141,9 @@
      -

      +

      npm-docs - @10.8.0 + @10.8.1

      Open documentation for a package in a web browser
      diff --git a/deps/npm/docs/output/commands/npm-doctor.html b/deps/npm/docs/output/commands/npm-doctor.html index e861423a6daba7..f3d9c9daf2c731 100644 --- a/deps/npm/docs/output/commands/npm-doctor.html +++ b/deps/npm/docs/output/commands/npm-doctor.html @@ -141,9 +141,9 @@
      -

      +

      npm-doctor - @10.8.0 + @10.8.1

      Check the health of your npm environment
      diff --git a/deps/npm/docs/output/commands/npm-edit.html b/deps/npm/docs/output/commands/npm-edit.html index 238f2fb7ad5e3f..bf8bd4a2a7d70f 100644 --- a/deps/npm/docs/output/commands/npm-edit.html +++ b/deps/npm/docs/output/commands/npm-edit.html @@ -141,9 +141,9 @@
      -

      +

      npm-edit - @10.8.0 + @10.8.1

      Edit an installed package
      diff --git a/deps/npm/docs/output/commands/npm-exec.html b/deps/npm/docs/output/commands/npm-exec.html index b2f4fa56527767..649cf404ef08f0 100644 --- a/deps/npm/docs/output/commands/npm-exec.html +++ b/deps/npm/docs/output/commands/npm-exec.html @@ -141,9 +141,9 @@
      -

      +

      npm-exec - @10.8.0 + @10.8.1

      Run a command from a local or remote npm package
      diff --git a/deps/npm/docs/output/commands/npm-explain.html b/deps/npm/docs/output/commands/npm-explain.html index 915559613d1e96..ab47be253e44b6 100644 --- a/deps/npm/docs/output/commands/npm-explain.html +++ b/deps/npm/docs/output/commands/npm-explain.html @@ -141,9 +141,9 @@
      -

      +

      npm-explain - @10.8.0 + @10.8.1

      Explain installed packages
      diff --git a/deps/npm/docs/output/commands/npm-explore.html b/deps/npm/docs/output/commands/npm-explore.html index 851b42790c160c..21070286a1859b 100644 --- a/deps/npm/docs/output/commands/npm-explore.html +++ b/deps/npm/docs/output/commands/npm-explore.html @@ -141,9 +141,9 @@
      -

      +

      npm-explore - @10.8.0 + @10.8.1

      Browse an installed package
      diff --git a/deps/npm/docs/output/commands/npm-find-dupes.html b/deps/npm/docs/output/commands/npm-find-dupes.html index 18ec5d449d4f50..9846600156fcb3 100644 --- a/deps/npm/docs/output/commands/npm-find-dupes.html +++ b/deps/npm/docs/output/commands/npm-find-dupes.html @@ -141,9 +141,9 @@
      -

      +

      npm-find-dupes - @10.8.0 + @10.8.1

      Find duplication in the package tree
      diff --git a/deps/npm/docs/output/commands/npm-fund.html b/deps/npm/docs/output/commands/npm-fund.html index 7381f39f2f95b5..2fc63283ec761f 100644 --- a/deps/npm/docs/output/commands/npm-fund.html +++ b/deps/npm/docs/output/commands/npm-fund.html @@ -141,9 +141,9 @@
      -

      +

      npm-fund - @10.8.0 + @10.8.1

      Retrieve funding information
      diff --git a/deps/npm/docs/output/commands/npm-help-search.html b/deps/npm/docs/output/commands/npm-help-search.html index 0003fbc903e32b..e97e3d24b699ff 100644 --- a/deps/npm/docs/output/commands/npm-help-search.html +++ b/deps/npm/docs/output/commands/npm-help-search.html @@ -141,9 +141,9 @@
      -

      +

      npm-help-search - @10.8.0 + @10.8.1

      Search npm help documentation
      diff --git a/deps/npm/docs/output/commands/npm-help.html b/deps/npm/docs/output/commands/npm-help.html index 3fff79470f8339..12aa45130822cd 100644 --- a/deps/npm/docs/output/commands/npm-help.html +++ b/deps/npm/docs/output/commands/npm-help.html @@ -141,9 +141,9 @@
      -

      +

      npm-help - @10.8.0 + @10.8.1

      Get help on npm
      diff --git a/deps/npm/docs/output/commands/npm-hook.html b/deps/npm/docs/output/commands/npm-hook.html index 73a7fec7ad9993..afd472bda02375 100644 --- a/deps/npm/docs/output/commands/npm-hook.html +++ b/deps/npm/docs/output/commands/npm-hook.html @@ -141,9 +141,9 @@
      -

      +

      npm-hook - @10.8.0 + @10.8.1

      Manage registry hooks
      diff --git a/deps/npm/docs/output/commands/npm-init.html b/deps/npm/docs/output/commands/npm-init.html index a7eeececb33df9..634768de35c536 100644 --- a/deps/npm/docs/output/commands/npm-init.html +++ b/deps/npm/docs/output/commands/npm-init.html @@ -141,9 +141,9 @@
      -

      +

      npm-init - @10.8.0 + @10.8.1

      Create a package.json file
      diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html index 1cd97c41a79e3a..9a7123b892b34f 100644 --- a/deps/npm/docs/output/commands/npm-install-ci-test.html +++ b/deps/npm/docs/output/commands/npm-install-ci-test.html @@ -141,9 +141,9 @@
      -

      +

      npm-install-ci-test - @10.8.0 + @10.8.1

      Install a project with a clean slate and run tests
      diff --git a/deps/npm/docs/output/commands/npm-install-test.html b/deps/npm/docs/output/commands/npm-install-test.html index 78fb874a8208a1..f953d621cc9ec8 100644 --- a/deps/npm/docs/output/commands/npm-install-test.html +++ b/deps/npm/docs/output/commands/npm-install-test.html @@ -141,9 +141,9 @@
      -

      +

      npm-install-test - @10.8.0 + @10.8.1

      Install package(s) and run tests
      diff --git a/deps/npm/docs/output/commands/npm-install.html b/deps/npm/docs/output/commands/npm-install.html index e8c03b3d91dd85..23cc94750d0ad5 100644 --- a/deps/npm/docs/output/commands/npm-install.html +++ b/deps/npm/docs/output/commands/npm-install.html @@ -141,9 +141,9 @@
      -

      +

      npm-install - @10.8.0 + @10.8.1

      Install a package
      diff --git a/deps/npm/docs/output/commands/npm-link.html b/deps/npm/docs/output/commands/npm-link.html index 1f20e99c5ff76e..e018b25adde2b9 100644 --- a/deps/npm/docs/output/commands/npm-link.html +++ b/deps/npm/docs/output/commands/npm-link.html @@ -141,9 +141,9 @@
      -

      +

      npm-link - @10.8.0 + @10.8.1

      Symlink a package folder
      diff --git a/deps/npm/docs/output/commands/npm-login.html b/deps/npm/docs/output/commands/npm-login.html index 821d2158709a58..4ecb190ad3db7b 100644 --- a/deps/npm/docs/output/commands/npm-login.html +++ b/deps/npm/docs/output/commands/npm-login.html @@ -141,9 +141,9 @@
      -

      +

      npm-login - @10.8.0 + @10.8.1

      Login to a registry user account
      diff --git a/deps/npm/docs/output/commands/npm-logout.html b/deps/npm/docs/output/commands/npm-logout.html index 0ae8a1059ac71d..724292567d79a9 100644 --- a/deps/npm/docs/output/commands/npm-logout.html +++ b/deps/npm/docs/output/commands/npm-logout.html @@ -141,9 +141,9 @@
      -

      +

      npm-logout - @10.8.0 + @10.8.1

      Log out of the registry
      diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html index f46d1f062f283d..df92c00c059cd6 100644 --- a/deps/npm/docs/output/commands/npm-ls.html +++ b/deps/npm/docs/output/commands/npm-ls.html @@ -141,9 +141,9 @@
      -

      +

      npm-ls - @10.8.0 + @10.8.1

      List installed packages
      @@ -168,7 +168,7 @@

      Description

      the results to only the paths to the packages named. Note that nested packages will also show the paths to the specified packages. For example, running npm ls promzard in npm's source tree will show:

      -
      npm@10.8.0 /path/to/npm
      +
      npm@10.8.1 /path/to/npm
       └─┬ init-package-json@0.0.4
         └── promzard@0.1.5
       
      diff --git a/deps/npm/docs/output/commands/npm-org.html b/deps/npm/docs/output/commands/npm-org.html index fa3cf17fe91ce5..84e9c5968b9a8a 100644 --- a/deps/npm/docs/output/commands/npm-org.html +++ b/deps/npm/docs/output/commands/npm-org.html @@ -141,9 +141,9 @@
      -

      +

      npm-org - @10.8.0 + @10.8.1

      Manage orgs
      diff --git a/deps/npm/docs/output/commands/npm-outdated.html b/deps/npm/docs/output/commands/npm-outdated.html index c7f265fc45e6e5..2bd3e8079825b8 100644 --- a/deps/npm/docs/output/commands/npm-outdated.html +++ b/deps/npm/docs/output/commands/npm-outdated.html @@ -141,9 +141,9 @@
      -

      +

      npm-outdated - @10.8.0 + @10.8.1

      Check for outdated packages
      diff --git a/deps/npm/docs/output/commands/npm-owner.html b/deps/npm/docs/output/commands/npm-owner.html index 4b69069eb1cb8d..2877b42a263767 100644 --- a/deps/npm/docs/output/commands/npm-owner.html +++ b/deps/npm/docs/output/commands/npm-owner.html @@ -141,9 +141,9 @@
      -

      +

      npm-owner - @10.8.0 + @10.8.1

      Manage package owners
      diff --git a/deps/npm/docs/output/commands/npm-pack.html b/deps/npm/docs/output/commands/npm-pack.html index eed8ab39c212e3..143a87d02e59ba 100644 --- a/deps/npm/docs/output/commands/npm-pack.html +++ b/deps/npm/docs/output/commands/npm-pack.html @@ -141,9 +141,9 @@
      -

      +

      npm-pack - @10.8.0 + @10.8.1

      Create a tarball from a package
      diff --git a/deps/npm/docs/output/commands/npm-ping.html b/deps/npm/docs/output/commands/npm-ping.html index 26fe123493be79..f78d6c5be6e640 100644 --- a/deps/npm/docs/output/commands/npm-ping.html +++ b/deps/npm/docs/output/commands/npm-ping.html @@ -141,9 +141,9 @@
      -

      +

      npm-ping - @10.8.0 + @10.8.1

      Ping npm registry
      diff --git a/deps/npm/docs/output/commands/npm-pkg.html b/deps/npm/docs/output/commands/npm-pkg.html index aa85100d6e7925..bfa083f4db1fb1 100644 --- a/deps/npm/docs/output/commands/npm-pkg.html +++ b/deps/npm/docs/output/commands/npm-pkg.html @@ -141,9 +141,9 @@
      -

      +

      npm-pkg - @10.8.0 + @10.8.1

      Manages your package.json
      diff --git a/deps/npm/docs/output/commands/npm-prefix.html b/deps/npm/docs/output/commands/npm-prefix.html index 954ec28a8ea7fc..726177323d7072 100644 --- a/deps/npm/docs/output/commands/npm-prefix.html +++ b/deps/npm/docs/output/commands/npm-prefix.html @@ -141,9 +141,9 @@
      -

      +

      npm-prefix - @10.8.0 + @10.8.1

      Display prefix
      diff --git a/deps/npm/docs/output/commands/npm-profile.html b/deps/npm/docs/output/commands/npm-profile.html index 8d7472d64f5495..58dbf8d78faf7a 100644 --- a/deps/npm/docs/output/commands/npm-profile.html +++ b/deps/npm/docs/output/commands/npm-profile.html @@ -141,9 +141,9 @@
      -

      +

      npm-profile - @10.8.0 + @10.8.1

      Change settings on your registry profile
      diff --git a/deps/npm/docs/output/commands/npm-prune.html b/deps/npm/docs/output/commands/npm-prune.html index 2ac404508a4472..06c076db286e32 100644 --- a/deps/npm/docs/output/commands/npm-prune.html +++ b/deps/npm/docs/output/commands/npm-prune.html @@ -141,9 +141,9 @@
      -

      +

      npm-prune - @10.8.0 + @10.8.1

      Remove extraneous packages
      diff --git a/deps/npm/docs/output/commands/npm-publish.html b/deps/npm/docs/output/commands/npm-publish.html index 8ca49253fbb0eb..970a2228070cbb 100644 --- a/deps/npm/docs/output/commands/npm-publish.html +++ b/deps/npm/docs/output/commands/npm-publish.html @@ -141,9 +141,9 @@
      -

      +

      npm-publish - @10.8.0 + @10.8.1

      Publish a package
      @@ -233,10 +233,11 @@

      tag

    If you ask npm to install a package and don't tell it a specific version, then it will install the specified tag.

    -

    Also the tag that is added to the package@version specified by the npm tag -command, if no explicit tag is given.

    +

    It is the tag added to the package@version specified in the npm dist-tag add command, if no explicit tag is given.

    When used by the npm diff command, this is the tag used to fetch the tarball that will be compared with the local files by default.

    +

    If used in the npm publish command, this is the tag that will be added to +the package submitted to the registry.

    access

    • Default: 'public' for new packages, existing packages it will not change the diff --git a/deps/npm/docs/output/commands/npm-query.html b/deps/npm/docs/output/commands/npm-query.html index 1b9c9dccc7b3db..4327c1245f90d0 100644 --- a/deps/npm/docs/output/commands/npm-query.html +++ b/deps/npm/docs/output/commands/npm-query.html @@ -141,9 +141,9 @@
      -

      +

      npm-query - @10.8.0 + @10.8.1

      Dependency selector query
      diff --git a/deps/npm/docs/output/commands/npm-rebuild.html b/deps/npm/docs/output/commands/npm-rebuild.html index da577ba779c3d7..b722d7456a506a 100644 --- a/deps/npm/docs/output/commands/npm-rebuild.html +++ b/deps/npm/docs/output/commands/npm-rebuild.html @@ -141,9 +141,9 @@
      -

      +

      npm-rebuild - @10.8.0 + @10.8.1

      Rebuild a package
      diff --git a/deps/npm/docs/output/commands/npm-repo.html b/deps/npm/docs/output/commands/npm-repo.html index 3664db2261e6d9..dd77662cb434d9 100644 --- a/deps/npm/docs/output/commands/npm-repo.html +++ b/deps/npm/docs/output/commands/npm-repo.html @@ -141,9 +141,9 @@
      -

      +

      npm-repo - @10.8.0 + @10.8.1

      Open package repository page in the browser
      diff --git a/deps/npm/docs/output/commands/npm-restart.html b/deps/npm/docs/output/commands/npm-restart.html index 28b77442350989..6573171d2ca1b5 100644 --- a/deps/npm/docs/output/commands/npm-restart.html +++ b/deps/npm/docs/output/commands/npm-restart.html @@ -141,9 +141,9 @@
      -

      +

      npm-restart - @10.8.0 + @10.8.1

      Restart a package
      diff --git a/deps/npm/docs/output/commands/npm-root.html b/deps/npm/docs/output/commands/npm-root.html index e75f2cf4365022..b0d2d2743346e0 100644 --- a/deps/npm/docs/output/commands/npm-root.html +++ b/deps/npm/docs/output/commands/npm-root.html @@ -141,9 +141,9 @@
      -

      +

      npm-root - @10.8.0 + @10.8.1

      Display npm root
      diff --git a/deps/npm/docs/output/commands/npm-run-script.html b/deps/npm/docs/output/commands/npm-run-script.html index 5fecae8454429a..9639f09baae960 100644 --- a/deps/npm/docs/output/commands/npm-run-script.html +++ b/deps/npm/docs/output/commands/npm-run-script.html @@ -141,9 +141,9 @@
      -

      +

      npm-run-script - @10.8.0 + @10.8.1

      Run arbitrary package scripts
      diff --git a/deps/npm/docs/output/commands/npm-sbom.html b/deps/npm/docs/output/commands/npm-sbom.html index c4e3f3063bf78b..d0f10a7ccc0816 100644 --- a/deps/npm/docs/output/commands/npm-sbom.html +++ b/deps/npm/docs/output/commands/npm-sbom.html @@ -141,9 +141,9 @@
      -

      +

      npm-sbom - @10.8.0 + @10.8.1

      Generate a Software Bill of Materials (SBOM)
      diff --git a/deps/npm/docs/output/commands/npm-search.html b/deps/npm/docs/output/commands/npm-search.html index 67a609015eeca8..6a4897dfe29940 100644 --- a/deps/npm/docs/output/commands/npm-search.html +++ b/deps/npm/docs/output/commands/npm-search.html @@ -141,9 +141,9 @@
      -

      +

      npm-search - @10.8.0 + @10.8.1

      Search for packages
      diff --git a/deps/npm/docs/output/commands/npm-shrinkwrap.html b/deps/npm/docs/output/commands/npm-shrinkwrap.html index 0ca603a788b007..24957cb2d3864d 100644 --- a/deps/npm/docs/output/commands/npm-shrinkwrap.html +++ b/deps/npm/docs/output/commands/npm-shrinkwrap.html @@ -141,9 +141,9 @@
      -

      +

      npm-shrinkwrap - @10.8.0 + @10.8.1

      Lock down dependency versions for publication
      diff --git a/deps/npm/docs/output/commands/npm-star.html b/deps/npm/docs/output/commands/npm-star.html index ab7371e2b91cdf..4adbcafb8c0e24 100644 --- a/deps/npm/docs/output/commands/npm-star.html +++ b/deps/npm/docs/output/commands/npm-star.html @@ -141,9 +141,9 @@
      -

      +

      npm-star - @10.8.0 + @10.8.1

      Mark your favorite packages
      diff --git a/deps/npm/docs/output/commands/npm-stars.html b/deps/npm/docs/output/commands/npm-stars.html index 2ed1193c1e6f1d..05dc3fea90abff 100644 --- a/deps/npm/docs/output/commands/npm-stars.html +++ b/deps/npm/docs/output/commands/npm-stars.html @@ -141,9 +141,9 @@
      -

      +

      npm-stars - @10.8.0 + @10.8.1

      View packages marked as favorites
      diff --git a/deps/npm/docs/output/commands/npm-start.html b/deps/npm/docs/output/commands/npm-start.html index ade6e79ff9eff0..76b0727b964c86 100644 --- a/deps/npm/docs/output/commands/npm-start.html +++ b/deps/npm/docs/output/commands/npm-start.html @@ -141,9 +141,9 @@
      -

      +

      npm-start - @10.8.0 + @10.8.1

      Start a package
      diff --git a/deps/npm/docs/output/commands/npm-stop.html b/deps/npm/docs/output/commands/npm-stop.html index 57deebf6ac7e39..8044aa976bb6d4 100644 --- a/deps/npm/docs/output/commands/npm-stop.html +++ b/deps/npm/docs/output/commands/npm-stop.html @@ -141,9 +141,9 @@
      -

      +

      npm-stop - @10.8.0 + @10.8.1

      Stop a package
      diff --git a/deps/npm/docs/output/commands/npm-team.html b/deps/npm/docs/output/commands/npm-team.html index 00b739517f6cdb..61646ebf3e5615 100644 --- a/deps/npm/docs/output/commands/npm-team.html +++ b/deps/npm/docs/output/commands/npm-team.html @@ -141,9 +141,9 @@
      -

      +

      npm-team - @10.8.0 + @10.8.1

      Manage organization teams and team memberships
      diff --git a/deps/npm/docs/output/commands/npm-test.html b/deps/npm/docs/output/commands/npm-test.html index d9c73d48618535..4889992fe96bb7 100644 --- a/deps/npm/docs/output/commands/npm-test.html +++ b/deps/npm/docs/output/commands/npm-test.html @@ -141,9 +141,9 @@
      -

      +

      npm-test - @10.8.0 + @10.8.1

      Test a package
      diff --git a/deps/npm/docs/output/commands/npm-token.html b/deps/npm/docs/output/commands/npm-token.html index ac6dde4adb31af..76a0ddc501cd72 100644 --- a/deps/npm/docs/output/commands/npm-token.html +++ b/deps/npm/docs/output/commands/npm-token.html @@ -141,9 +141,9 @@
      -

      +

      npm-token - @10.8.0 + @10.8.1

      Manage your authentication tokens
      diff --git a/deps/npm/docs/output/commands/npm-uninstall.html b/deps/npm/docs/output/commands/npm-uninstall.html index 32fc83fc1f1233..d8816dc7538056 100644 --- a/deps/npm/docs/output/commands/npm-uninstall.html +++ b/deps/npm/docs/output/commands/npm-uninstall.html @@ -141,9 +141,9 @@
      -

      +

      npm-uninstall - @10.8.0 + @10.8.1

      Remove a package
      diff --git a/deps/npm/docs/output/commands/npm-unpublish.html b/deps/npm/docs/output/commands/npm-unpublish.html index f9e914d67ff963..0ef9855c1e2499 100644 --- a/deps/npm/docs/output/commands/npm-unpublish.html +++ b/deps/npm/docs/output/commands/npm-unpublish.html @@ -141,9 +141,9 @@
      -

      +

      npm-unpublish - @10.8.0 + @10.8.1

      Remove a package from the registry
      diff --git a/deps/npm/docs/output/commands/npm-unstar.html b/deps/npm/docs/output/commands/npm-unstar.html index 7845f3b401f8cc..5bc670d8e683e5 100644 --- a/deps/npm/docs/output/commands/npm-unstar.html +++ b/deps/npm/docs/output/commands/npm-unstar.html @@ -141,9 +141,9 @@
      -

      +

      npm-unstar - @10.8.0 + @10.8.1

      Remove an item from your favorite packages
      diff --git a/deps/npm/docs/output/commands/npm-update.html b/deps/npm/docs/output/commands/npm-update.html index 12231c0e838931..c4992cee5b6c73 100644 --- a/deps/npm/docs/output/commands/npm-update.html +++ b/deps/npm/docs/output/commands/npm-update.html @@ -141,9 +141,9 @@
      -

      +

      npm-update - @10.8.0 + @10.8.1

      Update packages
      diff --git a/deps/npm/docs/output/commands/npm-version.html b/deps/npm/docs/output/commands/npm-version.html index b1092d2af20333..de99cea865a282 100644 --- a/deps/npm/docs/output/commands/npm-version.html +++ b/deps/npm/docs/output/commands/npm-version.html @@ -141,9 +141,9 @@
      -

      +

      npm-version - @10.8.0 + @10.8.1

      Bump a package version
      diff --git a/deps/npm/docs/output/commands/npm-view.html b/deps/npm/docs/output/commands/npm-view.html index de9d9bd0280fef..d84240fa2b72b6 100644 --- a/deps/npm/docs/output/commands/npm-view.html +++ b/deps/npm/docs/output/commands/npm-view.html @@ -141,9 +141,9 @@
      -

      +

      npm-view - @10.8.0 + @10.8.1

      View registry info
      diff --git a/deps/npm/docs/output/commands/npm-whoami.html b/deps/npm/docs/output/commands/npm-whoami.html index 8cb3231e1e9030..c025f1975f92d0 100644 --- a/deps/npm/docs/output/commands/npm-whoami.html +++ b/deps/npm/docs/output/commands/npm-whoami.html @@ -141,9 +141,9 @@
      -

      +

      npm-whoami - @10.8.0 + @10.8.1

      Display npm username
      diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html index 9094333b74138e..81a9e3aa38f9e9 100644 --- a/deps/npm/docs/output/commands/npm.html +++ b/deps/npm/docs/output/commands/npm.html @@ -141,9 +141,9 @@
      -

      +

      npm - @10.8.0 + @10.8.1

      javascript package manager
      @@ -158,7 +158,7 @@

      Table of contents

      Note: This command is unaware of workspaces.

      Version

      -

      10.8.0

      +

      10.8.1

      Description

      npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency diff --git a/deps/npm/docs/output/commands/npx.html b/deps/npm/docs/output/commands/npx.html index b3da26ebd097e0..0f25bd41f35af6 100644 --- a/deps/npm/docs/output/commands/npx.html +++ b/deps/npm/docs/output/commands/npx.html @@ -141,9 +141,9 @@

      -

      +

      npx - @10.8.0 + @10.8.1

      Run a command from a local or remote npm package
      diff --git a/deps/npm/docs/output/configuring-npm/folders.html b/deps/npm/docs/output/configuring-npm/folders.html index 52891fddf891d4..f0eebc8665cf58 100644 --- a/deps/npm/docs/output/configuring-npm/folders.html +++ b/deps/npm/docs/output/configuring-npm/folders.html @@ -141,9 +141,9 @@
      -

      +

      folders - @10.8.0 + @10.8.1

      Folder Structures Used by npm
      diff --git a/deps/npm/docs/output/configuring-npm/install.html b/deps/npm/docs/output/configuring-npm/install.html index e9f278ee30f88f..2d874b6f05696c 100644 --- a/deps/npm/docs/output/configuring-npm/install.html +++ b/deps/npm/docs/output/configuring-npm/install.html @@ -141,9 +141,9 @@
      -

      +

      install - @10.8.0 + @10.8.1

      Download and install node and npm
      diff --git a/deps/npm/docs/output/configuring-npm/npm-global.html b/deps/npm/docs/output/configuring-npm/npm-global.html index 52891fddf891d4..f0eebc8665cf58 100644 --- a/deps/npm/docs/output/configuring-npm/npm-global.html +++ b/deps/npm/docs/output/configuring-npm/npm-global.html @@ -141,9 +141,9 @@
      -

      +

      folders - @10.8.0 + @10.8.1

      Folder Structures Used by npm
      diff --git a/deps/npm/docs/output/configuring-npm/npm-json.html b/deps/npm/docs/output/configuring-npm/npm-json.html index ebf67c36fb2bd2..895df5190c2487 100644 --- a/deps/npm/docs/output/configuring-npm/npm-json.html +++ b/deps/npm/docs/output/configuring-npm/npm-json.html @@ -141,9 +141,9 @@
      -

      +

      package.json - @10.8.0 + @10.8.1

      Specifics of npm's package.json handling
      diff --git a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html index 4882e030da6e1e..b8b858fa618e02 100644 --- a/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html +++ b/deps/npm/docs/output/configuring-npm/npm-shrinkwrap-json.html @@ -141,9 +141,9 @@
      -

      +

      npm-shrinkwrap.json - @10.8.0 + @10.8.1

      A publishable lockfile
      diff --git a/deps/npm/docs/output/configuring-npm/npmrc.html b/deps/npm/docs/output/configuring-npm/npmrc.html index 60595e7cd92066..763c87f83f4f13 100644 --- a/deps/npm/docs/output/configuring-npm/npmrc.html +++ b/deps/npm/docs/output/configuring-npm/npmrc.html @@ -141,9 +141,9 @@
      -

      +

      npmrc - @10.8.0 + @10.8.1

      The npm config files
      diff --git a/deps/npm/docs/output/configuring-npm/package-json.html b/deps/npm/docs/output/configuring-npm/package-json.html index ebf67c36fb2bd2..895df5190c2487 100644 --- a/deps/npm/docs/output/configuring-npm/package-json.html +++ b/deps/npm/docs/output/configuring-npm/package-json.html @@ -141,9 +141,9 @@
      -

      +

      package.json - @10.8.0 + @10.8.1

      Specifics of npm's package.json handling
      diff --git a/deps/npm/docs/output/configuring-npm/package-lock-json.html b/deps/npm/docs/output/configuring-npm/package-lock-json.html index c0951061760ce3..838934d71c4c9f 100644 --- a/deps/npm/docs/output/configuring-npm/package-lock-json.html +++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html @@ -141,9 +141,9 @@
      -

      +

      package-lock.json - @10.8.0 + @10.8.1

      A manifestation of the manifest
      diff --git a/deps/npm/docs/output/using-npm/config.html b/deps/npm/docs/output/using-npm/config.html index 8e420e6cc38997..79db31dc5c396a 100644 --- a/deps/npm/docs/output/using-npm/config.html +++ b/deps/npm/docs/output/using-npm/config.html @@ -141,9 +141,9 @@
      -

      +

      config - @10.8.0 + @10.8.1

      More than you probably want to know about npm configuration
      @@ -1273,10 +1273,11 @@

      tag

    If you ask npm to install a package and don't tell it a specific version, then it will install the specified tag.

    -

    Also the tag that is added to the package@version specified by the npm tag -command, if no explicit tag is given.

    +

    It is the tag added to the package@version specified in the npm dist-tag add command, if no explicit tag is given.

    When used by the npm diff command, this is the tag used to fetch the tarball that will be compared with the local files by default.

    +

    If used in the npm publish command, this is the tag that will be added to +the package submitted to the registry.

    tag-version-prefix

  • -18.20.4
    +18.20.5
    +18.20.4
    18.20.3
    18.20.2
    18.20.1
    diff --git a/doc/api/webcrypto.md b/doc/api/webcrypto.md index bbe58031e481dc..4ad7ee832a26fb 100644 --- a/doc/api/webcrypto.md +++ b/doc/api/webcrypto.md @@ -557,7 +557,7 @@ The algorithms currently supported include: