setup-cpp
Version:
Install all the tools required for building and testing C++/C projects.
1,680 lines (1,679 loc) • 335 kB
JavaScript
import { t as aQ, z as AB } from "../lib.mjs";
import QB from "url";
import de from "events";
import XA from "assert";
import hE from "net";
import Ne from "http";
import we from "stream";
import eQ from "buffer";
import aE from "util";
import EB from "querystring";
import cQ from "stream/web";
import DQ from "node:stream";
import _A from "node:util";
import ye from "node:events";
import eB from "worker_threads";
import BB from "perf_hooks";
import ke from "util/types";
import gB from "tls";
function IB(Q, N) {
for (var o = 0; o < N.length; o++) {
const e = N[o];
if (typeof e != "string" && !Array.isArray(e)) {
for (const A in e)
if (A !== "default" && !(A in Q)) {
const E = Object.getOwnPropertyDescriptor(e, A);
E && Object.defineProperty(Q, A, E.get ? E : {
enumerable: !0,
get: () => e[A]
});
}
}
}
return Object.freeze(Object.defineProperty(Q, Symbol.toStringTag, { value: "Module" }));
}
var yQ, ME;
function bA() {
return ME || (ME = 1, yQ = {
kClose: Symbol("close"),
kDestroy: Symbol("destroy"),
kDispatch: Symbol("dispatch"),
kUrl: Symbol("url"),
kWriting: Symbol("writing"),
kResuming: Symbol("resuming"),
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"),
kKeepAliveTimeoutValue: Symbol("keep alive timeout"),
kKeepAlive: Symbol("keep alive"),
kHeadersTimeout: Symbol("headers timeout"),
kBodyTimeout: Symbol("body timeout"),
kServerName: Symbol("server name"),
kLocalAddress: Symbol("local address"),
kHost: Symbol("host"),
kNoRef: Symbol("no ref"),
kBodyUsed: Symbol("used"),
kRunning: Symbol("running"),
kBlocking: Symbol("blocking"),
kPending: Symbol("pending"),
kSize: Symbol("size"),
kBusy: Symbol("busy"),
kQueued: Symbol("queued"),
kFree: Symbol("free"),
kConnected: Symbol("connected"),
kClosed: Symbol("closed"),
kNeedDrain: Symbol("need drain"),
kReset: Symbol("reset"),
kDestroyed: Symbol.for("nodejs.stream.destroyed"),
kMaxHeadersSize: Symbol("max headers size"),
kRunningIdx: Symbol("running index"),
kPendingIdx: Symbol("pending index"),
kError: Symbol("error"),
kClients: Symbol("clients"),
kClient: Symbol("client"),
kParser: Symbol("parser"),
kOnDestroyed: Symbol("destroy callbacks"),
kPipelining: Symbol("pipelining"),
kSocket: Symbol("socket"),
kHostHeader: Symbol("host header"),
kConnector: Symbol("connector"),
kStrictContentLength: Symbol("strict content length"),
kMaxRedirections: Symbol("maxRedirections"),
kMaxRequests: Symbol("maxRequestsPerClient"),
kProxy: Symbol("proxy agent options"),
kCounter: Symbol("socket request counter"),
kInterceptors: Symbol("dispatch interceptors"),
kMaxResponseSize: Symbol("max response size"),
kHTTP2Session: Symbol("http2Session"),
kHTTP2SessionState: Symbol("http2Session state"),
kHTTP2BuildRequest: Symbol("http2 build request"),
kHTTP1BuildRequest: Symbol("http1 build request"),
kHTTP2CopyHeaders: Symbol("http2 copy headers"),
kHTTPConnVersion: Symbol("http connection version"),
kRetryHandlerDefaultRetry: Symbol("retry agent default retry"),
kConstruct: Symbol("constructable")
}), yQ;
}
var kQ, JE;
function PA() {
if (JE) return kQ;
JE = 1;
class Q extends Error {
constructor(t) {
super(t), this.name = "UndiciError", this.code = "UND_ERR";
}
}
class N extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, N), this.name = "ConnectTimeoutError", this.message = t || "Connect Timeout Error", this.code = "UND_ERR_CONNECT_TIMEOUT";
}
}
class o extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, o), this.name = "HeadersTimeoutError", this.message = t || "Headers Timeout Error", this.code = "UND_ERR_HEADERS_TIMEOUT";
}
}
class e extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, e), this.name = "HeadersOverflowError", this.message = t || "Headers Overflow Error", this.code = "UND_ERR_HEADERS_OVERFLOW";
}
}
class A extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, A), this.name = "BodyTimeoutError", this.message = t || "Body Timeout Error", this.code = "UND_ERR_BODY_TIMEOUT";
}
}
class E extends Q {
constructor(t, k, L, R) {
super(t), Error.captureStackTrace(this, E), this.name = "ResponseStatusCodeError", this.message = t || "Response Status Code Error", this.code = "UND_ERR_RESPONSE_STATUS_CODE", this.body = R, this.status = k, this.statusCode = k, this.headers = L;
}
}
class i extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, i), this.name = "InvalidArgumentError", this.message = t || "Invalid Argument Error", this.code = "UND_ERR_INVALID_ARG";
}
}
class f extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, f), this.name = "InvalidReturnValueError", this.message = t || "Invalid Return Value Error", this.code = "UND_ERR_INVALID_RETURN_VALUE";
}
}
class n extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, n), this.name = "AbortError", this.message = t || "Request aborted", this.code = "UND_ERR_ABORTED";
}
}
class u extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, u), this.name = "InformationalError", this.message = t || "Request information", this.code = "UND_ERR_INFO";
}
}
class I extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, I), this.name = "RequestContentLengthMismatchError", this.message = t || "Request body length does not match content-length header", this.code = "UND_ERR_REQ_CONTENT_LENGTH_MISMATCH";
}
}
class h extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, h), this.name = "ResponseContentLengthMismatchError", this.message = t || "Response body length does not match content-length header", this.code = "UND_ERR_RES_CONTENT_LENGTH_MISMATCH";
}
}
class w extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, w), this.name = "ClientDestroyedError", this.message = t || "The client is destroyed", this.code = "UND_ERR_DESTROYED";
}
}
class y extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, y), this.name = "ClientClosedError", this.message = t || "The client is closed", this.code = "UND_ERR_CLOSED";
}
}
class l extends Q {
constructor(t, k) {
super(t), Error.captureStackTrace(this, l), this.name = "SocketError", this.message = t || "Socket error", this.code = "UND_ERR_SOCKET", this.socket = k;
}
}
class C extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, C), this.name = "NotSupportedError", this.message = t || "Not supported error", this.code = "UND_ERR_NOT_SUPPORTED";
}
}
class a extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, C), this.name = "MissingUpstreamError", this.message = t || "No upstream has been added to the BalancedPool", this.code = "UND_ERR_BPL_MISSING_UPSTREAM";
}
}
class c extends Error {
constructor(t, k, L) {
super(t), Error.captureStackTrace(this, c), this.name = "HTTPParserError", this.code = k ? `HPE_${k}` : void 0, this.data = L ? L.toString() : void 0;
}
}
class F extends Q {
constructor(t) {
super(t), Error.captureStackTrace(this, F), this.name = "ResponseExceededMaxSizeError", this.message = t || "Response content exceeded max size", this.code = "UND_ERR_RES_EXCEEDED_MAX_SIZE";
}
}
class S extends Q {
constructor(t, k, { headers: L, data: R }) {
super(t), Error.captureStackTrace(this, S), this.name = "RequestRetryError", this.message = t || "Request retry error", this.code = "UND_ERR_REQ_RETRY", this.statusCode = k, this.data = R, this.headers = L;
}
}
return kQ = {
HTTPParserError: c,
UndiciError: Q,
HeadersTimeoutError: o,
HeadersOverflowError: e,
BodyTimeoutError: A,
RequestContentLengthMismatchError: I,
ConnectTimeoutError: N,
ResponseStatusCodeError: E,
InvalidArgumentError: i,
InvalidReturnValueError: f,
RequestAbortedError: n,
ClientDestroyedError: w,
ClientClosedError: y,
InformationalError: u,
SocketError: l,
NotSupportedError: C,
ResponseContentLengthMismatchError: h,
BalancedPoolMissingUpstreamError: a,
ResponseExceededMaxSizeError: F,
RequestRetryError: S
}, kQ;
}
var UQ, GE;
function CB() {
if (GE) return UQ;
GE = 1;
const Q = de;
class N extends Q {
dispatch() {
throw new Error("not implemented");
}
close() {
throw new Error("not implemented");
}
destroy() {
throw new Error("not implemented");
}
}
return UQ = N, UQ;
}
var SQ, bE;
function lQ() {
if (bE) return SQ;
bE = 1;
const Q = CB(), {
ClientDestroyedError: N,
ClientClosedError: o,
InvalidArgumentError: e
} = PA(), { kDestroy: A, kClose: E, kDispatch: i, kInterceptors: f } = bA(), n = Symbol("destroyed"), u = Symbol("closed"), I = Symbol("onDestroyed"), h = Symbol("onClosed"), w = Symbol("Intercepted Dispatch");
class y extends Q {
constructor() {
super(), this[n] = !1, this[I] = null, this[u] = !1, this[h] = [];
}
get destroyed() {
return this[n];
}
get closed() {
return this[u];
}
get interceptors() {
return this[f];
}
set interceptors(C) {
if (C) {
for (let a = C.length - 1; a >= 0; a--)
if (typeof this[f][a] != "function")
throw new e("interceptor must be an function");
}
this[f] = C;
}
close(C) {
if (C === void 0)
return new Promise((c, F) => {
this.close((S, J) => S ? F(S) : c(J));
});
if (typeof C != "function")
throw new e("invalid callback");
if (this[n]) {
queueMicrotask(() => C(new N(), null));
return;
}
if (this[u]) {
this[h] ? this[h].push(C) : queueMicrotask(() => C(null, null));
return;
}
this[u] = !0, this[h].push(C);
const a = () => {
const c = this[h];
this[h] = null;
for (let F = 0; F < c.length; F++)
c[F](null, null);
};
this[E]().then(() => this.destroy()).then(() => {
queueMicrotask(a);
});
}
destroy(C, a) {
if (typeof C == "function" && (a = C, C = null), a === void 0)
return new Promise((F, S) => {
this.destroy(C, (J, t) => J ? (
/* istanbul ignore next: should never error */
S(J)
) : F(t));
});
if (typeof a != "function")
throw new e("invalid callback");
if (this[n]) {
this[I] ? this[I].push(a) : queueMicrotask(() => a(null, null));
return;
}
C || (C = new N()), this[n] = !0, this[I] = this[I] || [], this[I].push(a);
const c = () => {
const F = this[I];
this[I] = null;
for (let S = 0; S < F.length; S++)
F[S](null, null);
};
this[A](C).then(() => {
queueMicrotask(c);
});
}
[w](C, a) {
if (!this[f] || this[f].length === 0)
return this[w] = this[i], this[i](C, a);
let c = this[i].bind(this);
for (let F = this[f].length - 1; F >= 0; F--)
c = this[f][F](c);
return this[w] = c, c(C, a);
}
dispatch(C, a) {
if (!a || typeof a != "object")
throw new e("handler must be an object");
try {
if (!C || typeof C != "object")
throw new e("opts must be an object.");
if (this[n] || this[I])
throw new N();
if (this[u])
throw new o();
return this[w](C, a);
} catch (c) {
if (typeof a.onError != "function")
throw new e("invalid onError method");
return a.onError(c), !1;
}
}
}
return SQ = y, SQ;
}
var YQ, pE;
function tB() {
if (pE) return YQ;
pE = 1;
const Q = 2048, N = Q - 1;
class o {
constructor() {
this.bottom = 0, this.top = 0, this.list = new Array(Q), this.next = null;
}
isEmpty() {
return this.top === this.bottom;
}
isFull() {
return (this.top + 1 & N) === this.bottom;
}
push(A) {
this.list[this.top] = A, this.top = this.top + 1 & N;
}
shift() {
const A = this.list[this.bottom];
return A === void 0 ? null : (this.list[this.bottom] = void 0, this.bottom = this.bottom + 1 & N, A);
}
}
return YQ = class {
constructor() {
this.head = this.tail = new o();
}
isEmpty() {
return this.head.isEmpty();
}
push(A) {
this.head.isFull() && (this.head = this.head.next = new o()), this.head.push(A);
}
shift() {
const A = this.tail, E = A.shift();
return A.isEmpty() && A.next !== null && (this.tail = A.next), E;
}
}, YQ;
}
var LQ, mE;
function iB() {
if (mE) return LQ;
mE = 1;
const { kFree: Q, kConnected: N, kPending: o, kQueued: e, kRunning: A, kSize: E } = bA(), i = Symbol("pool");
class f {
constructor(u) {
this[i] = u;
}
get connected() {
return this[i][N];
}
get free() {
return this[i][Q];
}
get pending() {
return this[i][o];
}
get queued() {
return this[i][e];
}
get running() {
return this[i][A];
}
get size() {
return this[i][E];
}
}
return LQ = f, LQ;
}
var MQ, VE;
function sB() {
if (VE) return MQ;
VE = 1;
const Q = lQ(), N = tB(), { kConnected: o, kSize: e, kRunning: A, kPending: E, kQueued: i, kBusy: f, kFree: n, kUrl: u, kClose: I, kDestroy: h, kDispatch: w } = bA(), y = iB(), l = Symbol("clients"), C = Symbol("needDrain"), a = Symbol("queue"), c = Symbol("closed resolve"), F = Symbol("onDrain"), S = Symbol("onConnect"), J = Symbol("onDisconnect"), t = Symbol("onConnectionError"), k = Symbol("get dispatcher"), L = Symbol("add client"), R = Symbol("remove client"), b = Symbol("stats");
class m extends Q {
constructor() {
super(), this[a] = new N(), this[l] = [], this[i] = 0;
const Y = this;
this[F] = function(T, iA) {
const tA = Y[a];
let AA = !1;
for (; !AA; ) {
const K = tA.shift();
if (!K)
break;
Y[i]--, AA = !this.dispatch(K.opts, K.handler);
}
this[C] = AA, !this[C] && Y[C] && (Y[C] = !1, Y.emit("drain", T, [Y, ...iA])), Y[c] && tA.isEmpty() && Promise.all(Y[l].map((K) => K.close())).then(Y[c]);
}, this[S] = (H, T) => {
Y.emit("connect", H, [Y, ...T]);
}, this[J] = (H, T, iA) => {
Y.emit("disconnect", H, [Y, ...T], iA);
}, this[t] = (H, T, iA) => {
Y.emit("connectionError", H, [Y, ...T], iA);
}, this[b] = new y(this);
}
get [f]() {
return this[C];
}
get [o]() {
return this[l].filter((Y) => Y[o]).length;
}
get [n]() {
return this[l].filter((Y) => Y[o] && !Y[C]).length;
}
get [E]() {
let Y = this[i];
for (const { [E]: H } of this[l])
Y += H;
return Y;
}
get [A]() {
let Y = 0;
for (const { [A]: H } of this[l])
Y += H;
return Y;
}
get [e]() {
let Y = this[i];
for (const { [e]: H } of this[l])
Y += H;
return Y;
}
get stats() {
return this[b];
}
async [I]() {
return this[a].isEmpty() ? Promise.all(this[l].map((Y) => Y.close())) : new Promise((Y) => {
this[c] = Y;
});
}
async [h](Y) {
for (; ; ) {
const H = this[a].shift();
if (!H)
break;
H.handler.onError(Y);
}
return Promise.all(this[l].map((H) => H.destroy(Y)));
}
[w](Y, H) {
const T = this[k]();
return T ? T.dispatch(Y, H) || (T[C] = !0, this[C] = !this[k]()) : (this[C] = !0, this[a].push({ opts: Y, handler: H }), this[i]++), !this[C];
}
[L](Y) {
return Y.on("drain", this[F]).on("connect", this[S]).on("disconnect", this[J]).on("connectionError", this[t]), this[l].push(Y), this[C] && process.nextTick(() => {
this[C] && this[F](Y[u], [this, Y]);
}), this;
}
[R](Y) {
Y.close(() => {
const H = this[l].indexOf(Y);
H !== -1 && this[l].splice(H, 1);
}), this[C] = this[l].some((H) => !H[C] && H.closed !== !0 && H.destroyed !== !0);
}
}
return MQ = {
PoolBase: m,
kClients: l,
kNeedDrain: C,
kAddClient: L,
kRemoveClient: R,
kGetDispatcher: k
}, MQ;
}
var JQ, HE;
function rB() {
if (HE) return JQ;
HE = 1;
const Q = {}, N = [
"Accept",
"Accept-Encoding",
"Accept-Language",
"Accept-Ranges",
"Access-Control-Allow-Credentials",
"Access-Control-Allow-Headers",
"Access-Control-Allow-Methods",
"Access-Control-Allow-Origin",
"Access-Control-Expose-Headers",
"Access-Control-Max-Age",
"Access-Control-Request-Headers",
"Access-Control-Request-Method",
"Age",
"Allow",
"Alt-Svc",
"Alt-Used",
"Authorization",
"Cache-Control",
"Clear-Site-Data",
"Connection",
"Content-Disposition",
"Content-Encoding",
"Content-Language",
"Content-Length",
"Content-Location",
"Content-Range",
"Content-Security-Policy",
"Content-Security-Policy-Report-Only",
"Content-Type",
"Cookie",
"Cross-Origin-Embedder-Policy",
"Cross-Origin-Opener-Policy",
"Cross-Origin-Resource-Policy",
"Date",
"Device-Memory",
"Downlink",
"ECT",
"ETag",
"Expect",
"Expect-CT",
"Expires",
"Forwarded",
"From",
"Host",
"If-Match",
"If-Modified-Since",
"If-None-Match",
"If-Range",
"If-Unmodified-Since",
"Keep-Alive",
"Last-Modified",
"Link",
"Location",
"Max-Forwards",
"Origin",
"Permissions-Policy",
"Pragma",
"Proxy-Authenticate",
"Proxy-Authorization",
"RTT",
"Range",
"Referer",
"Referrer-Policy",
"Refresh",
"Retry-After",
"Sec-WebSocket-Accept",
"Sec-WebSocket-Extensions",
"Sec-WebSocket-Key",
"Sec-WebSocket-Protocol",
"Sec-WebSocket-Version",
"Server",
"Server-Timing",
"Service-Worker-Allowed",
"Service-Worker-Navigation-Preload",
"Set-Cookie",
"SourceMap",
"Strict-Transport-Security",
"Supports-Loading-Mode",
"TE",
"Timing-Allow-Origin",
"Trailer",
"Transfer-Encoding",
"Upgrade",
"Upgrade-Insecure-Requests",
"User-Agent",
"Vary",
"Via",
"WWW-Authenticate",
"X-Content-Type-Options",
"X-DNS-Prefetch-Control",
"X-Frame-Options",
"X-Permitted-Cross-Domain-Policies",
"X-Powered-By",
"X-Requested-With",
"X-XSS-Protection"
];
for (let o = 0; o < N.length; ++o) {
const e = N[o], A = e.toLowerCase();
Q[e] = Q[A] = A;
}
return Object.setPrototypeOf(Q, null), JQ = {
wellknownHeaderNames: N,
headerNameLowerCasedRecord: Q
}, JQ;
}
var GQ, xE;
function TA() {
if (xE) return GQ;
xE = 1;
const Q = XA, { kDestroyed: N, kBodyUsed: o } = bA(), { IncomingMessage: e } = Ne, A = we, E = hE, { InvalidArgumentError: i } = PA(), { Blob: f } = eQ, n = aE, { stringify: u } = EB, { headerNameLowerCasedRecord: I } = rB(), [h, w] = process.versions.node.split(".").map((B) => Number(B));
function y() {
}
function l(B) {
return B && typeof B == "object" && typeof B.pipe == "function" && typeof B.on == "function";
}
function C(B) {
return f && B instanceof f || B && typeof B == "object" && (typeof B.stream == "function" || typeof B.arrayBuffer == "function") && /^(Blob|File)$/.test(B[Symbol.toStringTag]);
}
function a(B, V) {
if (B.includes("?") || B.includes("#"))
throw new Error('Query params cannot be passed when url already contains "?" or "#".');
const v = u(V);
return v && (B += "?" + v), B;
}
function c(B) {
if (typeof B == "string") {
if (B = new URL(B), !/^https?:/.test(B.origin || B.protocol))
throw new i("Invalid URL protocol: the URL must start with `http:` or `https:`.");
return B;
}
if (!B || typeof B != "object")
throw new i("Invalid URL: The URL argument must be a non-null object.");
if (!/^https?:/.test(B.origin || B.protocol))
throw new i("Invalid URL protocol: the URL must start with `http:` or `https:`.");
if (!(B instanceof URL)) {
if (B.port != null && B.port !== "" && !Number.isFinite(parseInt(B.port)))
throw new i("Invalid URL: port must be a valid integer or a string representation of an integer.");
if (B.path != null && typeof B.path != "string")
throw new i("Invalid URL path: the path must be a string or null/undefined.");
if (B.pathname != null && typeof B.pathname != "string")
throw new i("Invalid URL pathname: the pathname must be a string or null/undefined.");
if (B.hostname != null && typeof B.hostname != "string")
throw new i("Invalid URL hostname: the hostname must be a string or null/undefined.");
if (B.origin != null && typeof B.origin != "string")
throw new i("Invalid URL origin: the origin must be a string or null/undefined.");
const V = B.port != null ? B.port : B.protocol === "https:" ? 443 : 80;
let v = B.origin != null ? B.origin : `${B.protocol}//${B.hostname}:${V}`, EA = B.path != null ? B.path : `${B.pathname || ""}${B.search || ""}`;
v.endsWith("/") && (v = v.substring(0, v.length - 1)), EA && !EA.startsWith("/") && (EA = `/${EA}`), B = new URL(v + EA);
}
return B;
}
function F(B) {
if (B = c(B), B.pathname !== "/" || B.search || B.hash)
throw new i("invalid url");
return B;
}
function S(B) {
if (B[0] === "[") {
const v = B.indexOf("]");
return Q(v !== -1), B.substring(1, v);
}
const V = B.indexOf(":");
return V === -1 ? B : B.substring(0, V);
}
function J(B) {
if (!B)
return null;
Q.strictEqual(typeof B, "string");
const V = S(B);
return E.isIP(V) ? "" : V;
}
function t(B) {
return JSON.parse(JSON.stringify(B));
}
function k(B) {
return B != null && typeof B[Symbol.asyncIterator] == "function";
}
function L(B) {
return B != null && (typeof B[Symbol.iterator] == "function" || typeof B[Symbol.asyncIterator] == "function");
}
function R(B) {
if (B == null)
return 0;
if (l(B)) {
const V = B._readableState;
return V && V.objectMode === !1 && V.ended === !0 && Number.isFinite(V.length) ? V.length : null;
} else {
if (C(B))
return B.size != null ? B.size : null;
if (AA(B))
return B.byteLength;
}
return null;
}
function b(B) {
return !B || !!(B.destroyed || B[N]);
}
function m(B) {
const V = B && B._readableState;
return b(B) && V && !V.endEmitted;
}
function W(B, V) {
B == null || !l(B) || b(B) || (typeof B.destroy == "function" ? (Object.getPrototypeOf(B).constructor === e && (B.socket = null), B.destroy(V)) : V && process.nextTick((v, EA) => {
v.emit("error", EA);
}, B, V), B.destroyed !== !0 && (B[N] = !0));
}
const Y = /timeout=(\d+)/;
function H(B) {
const V = B.toString().match(Y);
return V ? parseInt(V[1], 10) * 1e3 : null;
}
function T(B) {
return I[B] || B.toLowerCase();
}
function iA(B, V = {}) {
if (!Array.isArray(B)) return B;
for (let v = 0; v < B.length; v += 2) {
const EA = B[v].toString().toLowerCase();
let eA = V[EA];
eA ? (Array.isArray(eA) || (eA = [eA], V[EA] = eA), eA.push(B[v + 1].toString("utf8"))) : Array.isArray(B[v + 1]) ? V[EA] = B[v + 1].map((IA) => IA.toString("utf8")) : V[EA] = B[v + 1].toString("utf8");
}
return "content-length" in V && "content-disposition" in V && (V["content-disposition"] = Buffer.from(V["content-disposition"]).toString("latin1")), V;
}
function tA(B) {
const V = [];
let v = !1, EA = -1;
for (let eA = 0; eA < B.length; eA += 2) {
const IA = B[eA + 0].toString(), aA = B[eA + 1].toString("utf8");
IA.length === 14 && (IA === "content-length" || IA.toLowerCase() === "content-length") ? (V.push(IA, aA), v = !0) : IA.length === 19 && (IA === "content-disposition" || IA.toLowerCase() === "content-disposition") ? EA = V.push(IA, aA) - 1 : V.push(IA, aA);
}
return v && EA !== -1 && (V[EA] = Buffer.from(V[EA]).toString("latin1")), V;
}
function AA(B) {
return B instanceof Uint8Array || Buffer.isBuffer(B);
}
function K(B, V, v) {
if (!B || typeof B != "object")
throw new i("handler must be an object");
if (typeof B.onConnect != "function")
throw new i("invalid onConnect method");
if (typeof B.onError != "function")
throw new i("invalid onError method");
if (typeof B.onBodySent != "function" && B.onBodySent !== void 0)
throw new i("invalid onBodySent method");
if (v || V === "CONNECT") {
if (typeof B.onUpgrade != "function")
throw new i("invalid onUpgrade method");
} else {
if (typeof B.onHeaders != "function")
throw new i("invalid onHeaders method");
if (typeof B.onData != "function")
throw new i("invalid onData method");
if (typeof B.onComplete != "function")
throw new i("invalid onComplete method");
}
}
function wA(B) {
return !!(B && (A.isDisturbed ? A.isDisturbed(B) || B[o] : B[o] || B.readableDidRead || B._readableState && B._readableState.dataEmitted || m(B)));
}
function RA(B) {
return !!(B && (A.isErrored ? A.isErrored(B) : /state: 'errored'/.test(
n.inspect(B)
)));
}
function lA(B) {
return !!(B && (A.isReadable ? A.isReadable(B) : /state: 'readable'/.test(
n.inspect(B)
)));
}
function uA(B) {
return {
localAddress: B.localAddress,
localPort: B.localPort,
remoteAddress: B.remoteAddress,
remotePort: B.remotePort,
remoteFamily: B.remoteFamily,
timeout: B.timeout,
bytesWritten: B.bytesWritten,
bytesRead: B.bytesRead
};
}
async function* UA(B) {
for await (const V of B)
yield Buffer.isBuffer(V) ? V : Buffer.from(V);
}
let G;
function sA(B) {
if (G || (G = cQ.ReadableStream), G.from)
return G.from(UA(B));
let V;
return new G(
{
async start() {
V = B[Symbol.asyncIterator]();
},
async pull(v) {
const { done: EA, value: eA } = await V.next();
if (EA)
queueMicrotask(() => {
v.close();
});
else {
const IA = Buffer.isBuffer(eA) ? eA : Buffer.from(eA);
v.enqueue(new Uint8Array(IA));
}
return v.desiredSize > 0;
},
async cancel(v) {
await V.return();
}
},
0
);
}
function q(B) {
return B && typeof B == "object" && typeof B.append == "function" && typeof B.delete == "function" && typeof B.get == "function" && typeof B.getAll == "function" && typeof B.has == "function" && typeof B.set == "function" && B[Symbol.toStringTag] === "FormData";
}
function X(B) {
if (B) {
if (typeof B.throwIfAborted == "function")
B.throwIfAborted();
else if (B.aborted) {
const V = new Error("The operation was aborted");
throw V.name = "AbortError", V;
}
}
}
function O(B, V) {
return "addEventListener" in B ? (B.addEventListener("abort", V, { once: !0 }), () => B.removeEventListener("abort", V)) : (B.addListener("abort", V), () => B.removeListener("abort", V));
}
const Z = !!String.prototype.toWellFormed;
function nA(B) {
return Z ? `${B}`.toWellFormed() : n.toUSVString ? n.toUSVString(B) : `${B}`;
}
function gA(B) {
if (B == null || B === "") return { start: 0, end: null, size: null };
const V = B ? B.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null;
return V ? {
start: parseInt(V[1]),
end: V[2] ? parseInt(V[2]) : null,
size: V[3] ? parseInt(V[3]) : null
} : null;
}
const rA = /* @__PURE__ */ Object.create(null);
return rA.enumerable = !0, GQ = {
kEnumerableProperty: rA,
nop: y,
isDisturbed: wA,
isErrored: RA,
isReadable: lA,
toUSVString: nA,
isReadableAborted: m,
isBlobLike: C,
parseOrigin: F,
parseURL: c,
getServerName: J,
isStream: l,
isIterable: L,
isAsyncIterable: k,
isDestroyed: b,
headerNameToString: T,
parseRawHeaders: tA,
parseHeaders: iA,
parseKeepAliveTimeout: H,
destroy: W,
bodyLength: R,
deepClone: t,
ReadableStreamFrom: sA,
isBuffer: AA,
validateHandler: K,
getSocketInfo: uA,
isFormDataLike: q,
buildURL: a,
throwIfAborted: X,
addAbortListener: O,
parseRangeHeader: gA,
nodeMajor: h,
nodeMinor: w,
nodeHasAutoSelectFamily: h > 18 || h === 18 && w >= 13,
safeHTTPMethods: ["GET", "HEAD", "OPTIONS", "TRACE"]
}, GQ;
}
var bQ, TE;
function oB() {
if (TE) return bQ;
TE = 1;
let Q = Date.now(), N;
const o = [];
function e() {
Q = Date.now();
let i = o.length, f = 0;
for (; f < i; ) {
const n = o[f];
n.state === 0 ? n.state = Q + n.delay : n.state > 0 && Q >= n.state && (n.state = -1, n.callback(n.opaque)), n.state === -1 ? (n.state = -2, f !== i - 1 ? o[f] = o.pop() : o.pop(), i -= 1) : f += 1;
}
o.length > 0 && A();
}
function A() {
N && N.refresh ? N.refresh() : (clearTimeout(N), N = setTimeout(e, 1e3), N.unref && N.unref());
}
class E {
constructor(f, n, u) {
this.callback = f, this.delay = n, this.opaque = u, this.state = -2, this.refresh();
}
refresh() {
this.state === -2 && (o.push(this), (!N || o.length === 1) && A()), this.state = 0;
}
clear() {
this.state = -1;
}
}
return bQ = {
setTimeout(i, f, n) {
return f < 1e3 ? setTimeout(i, f, n) : new E(i, f, n);
},
clearTimeout(i) {
i instanceof E ? i.clear() : clearTimeout(i);
}
}, bQ;
}
var vA = { exports: {} }, pQ, WE;
function Ue() {
if (WE) return pQ;
WE = 1;
const Q = ye.EventEmitter, N = _A.inherits;
function o(e) {
if (typeof e == "string" && (e = Buffer.from(e)), !Buffer.isBuffer(e))
throw new TypeError("The needle has to be a String or a Buffer.");
const A = e.length;
if (A === 0)
throw new Error("The needle cannot be an empty String/Buffer.");
if (A > 256)
throw new Error("The needle cannot have a length bigger than 256.");
this.maxMatches = 1 / 0, this.matches = 0, this._occ = new Array(256).fill(A), this._lookbehind_size = 0, this._needle = e, this._bufpos = 0, this._lookbehind = Buffer.alloc(A);
for (var E = 0; E < A - 1; ++E)
this._occ[e[E]] = A - 1 - E;
}
return N(o, Q), o.prototype.reset = function() {
this._lookbehind_size = 0, this.matches = 0, this._bufpos = 0;
}, o.prototype.push = function(e, A) {
Buffer.isBuffer(e) || (e = Buffer.from(e, "binary"));
const E = e.length;
this._bufpos = A || 0;
let i;
for (; i !== E && this.matches < this.maxMatches; )
i = this._sbmh_feed(e);
return i;
}, o.prototype._sbmh_feed = function(e) {
const A = e.length, E = this._needle, i = E.length, f = E[i - 1];
let n = -this._lookbehind_size, u;
if (n < 0) {
for (; n < 0 && n <= A - i; ) {
if (u = this._sbmh_lookup_char(e, n + i - 1), u === f && this._sbmh_memcmp(e, n, i - 1))
return this._lookbehind_size = 0, ++this.matches, this.emit("info", !0), this._bufpos = n + i;
n += this._occ[u];
}
if (n < 0)
for (; n < 0 && !this._sbmh_memcmp(e, n, A - n); )
++n;
if (n >= 0)
this.emit("info", !1, this._lookbehind, 0, this._lookbehind_size), this._lookbehind_size = 0;
else {
const I = this._lookbehind_size + n;
return I > 0 && this.emit("info", !1, this._lookbehind, 0, I), this._lookbehind.copy(
this._lookbehind,
0,
I,
this._lookbehind_size - I
), this._lookbehind_size -= I, e.copy(this._lookbehind, this._lookbehind_size), this._lookbehind_size += A, this._bufpos = A, A;
}
}
if (n += (n >= 0) * this._bufpos, e.indexOf(E, n) !== -1)
return n = e.indexOf(E, n), ++this.matches, n > 0 ? this.emit("info", !0, e, this._bufpos, n) : this.emit("info", !0), this._bufpos = n + i;
for (n = A - i; n < A && (e[n] !== E[0] || Buffer.compare(
e.subarray(n, n + A - n),
E.subarray(0, A - n)
) !== 0); )
++n;
return n < A && (e.copy(this._lookbehind, 0, n, n + (A - n)), this._lookbehind_size = A - n), n > 0 && this.emit("info", !1, e, this._bufpos, n < A ? n : A), this._bufpos = A, A;
}, o.prototype._sbmh_lookup_char = function(e, A) {
return A < 0 ? this._lookbehind[this._lookbehind_size + A] : e[A];
}, o.prototype._sbmh_memcmp = function(e, A, E) {
for (var i = 0; i < E; ++i)
if (this._sbmh_lookup_char(e, A + i) !== this._needle[i])
return !1;
return !0;
}, pQ = o, pQ;
}
var mQ, qE;
function nB() {
if (qE) return mQ;
qE = 1;
const Q = _A.inherits, N = DQ.Readable;
function o(e) {
N.call(this, e);
}
return Q(o, N), o.prototype._read = function(e) {
}, mQ = o, mQ;
}
var VQ, PE;
function cE() {
return PE || (PE = 1, VQ = function(N, o, e) {
if (!N || N[o] === void 0 || N[o] === null)
return e;
if (typeof N[o] != "number" || isNaN(N[o]))
throw new TypeError("Limit " + o + " is not a valid number");
return N[o];
}), VQ;
}
var HQ, ZE;
function hB() {
if (ZE) return HQ;
ZE = 1;
const Q = ye.EventEmitter, N = _A.inherits, o = cE(), e = Ue(), A = Buffer.from(`\r
\r
`), E = /\r\n/g, i = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/;
function f(n) {
Q.call(this), n = n || {};
const u = this;
this.nread = 0, this.maxed = !1, this.npairs = 0, this.maxHeaderPairs = o(n, "maxHeaderPairs", 2e3), this.maxHeaderSize = o(n, "maxHeaderSize", 80 * 1024), this.buffer = "", this.header = {}, this.finished = !1, this.ss = new e(A), this.ss.on("info", function(I, h, w, y) {
h && !u.maxed && (u.nread + y - w >= u.maxHeaderSize ? (y = u.maxHeaderSize - u.nread + w, u.nread = u.maxHeaderSize, u.maxed = !0) : u.nread += y - w, u.buffer += h.toString("binary", w, y)), I && u._finish();
});
}
return N(f, Q), f.prototype.push = function(n) {
const u = this.ss.push(n);
if (this.finished)
return u;
}, f.prototype.reset = function() {
this.finished = !1, this.buffer = "", this.header = {}, this.ss.reset();
}, f.prototype._finish = function() {
this.buffer && this._parseHeader(), this.ss.matches = this.ss.maxMatches;
const n = this.header;
this.header = {}, this.buffer = "", this.finished = !0, this.nread = this.npairs = 0, this.maxed = !1, this.emit("header", n);
}, f.prototype._parseHeader = function() {
if (this.npairs === this.maxHeaderPairs)
return;
const n = this.buffer.split(E), u = n.length;
let I, h;
for (var w = 0; w < u; ++w) {
if (n[w].length === 0)
continue;
if ((n[w][0] === " " || n[w][0] === " ") && h) {
this.header[h][this.header[h].length - 1] += n[w];
continue;
}
const y = n[w].indexOf(":");
if (y === -1 || y === 0)
return;
if (I = i.exec(n[w]), h = I[1].toLowerCase(), this.header[h] = this.header[h] || [], this.header[h].push(I[2] || ""), ++this.npairs === this.maxHeaderPairs)
break;
}
}, HQ = f, HQ;
}
var xQ, XE;
function Se() {
if (XE) return xQ;
XE = 1;
const Q = DQ.Writable, N = _A.inherits, o = Ue(), e = nB(), A = hB(), E = 45, i = Buffer.from("-"), f = Buffer.from(`\r
`), n = function() {
};
function u(I) {
if (!(this instanceof u))
return new u(I);
if (Q.call(this, I), !I || !I.headerFirst && typeof I.boundary != "string")
throw new TypeError("Boundary required");
typeof I.boundary == "string" ? this.setBoundary(I.boundary) : this._bparser = void 0, this._headerFirst = I.headerFirst, this._dashes = 0, this._parts = 0, this._finished = !1, this._realFinish = !1, this._isPreamble = !0, this._justMatched = !1, this._firstWrite = !0, this._inHeader = !0, this._part = void 0, this._cb = void 0, this._ignoreData = !1, this._partOpts = { highWaterMark: I.partHwm }, this._pause = !1;
const h = this;
this._hparser = new A(I), this._hparser.on("header", function(w) {
h._inHeader = !1, h._part.emit("header", w);
});
}
return N(u, Q), u.prototype.emit = function(I) {
if (I === "finish" && !this._realFinish) {
if (!this._finished) {
const h = this;
process.nextTick(function() {
if (h.emit("error", new Error("Unexpected end of multipart data")), h._part && !h._ignoreData) {
const w = h._isPreamble ? "Preamble" : "Part";
h._part.emit("error", new Error(w + " terminated early due to unexpected end of multipart data")), h._part.push(null), process.nextTick(function() {
h._realFinish = !0, h.emit("finish"), h._realFinish = !1;
});
return;
}
h._realFinish = !0, h.emit("finish"), h._realFinish = !1;
});
}
} else
Q.prototype.emit.apply(this, arguments);
}, u.prototype._write = function(I, h, w) {
if (!this._hparser && !this._bparser)
return w();
if (this._headerFirst && this._isPreamble) {
this._part || (this._part = new e(this._partOpts), this.listenerCount("preamble") !== 0 ? this.emit("preamble", this._part) : this._ignore());
const y = this._hparser.push(I);
if (!this._inHeader && y !== void 0 && y < I.length)
I = I.slice(y);
else
return w();
}
this._firstWrite && (this._bparser.push(f), this._firstWrite = !1), this._bparser.push(I), this._pause ? this._cb = w : w();
}, u.prototype.reset = function() {
this._part = void 0, this._bparser = void 0, this._hparser = void 0;
}, u.prototype.setBoundary = function(I) {
const h = this;
this._bparser = new o(`\r
--` + I), this._bparser.on("info", function(w, y, l, C) {
h._oninfo(w, y, l, C);
});
}, u.prototype._ignore = function() {
this._part && !this._ignoreData && (this._ignoreData = !0, this._part.on("error", n), this._part.resume());
}, u.prototype._oninfo = function(I, h, w, y) {
let l;
const C = this;
let a = 0, c, F = !0;
if (!this._part && this._justMatched && h) {
for (; this._dashes < 2 && w + a < y; )
if (h[w + a] === E)
++a, ++this._dashes;
else {
this._dashes && (l = i), this._dashes = 0;
break;
}
if (this._dashes === 2 && (w + a < y && this.listenerCount("trailer") !== 0 && this.emit("trailer", h.slice(w + a, y)), this.reset(), this._finished = !0, C._parts === 0 && (C._realFinish = !0, C.emit("finish"), C._realFinish = !1)), this._dashes)
return;
}
this._justMatched && (this._justMatched = !1), this._part || (this._part = new e(this._partOpts), this._part._read = function(S) {
C._unpause();
}, this._isPreamble && this.listenerCount("preamble") !== 0 ? this.emit("preamble", this._part) : this._isPreamble !== !0 && this.listenerCount("part") !== 0 ? this.emit("part", this._part) : this._ignore(), this._isPreamble || (this._inHeader = !0)), h && w < y && !this._ignoreData && (this._isPreamble || !this._inHeader ? (l && (F = this._part.push(l)), F = this._part.push(h.slice(w, y)), F || (this._pause = !0)) : !this._isPreamble && this._inHeader && (l && this._hparser.push(l), c = this._hparser.push(h.slice(w, y)), !this._inHeader && c !== void 0 && c < y && this._oninfo(!1, h, w + c, y))), I && (this._hparser.reset(), this._isPreamble ? this._isPreamble = !1 : w !== y && (++this._parts, this._part.on("end", function() {
--C._parts === 0 && (C._finished ? (C._realFinish = !0, C.emit("finish"), C._realFinish = !1) : C._unpause());
})), this._part.push(null), this._part = void 0, this._ignoreData = !1, this._justMatched = !0, this._dashes = 0);
}, u.prototype._unpause = function() {
if (this._pause && (this._pause = !1, this._cb)) {
const I = this._cb;
this._cb = void 0, I();
}
}, xQ = u, xQ;
}
var TQ, OE;
function DE() {
if (OE) return TQ;
OE = 1;
const Q = new TextDecoder("utf-8"), N = /* @__PURE__ */ new Map([
["utf-8", Q],
["utf8", Q]
]);
function o(E) {
let i;
for (; ; )
switch (E) {
case "utf-8":
case "utf8":
return e.utf8;
case "latin1":
case "ascii":
// TODO: Make these a separate, strict decoder?
case "us-ascii":
case "iso-8859-1":
case "iso8859-1":
case "iso88591":
case "iso_8859-1":
case "windows-1252":
case "iso_8859-1:1987":
case "cp1252":
case "x-cp1252":
return e.latin1;
case "utf16le":
case "utf-16le":
case "ucs2":
case "ucs-2":
return e.utf16le;
case "base64":
return e.base64;
default:
if (i === void 0) {
i = !0, E = E.toLowerCase();
continue;
}
return e.other.bind(E);
}
}
const e = {
utf8: (E, i) => E.length === 0 ? "" : (typeof E == "string" && (E = Buffer.from(E, i)), E.utf8Slice(0, E.length)),
latin1: (E, i) => E.length === 0 ? "" : typeof E == "string" ? E : E.latin1Slice(0, E.length),
utf16le: (E, i) => E.length === 0 ? "" : (typeof E == "string" && (E = Buffer.from(E, i)), E.ucs2Slice(0, E.length)),
base64: (E, i) => E.length === 0 ? "" : (typeof E == "string" && (E = Buffer.from(E, i)), E.base64Slice(0, E.length)),
other: (E, i) => {
if (E.length === 0)
return "";
if (typeof E == "string" && (E = Buffer.from(E, i)), N.has(this.toString()))
try {
return N.get(this).decode(E);
} catch {
}
return typeof E == "string" ? E : E.toString();
}
};
function A(E, i, f) {
return E && o(f)(E, i);
}
return TQ = A, TQ;
}
var WQ, KE;
function Ye() {
if (KE) return WQ;
KE = 1;
const Q = DE(), N = /%[a-fA-F0-9][a-fA-F0-9]/g, o = {
"%00": "\0",
"%01": "",
"%02": "",
"%03": "",
"%04": "",
"%05": "",
"%06": "",
"%07": "\x07",
"%08": "\b",
"%09": " ",
"%0a": `
`,
"%0A": `
`,
"%0b": "\v",
"%0B": "\v",
"%0c": "\f",
"%0C": "\f",
"%0d": "\r",
"%0D": "\r",
"%0e": "",
"%0E": "",
"%0f": "",
"%0F": "",
"%10": "",
"%11": "",
"%12": "",
"%13": "",
"%14": "",
"%15": "",
"%16": "",
"%17": "",
"%18": "",
"%19": "",
"%1a": "",
"%1A": "",
"%1b": "\x1B",
"%1B": "\x1B",
"%1c": "",
"%1C": "",
"%1d": "",
"%1D": "",
"%1e": "",
"%1E": "",
"%1f": "",
"%1F": "",
"%20": " ",
"%21": "!",
"%22": '"',
"%23": "#",
"%24": "$",
"%25": "%",
"%26": "&",
"%27": "'",
"%28": "(",
"%29": ")",
"%2a": "*",
"%2A": "*",
"%2b": "+",
"%2B": "+",
"%2c": ",",
"%2C": ",",
"%2d": "-",
"%2D": "-",
"%2e": ".",
"%2E": ".",
"%2f": "/",
"%2F": "/",
"%30": "0",
"%31": "1",
"%32": "2",
"%33": "3",
"%34": "4",
"%35": "5",
"%36": "6",
"%37": "7",
"%38": "8",
"%39": "9",
"%3a": ":",
"%3A": ":",
"%3b": ";",
"%3B": ";",
"%3c": "<",
"%3C": "<",
"%3d": "=",
"%3D": "=",
"%3e": ">",
"%3E": ">",
"%3f": "?",
"%3F": "?",
"%40": "@",
"%41": "A",
"%42": "B",
"%43": "C",
"%44": "D",
"%45": "E",
"%46": "F",
"%47": "G",
"%48": "H",
"%49": "I",
"%4a": "J",
"%4A": "J",
"%4b": "K",
"%4B": "K",
"%4c": "L",
"%4C": "L",
"%4d": "M",
"%4D": "M",
"%4e": "N",
"%4E": "N",
"%4f": "O",
"%4F": "O",
"%50": "P",
"%51": "Q",
"%52": "R",
"%53": "S",
"%54": "T",
"%55": "U",
"%56": "V",
"%57": "W",
"%58": "X",
"%59": "Y",
"%5a": "Z",
"%5A": "Z",
"%5b": "[",
"%5B": "[",
"%5c": "\\",
"%5C": "\\",
"%5d": "]",
"%5D": "]",
"%5e": "^",
"%5E": "^",
"%5f": "_",
"%5F": "_",
"%60": "`",
"%61": "a",
"%62": "b",
"%63": "c",
"%64": "d",
"%65": "e",
"%66": "f",
"%67": "g",
"%68": "h",
"%69": "i",
"%6a": "j",
"%6A": "j",
"%6b": "k",
"%6B": "k",
"%6c": "l",
"%6C": "l",
"%6d": "m",
"%6D": "m",
"%6e": "n",
"%6E": "n",
"%6f": "o",
"%6F": "o",
"%70": "p",
"%71": "q",
"%72": "r",
"%73": "s",
"%74": "t",
"%75": "u",
"%76": "v",
"%77": "w",
"%78": "x",
"%79": "y",
"%7a": "z",
"%7A": "z",
"%7b": "{",
"%7B": "{",
"%7c": "|",
"%7C": "|",
"%7d": "}",
"%7D": "}",
"%7e": "~",
"%7E": "~",
"%7f": "",
"%7F": "",
"%80": "",
"%81": "",
"%82": "",
"%83": "",
"%84": "",
"%85": "
",
"%86": "",
"%87": "",
"%88": "",
"%89": "",
"%8a": "",
"%8A": "",
"%8b": "",
"%8B": "",
"%8c": "",
"%8C": "",
"%8d": "",
"%8D": "",
"%8e": "",
"%8E": "",
"%8f": "",
"%8F": "",
"%90": "",
"%91": "",
"%92": "",
"%93": "",
"%94": "",
"%95": "",
"%96": "",
"%97": "",
"%98": "",
"%99": "",
"%9a": "",
"%9A": "",
"%9b": "",
"%9B": "",
"%9c": "",
"%9C": "",
"%9d": "",
"%9D": "",
"%9e": "",
"%9E": "",
"%9f": "",
"%9F": "",
"%a0": " ",
"%A0": " ",
"%a1": "¡",
"%A1": "¡",
"%a2": "¢",
"%A2": "¢",
"%a3": "£",
"%A3": "£",
"%a4": "¤",
"%A4": "¤",
"%a5": "¥",
"%A5": "¥",
"%a6": "¦",
"%A6": "¦",
"%a7": "§",
"%A7": "§",
"%a8": "¨",
"%A8": "¨",
"%a9": "©",
"%A9": "©",
"%aa": "ª",
"%Aa": "ª",
"%aA": "ª",
"%AA": "ª",
"%ab": "«",
"%Ab": "«",
"%aB": "«",
"%AB": "«",
"%ac": "¬",
"%Ac": "¬",
"%aC": "¬",
"%AC": "¬",
"%ad": "",
"%Ad": "",
"%aD": "",
"%AD": "",
"%ae": "®",
"%Ae": "®",
"%aE": "®",
"%AE": "®",
"%af": "¯",
"%Af": "¯",
"%aF": "¯",
"%AF": "¯",
"%b0": "°",
"%B0": "°",
"%b1": "±",
"%B1": "±",
"%b2": "²",
"%B2": "²",
"%b3": "³",
"%B3": "³",
"%b4": "´",
"%B4": "´",
"%b5": "µ",
"%B5": "µ",
"%b6": "¶",
"%B6": "¶",
"%b7": "·",
"%B7": "·",
"%b8": "¸",
"%B8": "¸",
"%b9": "¹",
"%B9": "¹",
"%ba": "º",
"%Ba": "º",
"%bA": "º",
"%BA": "º",
"%bb": "»",
"%Bb": "»",
"%bB": "»",
"%BB": "»",
"%bc": "¼",
"%Bc": "¼",
"%bC": "¼",
"%BC": "¼",
"%bd": "½",
"%Bd": "½",
"%bD": "½",
"%BD": "½",
"%be": "¾",
"%Be": "¾",
"%bE": "¾",
"%BE": "¾",
"%bf": "¿",
"%Bf": "¿",
"%bF": "¿",
"%BF": "¿",
"%c0": "À",
"%C0": "À",
"%c1": "Á",
"%C1": "Á",
"%c2": "Â",
"%C2": "Â",
"%c3": "Ã",
"%C3": "Ã",
"%c4": "Ä",
"%C4": "Ä",
"%c5": "Å",
"%C5": "Å",
"%c6": "Æ",
"%C6": "Æ",
"%c7": "Ç",
"%C7": "Ç",
"%c8": "È",
"%C8": "È",
"%c9": "É",
"%C9": "É",
"%ca": "Ê",
"%Ca": "Ê",
"%cA": "Ê",
"%CA": "Ê",
"%cb": "Ë",
"%Cb": "Ë",
"%cB": "Ë",
"%CB": "Ë",
"%cc": "Ì",
"%Cc": "Ì",
"%cC": "Ì",
"%CC": "Ì",
"%cd": "Í",
"%Cd": "Í",
"%cD": "Í",
"%CD": "Í",
"%ce": "Î",
"%Ce": "Î",
"%cE": "Î",
"%CE": "Î",
"%cf": "Ï",
"%Cf": "Ï",
"%cF": "Ï",
"%CF": "Ï",
"%d0": "Ð",
"%D0": "Ð",
"%d1": "Ñ",
"%D1": "Ñ",
"%d2": "Ò",
"%D2": "Ò",
"%d3": "Ó",
"%D3": "Ó",
"%d4": "Ô",
"%D4": "Ô",
"%d5": "Õ",
"%D5": "Õ",
"%d6": "Ö",
"%D6": "Ö",
"%d7": "×",
"%D7": "×",
"%d8": "Ø",
"%D8": "Ø",
"%d9": "Ù",
"%D9": "Ù",
"%da": "Ú",
"%Da": "Ú",
"%dA": "Ú",
"%DA": "Ú",
"%db": "Û",
"%Db": "Û",
"%dB": "Û",
"%DB": "Û",
"%dc": "Ü",
"%Dc": "Ü",
"%dC": "Ü",
"%DC": "Ü",
"%dd": "Ý",
"%Dd": "Ý",
"%dD": "Ý",
"%DD": "Ý",
"%de": "Þ",
"%De": "Þ",
"%dE": "Þ",
"%DE": "Þ",
"%df": "ß",
"%Df": "ß",
"%dF": "ß",
"%DF": "ß",
"%e0": "à",
"%E0": "à",
"%e1": "á",
"%E1": "á",
"%e2": "â",
"%E2": "â",
"%e3": "ã",
"%E3": "ã",
"%e4": "ä",
"%E4": "ä",
"%e5": "å",
"%E5": "å",
"%e6": "æ",
"%E6": "æ",
"%e7": "ç",
"%E7": "ç",
"%e8": "è",
"%E8": "è",
"%e9": "é",
"%E9": "é",
"%ea": "ê",
"%Ea": "ê",
"%eA": "ê",
"%EA": "ê",
"%eb": "ë",
"%Eb": "ë",
"%eB": "ë",
"%EB": "ë",
"%ec": "ì",
"%Ec": "ì",
"%eC": "ì",
"%EC": "ì",
"%ed": "í",
"%Ed": "í",
"%eD": "í",
"%ED": "í",
"%ee": "î",
"%Ee": "î",
"%eE": "î",
"%EE": "î",
"%ef": "ï",
"%Ef": "ï",
"%eF": "ï",
"%EF": "ï",
"%f0": "ð",
"%F0": "ð",
"%f1": "ñ",
"%F1": "ñ",
"%f2": "ò",
"%F2": "ò",
"%f3": "ó",